c# - 使用通用字典将值插入表

标签 c# asp.net architecture data-structures data-access

编码平台: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") 

我的问题是

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

此外,还有哪些其他更好的方法?

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/

相关文章:

c# - 无法识别 System.Web.HttpContext

c# - 以编程方式在 web.config 中注册的代码隐藏中加载用户控件

c# - ASP.NET MVC 实体、DTO、业务对象、ViewModels?我该如何管理?

c# - 来自 System.Windows.Forms 的 AccessViolationException,在 WPF 中使用 WinFormsHost

c# - 将 WPF 组合框与 Postgres 数据库值链接起来

asp.net - 我应该如何在 ASP.NET 中使用 DB4O

winforms - 限界上下文之间的通信

architecture - 使用 Pub/Sub 和长轮询

c# - 在 WPF 应用程序中使用 WinRT 库。

c# - 如何在 C# 中返回一个 int 数组