SqlConnection conn;
DataSet ds;
SqlDataAdapter objAdapter;
SqlCommandBuilder objSqlCommandBuilder;
SqlParameter objSqlParameter;
DialogResult objDialogResult;
private void btnUpdate_Click(object sender, EventArgs e)
{
string upCmd = "update Staff set StaffNanme = @StaffNanme where Credential = @Credential ";
objAdapter.UpdateCommand = new SqlCommand(upCmd, conn); //初始化updateCommand
//声明参数并制定数据库的列和版本
objSqlParameter = objAdapter.UpdateCommand.Parameters.Add("@StaffNanme", SqlDbType.VarChar, 30);
objSqlParameter.SourceColumn = "StaffNanme";
objSqlParameter.SourceVersion = DataRowVersion.Current; objSqlParameter = objAdapter.UpdateCommand.Parameters.Add("@Credential", SqlDbType.VarChar, 30);
objSqlParameter.SourceColumn = "Credential";
objSqlParameter.SourceVersion = DataRowVersion.Current;
try
{
//如果数据集已更改,则更新记录
if (ds.HasChanges())
{
//初始化DialogResult
objDialogResult = MessageBox.Show("您想要保存这些更改吗?", "确认", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
if (objDialogResult == DialogResult.No)
{
return;
}
else
{
//DataAdapter的Update()方法将调用UpdateCommand
objAdapter.Update(ds, "Tab1");
MessageBox.Show("数据已更新");
}
}
else
{
MessageBox.Show("未做任何修改");
}
}
catch (SqlException ex)
{
//显示错误消息
//MessageBox.Show(ex.Message);
}
}
DataSet ds;
SqlDataAdapter objAdapter;
SqlCommandBuilder objSqlCommandBuilder;
SqlParameter objSqlParameter;
DialogResult objDialogResult;
private void btnUpdate_Click(object sender, EventArgs e)
{
string upCmd = "update Staff set StaffNanme = @StaffNanme where Credential = @Credential ";
objAdapter.UpdateCommand = new SqlCommand(upCmd, conn); //初始化updateCommand
//声明参数并制定数据库的列和版本
objSqlParameter = objAdapter.UpdateCommand.Parameters.Add("@StaffNanme", SqlDbType.VarChar, 30);
objSqlParameter.SourceColumn = "StaffNanme";
objSqlParameter.SourceVersion = DataRowVersion.Current; objSqlParameter = objAdapter.UpdateCommand.Parameters.Add("@Credential", SqlDbType.VarChar, 30);
objSqlParameter.SourceColumn = "Credential";
objSqlParameter.SourceVersion = DataRowVersion.Current;
try
{
//如果数据集已更改,则更新记录
if (ds.HasChanges())
{
//初始化DialogResult
objDialogResult = MessageBox.Show("您想要保存这些更改吗?", "确认", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
if (objDialogResult == DialogResult.No)
{
return;
}
else
{
//DataAdapter的Update()方法将调用UpdateCommand
objAdapter.Update(ds, "Tab1");
MessageBox.Show("数据已更新");
}
}
else
{
MessageBox.Show("未做任何修改");
}
}
catch (SqlException ex)
{
//显示错误消息
//MessageBox.Show(ex.Message);
}
}
被准备语句'(@StaffNanme Varchar(30),@Credential Varchar(30)) update Staff se'需要参数@StaffName,但未提供参数
-------------------------------
说明你没有给这个参数赋值!
objSqlParameter.SourceColumn = "StaffNanme";
objSqlParameter.SourceVersion = DataRowVersion.Current; //获取当前值 不用 value了吧。。
提示:未将对象引用设置到对象的实例
之前出错的时候:
我在给DataGrid填充数据使用的SQL语句是 select StaffNanme as 姓名,Credential as 证件号 from Staff我把语句改成 select elect StaffNanme ,Credential from Staff后面都没有改就可以更新了
难道 as 姓名后 就和StaffName对不上号了吗?
可能就是这句的关系!
要嘛换成
objSqlParameter.SourceColumn = "姓名";
估计和你说的一样的意思!呵呵,猜测!
objAdapter.UpdateCommand = new SqlCommand(upCmd, conn); //初始化updateCommand
objSqlParameter = objAdapter.UpdateCommand.Parameters.Add("@姓名", SqlDbType.VarChar, 30); 这里也要 改了 @姓名
objSqlParameter.SourceColumn = "姓名";
objSqlParameter.SourceVersion = DataRowVersion.Current; objSqlParameter = objAdapter.UpdateCommand.Parameters.Add("@证件号", SqlDbType.VarChar, 30);
objSqlParameter.SourceColumn = "证件号";
objSqlParameter.SourceVersion = DataRowVersion.Current;哈哈~ 谢谢 分给你了