Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/263.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 我如何解决此例外情况;INSERT into语句中出现Syntext错误;。P_C#_Sql_Sql Insert - Fatal编程技术网

C# 我如何解决此例外情况;INSERT into语句中出现Syntext错误;。P

C# 我如何解决此例外情况;INSERT into语句中出现Syntext错误;。P,c#,sql,sql-insert,C#,Sql,Sql Insert,看起来您的数据库列用于数字数据,并且您插入的值被引用。删除单引号将解决这一问题 您还应该参数化查询,例如: private void save_Click(object sender, EventArgs e) { ACCOUNT.oo.Open(); string QRY = "insert into size(SIZENO,SIZE,COVERAGE,WEIGHT) values('" + size_id.Text + "','" +txt_size.Tex

看起来您的数据库列用于数字数据,并且您插入的值被引用。删除单引号将解决这一问题

您还应该参数化查询,例如:

private void save_Click(object sender, EventArgs e)
{
    ACCOUNT.oo.Open();
    string QRY = "insert into size(SIZENO,SIZE,COVERAGE,WEIGHT) 
        values('" + size_id.Text + "','" +txt_size.Text + "','" +txt_coverage.Text  
        + "','" +txt_weight.Text + "')";
    OleDbCommand ODB = new OleDbCommand(QRY,ACCOUNT.oo);
    ODB.ExecuteNonQuery();
    MessageBox.Show("Inserted Sucessfully..");
    ACCOUNT.oo.Close();
}

如果设置断点,则
QRY
的实际值是多少?还要研究参数化查询。字符串连接是最糟糕的。SIZENO,SIZE,COVERAGE,WEIGHT都是数字吗?删除已添加的单引号,或至少删除数值列的单引号。
OleDbCommand
不支持MS SQL那样的命名参数(例如
@size\u id
)。但是,您可以通过其索引访问参数。因此,SQL片段将是
。。。值(?、、?、?)
;和C#one
…ODB.Parameters.Add(size#id.Text)使用(OleDbCommand ODB=new…{…}{…}将
IDisposable
放入
using
using(OleDbCommand ODB=new…{…}
将SQL打印为单行时不可读。使用
@“…”
字符串格式使您的查询文本多行,并使其更具可压缩性。@DmitryBychenko我已根据您的反馈编辑了答案。这会将参数添加为字符串类型,这就是您所说的原始问题。
AddWithValue
方法将根据所添加的值推断参数的类型。由于您正在添加
TextBox.Text
,因此参数的类型将推断为Text。我倾向于使用带有参数的类型,并将文本值强制转换为正确的类型。e、 g.
ODB.Parameters.Add(“SIZENO”,OleDbType.Integer).Value=int.Parse(size\u id.Text)
private void save_Click(object sender, EventArgs e)
{
    ACCOUNT.oo.Open();
    string QRY = "insert into size(SIZENO,SIZE,COVERAGE,WEIGHT) values(?,?,?,?)";
    using(OleDbCommand ODB = new OleDbCommand(QRY, ACCOUNT.oo))
    {
        // change the OleDbType based on your actual data types
        ODB.Parameters.Add("SIZENO", OleDbType.Integer).Value = int.Parse(size_id.Text);
        ODB.Parameters.Add("SIZE", OleDbType.Integer).Value = int.Parse(txt_size.Text);
        ODB.Parameters.Add("COVERAGE", OleDbType.Integer).Value = int.Parse(txt_coverage.Text);
        ODB.Parameters.Add("WEIGHT", OleDbType.Integer).Value = int.Parse(txt_weight.Text);
        ODB.ExecuteNonQuery();
    }
    MessageBox.Show("Inserted Sucessfully..");
    ACCOUNT.oo.Close();
}