MS-Access和VB.NET插入工作的一半时间

时间:2012-07-18 04:41:11

标签: vb.net ms-access

这不是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多列,我不想手动为我的数据库中的所有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日突然我在Insert语句上得到一个错误。

我的ColumnName是“大小”,我试图将其更改为“MSize”,但仍然出现错误,值为“中”。

为什么在使用字符串的列名“UserName”也会失败时,这个会失败?

我检查我的数据库是否确定,并且字段大小(现在为MSize)设置为Text,没有默认值,它可以为null,并且最大长度为255。在DB中的任何字段都没有格式或验证或正则表达式...

任何人都有任何关于我应该如何进行修复的提示?

**编辑

继承人构建了我使用过的SQL(例如)

 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

并且在你问之前;)属性是存储在dictionnary中的DB列名,它们的值在运行时填充,当我构建一个对象的新实例时,它运行良好,并且插入之前的字符串(即使太长了)当我检查它时看起来很好。

** * ** 编辑 ** * **

我添加了Remou建议的括号,现在我没有得到同样的错误...如果我使用第一个插入(完全构造的那个)我得到这个错误:

(语法错误(缺席运算符)在以下表达式中:....一些字符串值....

如果我使用编辑器,我没有任何错误(但它的长...大约需要2分钟,而且只有2k中的125项)

2 个答案:

答案 0 :(得分:2)

大小肯定是一个保留字*,应该括在[size]。在创建你不知道字段名称(列)的代码时,我认为假设你需要括号总是更安全。

* JetACE

中的保留字词

答案 1 :(得分:0)

上帝,问题出现在预先制作的数据库中,theres是列名中的错误(organisatoin而不是组织)......

不能相信我花了一个多星期才发现......