这不是 asp,只是我正在尝试制作的常规本地数据库程序。
我有这个编辑子:
Protected Sub update()
Dim sqlString As String
Dim pair_0f_attribute As ArrayList = buildSqlUpdate()
sqlString = "UPDATE " & getSharedTableName() & " SET "
sqlString = sqlString & String.Join(", ", pair_0f_attribute.ToArray)
sqlString = sqlString & " WHERE UID = " & id
cmd = New OleDbCommand(sqlString, conn)
cmd.CommandType = CommandType.Text
ExecuteNonQuery(cmd)
End Sub
这给了我在 INSERT 命令上的错误。我已经分解了这个巨大的插入(我有 70+ 列,我不想为我的 db 上的所有 2000+ 行手动执行它)一次只获得 1 个值并检查它失败的位置。
Public Sub editrow(ByVal ID As Integer, ByVal ColumnName As String, ByVal value As Object)
Dim SqlString As String = "Update " & getSharedTableName() & " Set " & ColumnName & " = ? Where UID = " & ID
Dim cmd As New OleDbCommand(SqlString, conn)
cmd.CommandType = CommandType.Text
cmd.Parameters.AddWithValue(ColumnName, value)
ExecuteNonQuery(cmd)
End Sub
这适用于用户名,它是一个字符串,级别是一个整数,xp 是一个整数等......对于几个插入,它很好,而不是突然在 8 日我在插入语句上得到一个错误。
我的 ColumnName 是“Size”,我尝试将其更改为“MSize”,但仍然出现错误,值为“Medium”。
当 columnname "UserName" 也使用字符串 wokrs 时,为什么这个会失败?
我已经检查了我的数据库,并且字段 Size(现在是 MSize)设置为 Text,没有默认值,它可以为 null,并且最大长度为 255。数据库中的任何字段都没有使用格式或验证或正则表达式...
有人对我应该如何进行修复有任何提示吗?
** 编辑
我使用的 buildSqlUpdate() 继承人:
Private Function buildSqlUpdate() As ArrayList
Dim pair_arraryList As New ArrayList
For Each element As KeyValuePair(Of String, Object) In attributes
pair_arraryList.Add("[" & element.Key & "] = '" & element.Value & "'")
Next
Return pair_arraryList
End Function
在你问之前;)属性是存储在字典中的数据库列名,当我构建一个对象的新实例时,它们的值在运行时填充,它工作得很好,我插入之前的字符串(即使太长了) 当我检查它时,它看起来很好。
** * **编辑** * **
我按照 Remou 的建议添加了括号,现在我没有得到同样的错误......如果我使用第一个插入(完全构造的插入)我得到这个错误:
(以下表达式中的语法错误(缺少运算符): .... 一些字符串值 ....
如果我使用编辑行,我没有任何错误(但它很长……花了大约 2 分钟,并且只增加了 2k 中的 125 项)