私のSqlClient
クラスでは、Insert
この方法でメソッドを実装しました。Dictionary
ペア (列名、値) をInsert
メソッドに渡す必要があり、メソッドはパラメーター化されたクエリを構築してコマンドを実行します。
public void Insert(string table, Dictionary<string, object> values)
{
// build INSERT query
string query = "INSERT INTO " + table + " (";
foreach (KeyValuePair<string, object> pair in values)
query += pair.Key + ",";
query = query.Substring(0, query.Length - 1) + ")";
query += "VALUES (";
foreach (KeyValuePair<string, object> pair in values)
query += "@" + pair.Key + ",";
query = query.Substring(0, query.Length - 1) + ")";
// create command from query
using (SqlCommand command = new SqlCommand(query, connect))
{
foreach (KeyValuePair<string, object> pair in values)
command.Parameters.Add(pair.Key, pair.Value);
// execute command
command.ExecuteNonQuery();
}
}
しかし、値リストに名前が数字で始まる列がある間は機能しないことがわかりました1column
。(これはひどい変数名であることはわかっています。データベースの所有者に伝えてください)。それを機能させる方法を教えてもらえますか?また、私のクエリ作成方法が理想的ではないことは間違いないので、コメントをいただければ幸いです。
編集:
- 列名を二重引用符 (
"1column"
) で囲んでも役に立ちません。