2012-04-20 131 views
0

我正在使用GridView行更新来将编辑的字段添加到表中进行监视。一切似乎都工作,除了一个值,如下所示。插入语句上的SQL错误

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 

如果我显示用户标识到文本框,它显示ID很好,如果我在SQL中代替它输入一个数字,它的工作原理。另外,如果我拿出用户标识符,SQL工作正常,但是对于它,我得到一个错误“输入字符串的格式不正确。” 还一切都被添加到数据库两次,任何想法,为什么这是?

回答

1

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

喜欢的东西...

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

我刚才说完全一样的东西。好建议!恕我直言... – paulsm4 2012-04-20 01:38:26

+0

做到了这一点,但没有任何区别。我不能使用监视窗口或任何调试,关于服务器和数据库位置的东西.. – user1162628 2012-04-21 23:23:19

0

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

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

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

+0

TryParse仍然带来相同的错误。使用Convert.ToInt32并在文本框中显示值显示一个数字,所以我知道它不是空的。至于变量oldValue,我将它创建为来自e.OldValues(i)的字符串,我将编辑我的帖子以添加更多代码。 – user1162628 2012-04-21 23:14:32

0

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