使用通用字典将值插入表中

nav*_*een 4 c# architecture asp.net data-access data-structures

编码平台:ASP.NET 2.0 WebForms,带有C#,MySQL作为后端

背景

我目前正在修复修复网站的错误.
其中一个表"注册"有80列.

插入/更新是通过简单的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));
Run Code Online (Sandbox Code Playgroud)

我的想法是做一个像这样的简单插入查询

INSERT INTO registrations("all keys as comma separated string") VALUES ("all keys as comma separated string") 
Run Code Online (Sandbox Code Playgroud)

我的问题是

  1. Dictionary是实现此目的的最佳数据结构吗?
  2. 通用字典对键进行排序是否会更改查询中的键值索引?
  3. 将所有键提取到数组中的最佳方法以及将相应值提取到另一个匹配数组的方法.

还有,其他更好的方法是什么?

PS:我正在维护代码并使实体类将列映射到属性并且存储值不是一个选项.

Mar*_*ade 11

 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));
Run Code Online (Sandbox Code Playgroud)