0

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

   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 显示到文本框中,它会很好地显示 ID,如果我在 sql 中输入一个数字来代替它,它就可以工作。如果我取出用户 ID,sql 也可以工作,但是使用它我得到一个错误“输入字符串的格式不正确。” 此外,所有内容都被添加到数据库中两次,知道为什么会这样吗?

4

3 回答 3

1

在单独的变量中创建 SQL 插入字符串。然后您可以在监视窗口中查看它,看看发生了什么。

就像是...

Dim SQl as String = 'INSERT INTO tblAud (TN, FN, tID, OldValue, UserID) VALUES ('" + tN + "', '" + fn + "'," + tID + ", '"+ oldValue + "'," + uid + ")"'
于 2012-04-20T01:37:36.313 回答
0

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

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

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

于 2012-04-20T01:37:45.420 回答
0

通过将 id 添加到文本框然后在 sql 语句上使用 Textbox.text 使其工作。

于 2012-04-22T00:43:58.927 回答