0

我的更新语句不起作用..当我检查它时对数据库没有影响

这是代码

conn.Open()

    Try
        Dim update As New OleDbCommand
    update.Connection = conn
        update.CommandText = " update O_name set fname = ' " & Name1.Text & " ' where ID = ' " & ID.Text & " ' "
        update.ExecuteNonQuery()
        MsgBox("done")
    Catch ex As Exception
        MsgBox(ex.Message.ToString)
    End Try
    conn.Close()
4

1 回答 1

2
Using connection As New OleDbConnection(connectionString)
Using command As New OleDbCommand("update O_name set fname =? where ID =?", connection)
   command.Parameters.AddWithValue("p1", Name1.Text)
   command.Parameters.AddWithValue("p2",  ID.Text)
   command.Connection.Open()
   command.ExecuteNonQuery()
   MsgBox("done")
End Using 
End Using 

使用参数,但您需要通过 using 指定参数?,因为:

当 CommandType 设置为 Text 时,OLE DB .NET 提供程序不支持将参数传递给 SQL 语句或由 OleDbCommand 调用的存储过程的命名参数。在这种情况下,必须使用问号 (?) 占位符。

更新:

您的参数值分配中有额外的空格,请在下面尝试

update.CommandText = String.Format("UPDATE O_name SET fname ='{0}' WHERE ID ='{1}'",Name1.Text, ID.Text)
于 2013-09-15T10:36:12.060 回答