C#Webアプリケーションを使用してAccessデータベースを更新しようとしていますが、現在レコードを更新せずエラーを返さないWHEREステートメントの問題に直面しています。C#OleDB更新ステートメントが更新されない
私はテキストフィールドを更新しようとしています。WHERE文の条件は整数です。
OleDbCommand cmd = new OleDbCommand("UPDATE Data SET Title = @Title WHERE ID = @ID");
cmd.CommandType = CommandType.Text;
cmd.Connection = conn;
cmd.Parameters.AddWithValue("@Title", TextBox1.Text);
cmd.Parameters.AddWithValue("@ID", param2);
私もそれを
OleDbCommand cmd = new OleDbCommand("UPDATE Data SET Title = ? WHERE ID = ?");
cmd.CommandType = CommandType.Text;
cmd.Connection = conn;
cmd.Parameters.AddWithValue("?", TextBox1.Text);
cmd.Parameters.AddWithValue("?", param2);
をこの方法をやってみましたが、それはまだ更新していません!
これを修正しようとしたところ、最初のパラメータを単一引用符で囲んだ文字列(以下を参照)に置き換えると、実際にはテーブルが更新されます。
OleDbCommand cmd = new OleDbCommand("UPDATE Data SET Title = 'test' WHERE ID = @ID");
なぜこのようなことが起こっているのでしょうか?
編集:これは完全なコード
using (OleDbConnection conn = new OleDbConnection(connectionString))
{
OleDbCommand cmd = new OleDbCommand("UPDATE Data SET Title = @Title WHERE ID = @ID");
cmd.CommandType = CommandType.Text;
cmd.Connection = conn;
cmd.Parameters.AddWithValue("@Title", TextBox1.Text);
cmd.Parameters.AddWithValue("@ID", param2);
conn.Open();
try
{
cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
Response.Write(ex.Message);
}
編集である2:
これは私のコードは、データ型を設定しようとした後、それはまだ動作していないです。それは「1」を返しますが、データベースが更新されていない、明確にするために
は、私のAccessデータベースのIDに「オートナンバー型」であると私はrecordsUpdatedの値をチェックするときのタイトルは「長いテキスト」
using (OleDbConnection conn = new OleDbConnection(connectionString))
{
OleDbCommand cmd = new OleDbCommand("UPDATE Data SET Title = ? WHERE ID = ?");
cmd.CommandType = CommandType.Text;
cmd.Connection = conn;
cmd.Parameters.AddWithValue("Title", TextBox1.Text).OleDbType = OleDbType.VarChar;
cmd.Parameters.AddWithValue("ID", param2).OleDbType = OleDbType.Integer;
conn.Open();
try
{
var recordsUpdated = cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
Response.Write(ex.Message);
}
です。
ロールバックされているトランザクションの中にいますか? – yaakov