插入语句上的SQL错误

时间:2012-04-20 01:33:16

标签: sql vb.net ms-access

我正在使用网格视图行更新将已编辑的字段添加到表中以进行监控。除了一个值之外,一切似乎都有效,如下所示。

   For i As Integer = 0 To colnum

        If e.OldValues(i).ToString() <> e.NewValues(i).ToString() Then
            Dim uid As Integer = Convert.ToInt32(strUID)

            Dim UpC As OleDbCommand = New OleDbCommand("INSERT INTO tblAud (TN, FN, tID, OldValue, UserID) VALUES ('" + tN + "', '" + fn + "'," + tID + ", '"+ oldValue + "'," + uid + ")", con)

            UpC.ExecuteNonQuery()

        End If
    Next

如果我将userid显示到文本框,它会显示id很好,如果我在sql中键入一个数字代替它,它就可以了。如果我取出用户标识,sql也可以工作,但是在它上面我得到一个错误“输入字符串格式不正确”。 此外,一切都被添加到数据库两次,任何想法为什么?

3 个答案:

答案 0 :(得分:1)

在单独的变量中创建SQL插入字符串。然后你可以在观察窗口看一下它,看看发生了什么。

像...一样的东西。

Dim SQl as String = 'INSERT INTO tblAud (TN, FN, tID, OldValue, UserID) VALUES ('" + tN + "', '" + fn + "'," + tID + ", '"+ oldValue + "'," + uid + ")"'

答案 1 :(得分:0)

  

输入字符串的格式不正确。

通常与转化相关联。由于您将字符串转换为数字,这是最可能的罪魁祸首。您可以尝试使用Int32.TryParse之类的方法来验证数字,并在无法解析时显示错误消息。请注意,空字符串上的Convert.ToInt32或null也会产生此错误消息。

两次添加到数据库的所有内容可能是因为您实际上并未在INSERT查询中使用e.OldValues(i),而是使用其他一些名为oldValue的变量。没有更多的代码示例很难说,但最好的办法是学习调试工具并观察正在发生的事情。

答案 2 :(得分:0)

通过将id添加到文本框然后在sql语句上使用Textbox.text来实现它。