在我的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"
) 括起来的列名没有帮助。