多个参数占用C#中的多行

时间:2016-07-06 18:20:22

标签: c# .net winforms

我正在尝试使用visual studio开发一个C#windows窗体应用程序。它连接到微软访问数据库。我有一个将数据保存到数据库的表单。我有需要链接到数据库字段的文本框。我的问题是我有很多文本框名称和文本框的值来编码,所以我需要在多行上进行。我在这个网站上搜索了一下,我看到你可以在第一组双引号前面使用@符号,它包含第一组参数,但我不知道如何处理第二组参数列表价值观它会是这样的:

command.CommandText = @"insert into xxx (xx,xx,xx,xx,xx,xx,xx)

但是到了

values('" + txt_ID.Text + "','" + txt_Nickname.Text + "')"

我收到错误说

  

"换行符#34;

并且它需要";""}"

所以基本上我必须设置我试图在多行上编码的参数。

1 个答案:

答案 0 :(得分:4)

您应该使用参数化查询:

command.CommandText = "INSERT INTO mytable (id, nickname) VALUES (@id, @nickname)";

OleDbParameter[] parameters = new OleDbParameter[2];
parameters[0] = new OleDbParameter("@id", Convert.ToInt32(txt_ID.Text));
parameters[1] = new OleDbParameter("@nickname", txt_Nickname.Text);

command.Parameters.AddRange(parameters);

请注意,参数必须按照它们在查询中显示的顺序添加。 OleDb不使用名称,只使用订单。

这就是为什么你可以使用"?"作为查询中的占位符具有完全相同的结果

command.CommandText = "INSERT INTO mytable (id, nickname) VALUES (?, ?)";