0

c# oledb中 INSERT INTO 语句中的语法错误的完全重复?

嗨,我无法发现错误。请帮忙。由于语法错误,存在 OleDb 异常。INSERT INTO 语句中的语法错误 OleDb 异常未处理。

    private OleDbConnection myCon;

    public Form1()
    {
        InitializeComponent();
        myCon = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C.mdb");
    }

private void insertuser_Click(object sender, EventArgs e)
    {
        try
        {
            OleDbCommand cmd = new OleDbCommand();
            myCon.Open();
            cmd.Connection = myCon;
            cmd.CommandType = CommandType.Text;
            cmd.CommandText = "INSERT INTO User ([UserID], [Forename], [Surname], [DateOfBirth], [TargetWeight], [TargetCalories], [Height]) Values ('" + userid.Text + "' , '" + fname.Text + "' , '" + sname.Text + "' , '" + dob.Text + "' , '" + tarweight.Text + "' , '" + tarcal.Text + "' , '" + height.Text + "')";


            cmd.ExecuteNonQuery();
            myCon.Close();
        }
        catch (Exception ex) { MessageBox.Show(ex.ToString()); }



    }
4

2 回答 2

1

您尝试插入的值是什么?高度是否可能以英尺和英寸 (5'10") 为单位?在这种情况下,您将关闭字符串 (') 并且会出现语法错误。

我完全同意@Brennan Vincent。构建原始 SQL 不是前进的方向。

于 2011-01-07T16:56:39.213 回答
0

如果TargetWeightHeightTargetCalories是浮点或整数值,则它们不需要在 SQL 语句中用引号引起来。

此外,与您的问题没有直接关系,但您应该真正考虑使用参数化查询。您的代码很容易受到 SQL 注入的攻击。

于 2011-01-07T16:56:00.690 回答