2013-03-11 35 views
4

访问2003 VS 2010的C#在C#中UPDATE命令参数对于Access 2003不更新

我看不到的地方我已经错了。没有错误,但没有数据正在更新。我有插入,删除和编辑工作,但我不知道为什么我不能得到这个工作。请能有人好心帮我在这里,在此先感谢...

连接字符串

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(); 
    } 

回答

5

供应,因为它们出现在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不关心参数名称,只关心它们的顺序。

+0

感谢。我不知道sql语句更新需要以相同的顺序,最感谢。 – bucketblast 2013-03-11 19:24:45

3

的OLE DB.NET Framework数据提供使用位置参数用问号(?)标记而不是命名参数。

更改此:

​​

到:

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

+0

完全忘了,@Iswanto山姆。我已投票删除我的答案,并为你的+1。 – Brian 2013-03-11 18:31:52

+0

@Iswanto - 你可以说明应该在cmd.CommandText =“UPDATE ....应该做些什么吗?谢谢 – bucketblast 2013-03-11 18:34:39

+0

@bucketblast:只是使用你当前的代码,使用'?'作为参数 – 2013-03-11 18:36:20