次のスクリプトを使用して、MS Access データベースの値を更新しようとしています。
生成されたクエリが有効であり、MS Access 内に入力すると機能することを確認しました。
また、oledbcommand.executeNonQuery() が、変更する必要がある正しい行数を返すことも確認しました。
最後に、私が知る限り、エラーは発生していません。
ただし、コードを実行した後にデータベースを確認しても、変更はありません。これがなぜなのかについての洞察はありますか?
oledbcommand を使用して正常に動作するデータベースからデータを取得する他の関数があります。ただし、データベースを変更することはできません。
このスクリプトはインジェクションから保護しないことを認識していますが、それはこの質問の範囲外です。データベースを更新する方法を学ぼうとしているだけです。
void IDatabase.UpdateRecordValue(string table, string updateColumn, string updateValue, string lookUpColumn, string lookUpValue)
{
connection.Open();
OleDbCommand cmdUpdate = new OleDbCommand();
string sqlQuery = "UPDATE [" + table + "] " +
"SET [" + table + "].[" + updateColumn + "] = '" + updateValue + "' " +
"WHERE [" + table + "].[" + lookUpColumn + "] = '" + lookUpValue + "';";
cmdUpdate.CommandText = sqlQuery;
cmdUpdate.CommandType = CommandType.Text;
cmdUpdate.Connection = connection;
cmdUpdate.ExecuteNonQuery();
connection.Close();
}
編集:私の接続文字列は次のとおりです。データベースにパスワードはありません:"Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};"
EDITこれは、私が使用しようとしている実際のクエリの例です
UPDATE [Rooms]
SET [Rooms].[Main Space Category] = '5'
WHERE [Rooms].[Number] = '100';