C#中的UPDATE命令参数对于Access 2003不更新

时间:2013-03-11 18:26:53

标签: c# ms-access

访问2003 vs 2010 c#

我看不出我哪里出错了。没有错误,但没有更新数据。我有插入,删除和编辑工作,但我不知道为什么我不能让它工作。请有人在此帮助我,提前谢谢...

连接字符串

 myCon = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data 
 Source=C:..\TempDB.mdb");

更新方法......

    private void btnUpdate_Click(object sender, EventArgs e)
    {
        OleDbCommand cmd = new OleDbCommand();
        cmd.CommandType = CommandType.Text;

        cmd.CommandText = "UPDATE [Family] SET [FirstName] = ?, [LastName] = ?, [FamilyDOB] = ?, [Medical] = ? WHERE [ID] = ?";
        //tried this as well
        //cmd.CommandText = "UPDATE [Family] SET [FirstName] = FirstName, [LastName] = @LastName, [DOB] = @StudentDOB, [Medical] = @Medical WHERE [ID] = @ID";
        cmd.Parameters.AddWithValue("@ID", txtFamID.Text);
        cmd.Parameters.AddWithValue("@FirstName", txtFirstName.Text);
        cmd.Parameters.AddWithValue("@LastName", txtLastName.Text);
        cmd.Parameters.AddWithValue("@FamDOB", txtFamDOB.Text);
        cmd.Parameters.AddWithValue("@Medical", txtMedical.Text);

        cmd.Connection = myCon;
        myCon.Open();
        cmd.ExecuteNonQuery();
        myCon.Close();
    }

2 个答案:

答案 0 :(得分:7)

以与SQL语句中出现的顺序相同的顺序提供参数值。

cmd.Parameters.AddWithValue("@FirstName", txtFirstName.Text);
cmd.Parameters.AddWithValue("@LastName", txtLastName.Text);
cmd.Parameters.AddWithValue("@FamDOB", txtFamDOB.Text);
cmd.Parameters.AddWithValue("@Medical", txtMedical.Text);
cmd.Parameters.AddWithValue("@ID", txtFamID.Text);

OleDB plus MS Access不关心参数名称,只关心它们的顺序。

答案 1 :(得分:3)

OLE DB.NET框架数据提供程序使用标有问号(?)而不是命名参数的位置参数。

改变这个:

    cmd.Parameters.AddWithValue("@ID", txtFamID.Text);
    cmd.Parameters.AddWithValue("@FirstName", txtFirstName.Text);
    cmd.Parameters.AddWithValue("@LastName", txtLastName.Text);
    cmd.Parameters.AddWithValue("@FamDOB", txtFamDOB.Text);
    cmd.Parameters.AddWithValue("@Medical", txtMedical.Text);

到:

    cmd.Parameters.AddWithValue("?", txtFamID.Text);
    cmd.Parameters.AddWithValue("?", txtFirstName.Text);
    cmd.Parameters.AddWithValue("?", txtLastName.Text);
    cmd.Parameters.AddWithValue("?", txtFamDOB.Text);
    cmd.Parameters.AddWithValue("?", txtMedical.Text);

更多:OleDbParameter Class