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 

?パラメータを使用しますが、次の理由により、 を使用してパラメータを指定する必要があります。

CommandType が Text に設定されている場合、OLE DB .NET プロバイダーは、OleDbCommand によって呼び出される SQL ステートメントまたはストアド プロシージャにパラメーターを渡すための名前付きパラメーターをサポートしません。この場合、疑問符 (?) プレースホルダーを使用する必要があります。

アップデート:

パラメータ値の割り当てに追加のスペースがあります。以下を試してください

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