插入语句 C# OleDb 中的语法错误
Syntax Error in Insert Into Statement C# OleDb
我正在使用 C# OleDb 创建订单,但在尝试将订单中组合框中的尺寸值放入数据库时遇到了问题。
导致问题的代码如下。
private void btn_Save_Click(object sender, EventArgs e)
{
try
{
connection.Open();
OleDbCommand command = new OleDbCommand();
command.Connection = connection;
command.CommandText = "insert into OrderForm(Size) values ('" + sizeBox.Text + "')";
command.ExecuteNonQuery();
MessageBox.Show("Order Inserted into Database");
connection.Close();
}
catch (Exception ex)
{
MessageBox.Show("Error " + ex);
}
}
这是唯一导致我出现问题的代码,我将它与我注释掉的其他 commandText 代码行进行了比较,以确保语法正确并且对我来说看起来没问题.我还检查以确保在 commandText 代码中列出的字段名称和实际数据库中的字段是正确的。对此问题的任何帮助将不胜感激。干杯
编辑:代码给我的语法错误
SIZE 是保留字。除非将其括在方括号中,否则不能将其用作字段名称,因此您的代码应写为
private void btn_Save_Click(object sender, EventArgs e)
{
try
{
string sqlText = "insert into OrderForm([Size]) values (?)";
using(OleDbConnection connection = new OleDbConnection(.....))
using(OleDbCommand command = new OleDbCommand(sqlText, connection))
{
connection.Open();
command.Parameters.Add("@p1", OleDbType.VarWChar).Value = sizeBox.Text;
int rowsAdded = command.ExecuteNonQuery();
if(rowsAdded > 0)
MessageBox.Show("Order Inserted into Database");
else
MessageBox.Show("No Order added to the Database");
}
}
catch (Exception ex)
{
MessageBox.Show("Error " + ex.Message);
}
}
我对方括号中的 SIZE 进行了一些更改。
First 每次访问数据库时,您都在连接和其他一次性对象周围使用 using 语句。这样可以避免在不需要时发生内存泄漏和昂贵的资源利用。
其次查询参数化,这样就更清楚你在做什么,避免sql注入和正确解析的问题值。
我正在使用 C# OleDb 创建订单,但在尝试将订单中组合框中的尺寸值放入数据库时遇到了问题。 导致问题的代码如下。
private void btn_Save_Click(object sender, EventArgs e)
{
try
{
connection.Open();
OleDbCommand command = new OleDbCommand();
command.Connection = connection;
command.CommandText = "insert into OrderForm(Size) values ('" + sizeBox.Text + "')";
command.ExecuteNonQuery();
MessageBox.Show("Order Inserted into Database");
connection.Close();
}
catch (Exception ex)
{
MessageBox.Show("Error " + ex);
}
}
这是唯一导致我出现问题的代码,我将它与我注释掉的其他 commandText 代码行进行了比较,以确保语法正确并且对我来说看起来没问题.我还检查以确保在 commandText 代码中列出的字段名称和实际数据库中的字段是正确的。对此问题的任何帮助将不胜感激。干杯
编辑:代码给我的语法错误
SIZE 是保留字。除非将其括在方括号中,否则不能将其用作字段名称,因此您的代码应写为
private void btn_Save_Click(object sender, EventArgs e)
{
try
{
string sqlText = "insert into OrderForm([Size]) values (?)";
using(OleDbConnection connection = new OleDbConnection(.....))
using(OleDbCommand command = new OleDbCommand(sqlText, connection))
{
connection.Open();
command.Parameters.Add("@p1", OleDbType.VarWChar).Value = sizeBox.Text;
int rowsAdded = command.ExecuteNonQuery();
if(rowsAdded > 0)
MessageBox.Show("Order Inserted into Database");
else
MessageBox.Show("No Order added to the Database");
}
}
catch (Exception ex)
{
MessageBox.Show("Error " + ex.Message);
}
}
我对方括号中的 SIZE 进行了一些更改。
First 每次访问数据库时,您都在连接和其他一次性对象周围使用 using 语句。这样可以避免在不需要时发生内存泄漏和昂贵的资源利用。
其次查询参数化,这样就更清楚你在做什么,避免sql注入和正确解析的问题值。