【发布时间】:2018-01-15 22:08:55
【问题描述】:
我有 2 个列表:
List<string> ColumnNames = new List<string>();
List<string> ValueNames = new List<string>();
ColumnNames = names.Keys.ToList();
ValueNames = names.Values.ToList();
我正在尝试将此列表用于 MySql 语句:
...
MySqlCommand command = conDataBase.CreateCommand();
command.CommandText = string.Format("insert into MyTable {0} values (?parameter)", string.Join(",", ColumnNames));
command.Parameters.AddWithValue("parameter", string.Join(",", ValueNames));
...
这里语法错误
...
command.CommandText = "insert into MyTable (" + string.Join(",", ColumnNames) + ") values ('" + string.Join(",", ValueNames) + "')";
...
和
...
command.CommandText = "insert into MyTable (" + string.Join(",", ColumnNames) + ") values (?parameter)";
command.Parameters.AddWithValue("parameter", string.Join(",", ValueNames));
...
在最后 2 个代码中,我遇到错误“列计数与第 1 行的值计数不匹配,但是
ColumnNames.Count = ValueNames.Count
【问题讨论】:
-
您需要自己添加所有参数名称和每个参数映射。请参阅答案stackoverflow.com/a/11905249/7505395 以了解其外观。命令文本中的变量名应以
@为前缀 - 在将带有值的参数添加到查询时使用相同的名称。 -
我也试过了,我也有同样的错误:列数与第 1 行的值数不匹配
-
我认为变量ColumnNames有问题,Values没有问题,并且list.count在不同的gridviews中会有所不同,所以你给我的示例没有回答问题((
标签: c# sql c#-4.0 sqlparameter