求教以下代码的作用
private Command BuildInsertCommand(string userName, MetaData md, FieldValueCollection fields)[/code]
{
StringBuilder sql = new StringBuilder();
sql.AppendFormat("INSERT INTO [{0}]", md.TableName);
List<string> columns = new List<string>();
List<string> param = new List<string>();
foreach (string key in fields.Keys)
{
if (!md.FieldMeteDatas[key].IsAutoIncrement)
{
if (md.FieldMeteDatas[key].ColumnName == "Version")
{
columns.Add("Version");
param.Add("1");
}
else if (md.FieldMeteDatas[key].ColumnName == "AddBy")
{
columns.Add("AddBy");
param.Add(string.Format("'{0}'", userName));
}
else if
。。。。。。。。。。。。。//等等
[code=csharp]
我看得出大概是往数据库插数据的意思,但是不了解。。
数据库 SQL
[解决办法]
这段语句你要是能调试执行的话,你就会发现最终的
sql就是 insert into table (abc,def) values (@abc,@def)这样子的
然后下面是添加sqlParameter
[解决办法]
SQL不是循环拼的,是通过sql.AppendFormat("({0}) VALUES({1})", string.Join(",", columns.ToArray()), string.Join(",", param.ToArray()));
生成一条类似insert into (a,b,c,d) values(@a,@b,@c,@d)这种形式的SQL。
然后通过循环param表,为@a,@b,@c,@d这种类型的参数赋值。