我正在尝试使用Visual Studio开发C#Windows窗体应用程序。它连接到Microsoft Access数据库。我有一个将数据保存到数据库的表单。我有一些文本框,需要链接到数据库字段。我的问题是我有很多文本框名称和值供文本框编码,因此我需要在多行上进行编码。我在此站点上进行了搜索,我发现您可以在第一组双引号前使用@符号,以将第一组参数括起来,但是我不确定如何处理列表中的第二组参数价值。就像这样:

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


但是当它到达

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


我说错了


  “常量换行”


并且期望";""}"

所以基本上我必须设置要在多行代码中编码的参数。

最佳答案

您应该使用参数化查询:

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 (?, ?)";

08-26 18:55
查看更多