我正在使用网格视图行更新将已编辑的字段添加到表中以进行监控。除了一个值之外,一切似乎都有效,如下所示。
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也可以工作,但是在它上面我得到一个错误“输入字符串格式不正确”。 此外,一切都被添加到数据库两次,任何想法为什么?
答案 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来实现它。