访问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();
}
答案 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);