UPDATE语句中的语法错误

本文关键字:语法 错误 语句 UPDATE | 更新日期: 2023-09-27 18:09:12

我一直在试图找出在c# .net中编码和使用OleDbCommand时UPDATE语句的正确语法。我觉得我所拥有的是正确的,但它绝对不是,因为我仍然得到错误:"UPDATE语句中的语法错误"。我的代码张贴在下面为我的更新按钮。我检查了许多网站(包括Stackoverflow),看看创建SQL语句的正确语法和标准是什么,但仍然没有找到一个不给我语法错误的。任何建议都会很有帮助。谢谢!

private void update_button_Click(object sender, EventArgs e)
    {
        String ssize = "";
        foreach (Control control in Controls)
        {
            if (control != null && control is RadioButton)
            {
                RadioButton radio = control as RadioButton;
                if (radio.Checked == true)
                {
                    ssize = control.Text;
                }
            }
        }
        OleDbConnection myCon = new OleDbConnection(connString);
        OleDbCommand cmd = new OleDbCommand();
        cmd.CommandType = CommandType.Text;
        cmd.CommandText = "UPDATE Youth SET FName = ?, MI = ?, LName = ?, Street = ?, CityStateZip = ?, PG = ?, HomePN = ?, WorkPN = ?, CellPN = ?, YEmail = ?, PGEmail = ?, Age = ?, DOB = ?, HS = ?, Grade = ?, PrevExp = ?, SSize = ?, Allergies = ?, MedConditions = ?, Avail = ?, FirstDep = ?, SecDep = ?, ThirdDep = ?, Fundraiser_1 = ?, Fundraiser_2 = ?, Fundraiser_3 = ?, Fundraiser_4 = ?, WHERE ID = ?";
        cmd.Parameters.Add("@FName", OleDbType.VarChar).Value = fname_tb.Text;
        cmd.Parameters.Add("@MI", OleDbType.VarChar).Value = mi_tb.Text;
        cmd.Parameters.Add("@LName", OleDbType.VarChar).Value = lname_tb.Text;
        cmd.Parameters.Add("@Street", OleDbType.VarChar).Value = address1_tb.Text;
        cmd.Parameters.Add("@CityStateZip", OleDbType.VarChar).Value = address2_tb.Text;
        cmd.Parameters.Add("@PG", OleDbType.VarChar).Value = pg_tb.Text;
        cmd.Parameters.Add("@HomePN", OleDbType.VarChar).Value = homePN_tb.Text;
        cmd.Parameters.Add("@WorkPN", OleDbType.VarChar).Value = workPN_tb.Text;
        cmd.Parameters.Add("@CellPN", OleDbType.VarChar).Value = cellPN_tb.Text;
        cmd.Parameters.Add("@YEmail", OleDbType.VarChar).Value = yemail_tb.Text;
        cmd.Parameters.Add("@PGEmail", OleDbType.VarChar).Value = pgemail_tb.Text;
        cmd.Parameters.Add("@Age", OleDbType.VarChar).Value = age_tb.Text;
        cmd.Parameters.Add("@DOB", OleDbType.Date).Value = bd_picker.Text;
        cmd.Parameters.Add("@HS", OleDbType.VarChar).Value = hs_tb.Text;
        cmd.Parameters.Add("@Grade", OleDbType.Integer).Value = grade_tb.Text;
        cmd.Parameters.Add("@PrevExp", OleDbType.Integer).Value = prevexp_tb.Text;
        cmd.Parameters.Add("@SSize", OleDbType.VarChar).Value = ssize;
        cmd.Parameters.Add("@Allergies", OleDbType.VarChar).Value = food_tb.Text;
        cmd.Parameters.Add("@MedConditions", OleDbType.VarChar).Value = special_tb.Text;
        cmd.Parameters.Add("@Avail", OleDbType.VarChar).Value = week1_tb.Text + "," + week2_tb.Text;
        cmd.Parameters.Add("@FirstDep", OleDbType.Date).Value = deposit_picker.Text;
        cmd.Parameters.Add("@SecDep", OleDbType.Date).Value = second_picker.Text;
        cmd.Parameters.Add("@ThirdDep", OleDbType.Date).Value = third_picker.Text;
        cmd.Parameters.Add("@Fundraiser_1", OleDbType.Date).Value = fund1Picker.Text;
        cmd.Parameters.Add("@Fundraiser_2", OleDbType.Date).Value = fund2Picker.Text;
        cmd.Parameters.Add("@Fundraiser_3", OleDbType.Date).Value = fund3Picker.Text;
        cmd.Parameters.Add("@Fundraiser_4", OleDbType.Date).Value = fund4Picker.Text;
        cmd.Parameters.Add("@ID", OleDbType.Integer).Value = idTB.Text;
        cmd.Connection = myCon;
        try
        {
            myCon.Open();
            cmd.ExecuteNonQuery();
            myCon.Close();
        }
        catch (Exception ex)
        {
            MessageBox.Show("Problem opening connection!'n" + ex.Message, "Exception");
        }
    }

UPDATE语句中的语法错误

sql中的WHERE子句前有逗号

cmd.CommandText = "UPDATE Youth SET FName = ?, MI = ?, LName = ?, Street = ?, 
    CityStateZip = ?, PG = ?, HomePN = ?, WorkPN = ?, CellPN = ?, YEmail = ?, 
    PGEmail = ?, Age = ?, DOB = ?, HS = ?, Grade = ?, PrevExp = ?, SSize = ?, 
    Allergies = ?, MedConditions = ?, Avail = ?, FirstDep = ?, SecDep = ?, 
    ThirdDep = ?, Fundraiser_1 = ?, Fundraiser_2 = ?, Fundraiser_3 = ?, 
    Fundraiser_4 = ?,  <<--- extra comma
    WHERE ID = ?";

您的错误(或至少其中一个)就在这里:

Fundraiser_4 = ?, Where…

去掉?后面的