使用参数插入 SQL 会导致 "Incorect syntax near the keyword 'values'"
Insert SQL with parameters causes "Incorect syntax near the keyword 'values'"
我想用用户输入的值填充 mssql 中的 table(错误来自 NumericUpDown),我正在使用此代码:
string cs= "Data Source=CODRINMA\CODRINMA;Initial Catalog=BusManager; Trusted_Connection=True;";
string insert = "INSERT INTO TipAutocar ([IDTipAutocar], [Marca], [Model], [Nrlocuri] values ([@TipAutocar], [@Marca], [@Model], [@Nrlocuri]))";
try
{
using (SqlConnection con = new SqlConnection(cs))
{
con.Open();
SqlCommand cmd = new SqlCommand(insert, con);
cmd.Parameters.AddWithValue("@IDTipAutocar", txtID.Text);
cmd.Parameters.AddWithValue("@Marca", txtMarca.Text);
cmd.Parameters.AddWithValue("@Model", txtModel.Text);
cmd.Parameters.AddWithValue("@Nrlocuri", nmrLocuri.Value);
int valoare = cmd.ExecuteNonQuery();
con.Close();
MessageBox.Show(valoare + "Tipul de autocar a fost adaugat cu succes!", "BusManager");
}
}
catch (Exception er) { MessageBox.Show(er.Message); }
但是,当我按下按钮插入时,出现以下错误,我不知道该怎么办:
Incorect syntax near the keyword 'values'.
我在这里 values
之前缺少一个结束圆括号:
string insert = "INSERT INTO TipAutocar ([IDTipAutocar], [Marca], [Model], [Nrlocuri] values ([@IDTipAutocar], [@Marca], [@Model], [@Nrlocuri]))";
您不能在参数周围使用 []
,否则它不是参数,您将得到一个错误 f.e。 "invalid columnname [@TipAutocar]"。
您也将参数命名为 @TipAutocar
,但将其添加为 IDTipAutocar
。
此外,请始终使用正确的类型,如果您使用 AddWithValue
从值推断类型,则更是如此。所以我猜 IDTipAutocar
是一个 int
,然后将它解析为一个:
cmd.Parameters.AddWithValue("@IDTipAutocar", int.Parse(txtID.Text));
顺便说一句,我总是使用逐字字符串文字。这样我就可以根据需要格式化我的 sql 查询,即使是多行。这应该按预期工作:
string insert = @"INSERT INTO TipAutocar
( IDTipAutocar, Marca, Model, Nrlocuri )
VALUES
( @IDTipAutocar, @Marca, @Model, @Nrlocuri)";
看看这个支架;
string insert = "INSERT INTO TipAutocar ([IDTipAutocar], [Marca], [Model], [Nrlocuri] values (@TipAutocar, [@Marca, @Model, @Nrlocuri))";
^^^
您在查询结束时关闭它,您应该在 VALUES
部分之前关闭它。
改为;
string insert = "INSERT INTO TipAutocar ([IDTipAutocar], [Marca], [Model], [Nrlocuri]) values (@TipAutocar, @Marca, @Model, @Nrlocuri)";
^^^ ^^^
您不需要 顺便说一下,您的参数不允许使用方括号。还可以使用 using
语句来处理你的 SqlCommand
。并且由于您将此语句用于 SqlConnection
,因此无需使用 con.Close()
关闭它,因为此语句会自动执行此操作。
您还在命令中将参数名称定义为 @TipAutocar
,但尝试将参数名称添加为不匹配的 @IDTipAutocar
。更改您的参数名称,例如;
cmd.Parameters.AddWithValue("@TipAutocar", txtID.Text);
并且不要再使用 AddWithValue
。 It may generate unexpected results. Use .Add()
method overloads instead to specify your SqlDbType
和参数大小。
我想用用户输入的值填充 mssql 中的 table(错误来自 NumericUpDown),我正在使用此代码:
string cs= "Data Source=CODRINMA\CODRINMA;Initial Catalog=BusManager; Trusted_Connection=True;";
string insert = "INSERT INTO TipAutocar ([IDTipAutocar], [Marca], [Model], [Nrlocuri] values ([@TipAutocar], [@Marca], [@Model], [@Nrlocuri]))";
try
{
using (SqlConnection con = new SqlConnection(cs))
{
con.Open();
SqlCommand cmd = new SqlCommand(insert, con);
cmd.Parameters.AddWithValue("@IDTipAutocar", txtID.Text);
cmd.Parameters.AddWithValue("@Marca", txtMarca.Text);
cmd.Parameters.AddWithValue("@Model", txtModel.Text);
cmd.Parameters.AddWithValue("@Nrlocuri", nmrLocuri.Value);
int valoare = cmd.ExecuteNonQuery();
con.Close();
MessageBox.Show(valoare + "Tipul de autocar a fost adaugat cu succes!", "BusManager");
}
}
catch (Exception er) { MessageBox.Show(er.Message); }
但是,当我按下按钮插入时,出现以下错误,我不知道该怎么办:
Incorect syntax near the keyword 'values'.
我在这里 values
之前缺少一个结束圆括号:
string insert = "INSERT INTO TipAutocar ([IDTipAutocar], [Marca], [Model], [Nrlocuri] values ([@IDTipAutocar], [@Marca], [@Model], [@Nrlocuri]))";
您不能在参数周围使用 []
,否则它不是参数,您将得到一个错误 f.e。 "invalid columnname [@TipAutocar]"。
您也将参数命名为 @TipAutocar
,但将其添加为 IDTipAutocar
。
此外,请始终使用正确的类型,如果您使用 AddWithValue
从值推断类型,则更是如此。所以我猜 IDTipAutocar
是一个 int
,然后将它解析为一个:
cmd.Parameters.AddWithValue("@IDTipAutocar", int.Parse(txtID.Text));
顺便说一句,我总是使用逐字字符串文字。这样我就可以根据需要格式化我的 sql 查询,即使是多行。这应该按预期工作:
string insert = @"INSERT INTO TipAutocar
( IDTipAutocar, Marca, Model, Nrlocuri )
VALUES
( @IDTipAutocar, @Marca, @Model, @Nrlocuri)";
看看这个支架;
string insert = "INSERT INTO TipAutocar ([IDTipAutocar], [Marca], [Model], [Nrlocuri] values (@TipAutocar, [@Marca, @Model, @Nrlocuri))";
^^^
您在查询结束时关闭它,您应该在 VALUES
部分之前关闭它。
改为;
string insert = "INSERT INTO TipAutocar ([IDTipAutocar], [Marca], [Model], [Nrlocuri]) values (@TipAutocar, @Marca, @Model, @Nrlocuri)";
^^^ ^^^
您不需要 顺便说一下,您的参数不允许使用方括号。还可以使用 using
语句来处理你的 SqlCommand
。并且由于您将此语句用于 SqlConnection
,因此无需使用 con.Close()
关闭它,因为此语句会自动执行此操作。
您还在命令中将参数名称定义为 @TipAutocar
,但尝试将参数名称添加为不匹配的 @IDTipAutocar
。更改您的参数名称,例如;
cmd.Parameters.AddWithValue("@TipAutocar", txtID.Text);
并且不要再使用 AddWithValue
。 It may generate unexpected results. Use .Add()
method overloads instead to specify your SqlDbType
和参数大小。