当我调试程序时(插入到语句错误被折磨)并且点亮了vcom.executenonquery();. 我该如何解决这个错误。
STRING VSQL = STRING.FORMAT("INSERT INTO STUDENT VALUES ((0),'(1)','(2)',(3)", INT.PARSE(TEXTBOX1.TEXT), TEXTBOX2.TEXT, TEXTBOX3.TEXT, INT.PARSE(TEXTBOX4.TEXT));
VCOM.EXECUTENONQUERY();
MESSAGEBOX.SHOW("DATA INSERTED");
VCOM.DISPOSE();
答案 0 :(得分:2)
嗯,我会尝试完全回答您的问题,因为您的代码中存在许多错误。
首先,C#是区分大小写的语言。因此,string
和STRING
不一样。 EXECUTENONQUERY
和ExecuteNonQuery
也是如此。
让我们逐行分析你的代码;
你的第一行应该是;
string VSQL = string.Format("INSERT INTO STUDENT VALUES ('{0}','{1}','{2}',{3}",
int.Parse(TEXTBOX1.Text),
TEXTBOX2.Text,
TEXTBOX3.Text,
int.Parse(TEXTBOX4.Text));
而不是那样,您可以随时使用parameterized queries。
例如;
string VSQL = "INSERT INTO STUDENT VALUES (?, ?, ?, ?)";
OleDbCommand cmd = new OleDbCommand(VSQL);
cmd.Parameters.Add("@p1").Value = int.Parse(TEXTBOX1.Text);
cmd.Parameters.Add("@p2").Value = TEXTBOX2.Text;
cmd.Parameters.Add("@p3").Value = TEXTBOX3.Text;
cmd.Parameters.Add("@p4").Value = int.Parse(TEXTBOX4.Text);
您可以/应该始终使用using
statement,而不是手动调用.Dispose()
方法。它将自动处理您的数据库连接和对象。
我假设你使用OleDbCommand
,你的完整代码应该是(如果解析操作和文本框名称是正确的);
using(OleDbConnection con = new OleDbConnection(conString))
using(OleDbCommand VCOM = con.CreateCommand())
{
string VSQL = "INSERT INTO STUDENT VALUES (?, ?, ?, ?)";
VCOM.CommandText = VSQL;
VCOM.Parameters.Add("@p1").Value = int.Parse(TEXTBOX1.Text);
VCOM.Parameters.Add("@p2").Value = TEXTBOX2.Text;
VCOM.Parameters.Add("@p3").Value = TEXTBOX3.Text;
VCOM.Parameters.Add("@p4").Value = int.Parse(TEXTBOX4.Text);
con.Open();
VCOM.ExecuteNonQuery();
MessageBox.Show("DATA INSERTED");
}