编码平台:ASP.NET 2.0 WebForms,C# 和 MySQL 作为后端
背景
我目前正在修复网站的错误。
其中一个表“registrations”有 80 列。
Insert/Update 是通过简单的 sql 语句完成的,没有任何参数化查询。
问题
在注册时,用户可以改变许多参数,从而产生至少 15 种 INSERT 查询。我的问题是如何确保所有字段都以正确的值插入。
所以,我创建了一个
Dictionary<string, string> fields = new Dictionary<string, string>();
fields.Add("LoginEmail", MySQL.SingleQuoteSQL(txtLoginEmail.Text));
fields.Add("Password", MySQL.SingleQuoteSQL(txtLoginPassword.Text));
fields.Add("ContactName", MySQL.SingleQuoteSQL(txtContactName.Text));
fields.Add("City", MySQL.SingleQuoteSQL(txtCity.Text));
我的想法是做一个像这样的简单插入查询
INSERT INTO registrations("all keys as comma separated string") VALUES ("all keys as comma separated string")
我的问题是
- Dictionary 是实现它的最佳数据结构吗?
- 按通用字典对键进行排序是否会更改查询中的键值索引?
- 将所有键提取到一个数组并将相应的值提取到另一个匹配数组的最佳方法。
此外,还有哪些其他更好的方法?
P.S:我正在维护代码并制作一个实体类,将列映射到属性并存储值,这不是一个选项。
最佳答案
string list<T>(IEnumerable<T> enumerable)
{
List<T> list = new List<T>(enumerable);
return string.Join(",", list.ToArray());
}
//...
string sql= String.Format("INSERT INTO registrations({0}) VALUES({1})",
list(fields.Keys),
list(fields.Values));
关于c# - 使用通用字典将值插入表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5695056/