对不起,刚才错了。应该这样: this.sqlUpdateCommand1.Parameters["@id"].Value=key; this.sqlUpdateCommand1.Parameters["@Original_ID"].Value=key; this.sqlDataAdapter1.UpdateCommand.CommandText="UPDATE xinxi SET sh='t' WHERE (id=@Original_id)";除非你的sqlUpdateCommand1.Parameters["@id"].SourceVersion 属性为Original
最好提供出完整的代码,包括sqlUpdateCommand1的全部代码
this.sqlUpdateCommand1.CommandText = @"UPDATE xinxi SET ID = @ID, name = @name, sex = @sex, zz = @zz, bd = @bd WHERE (ID = @Original_ID) AND (bd = @Original_bd OR @Original_bd IS NULL AND bd IS NULL) AND (name = @Original_name OR @Original_name IS NULL AND name IS NULL) AND (sex = @Original_sex OR @Original_sex IS NULL AND sex IS NULL) AND (zz = @Original_zz OR @Original_zz IS NULL AND zz IS NULL); SELECT ID, name, sex, zz, bd FROM xinxi WHERE (ID = @ID)"; this.sqlUpdateCommand1.Connection = this.sqlConnection1; this.sqlUpdateCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter("@ID", System.Data.SqlDbType.VarChar, 50, "ID")); this.sqlUpdateCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter("@name", System.Data.SqlDbType.VarChar, 50, "name")); this.sqlUpdateCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter("@sex", System.Data.SqlDbType.VarChar, 4, "sex")); this.sqlUpdateCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter("@zz", System.Data.SqlDbType.VarChar, 10, "zz")); this.sqlUpdateCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter("@bd", System.Data.SqlDbType.VarChar, 10, "bd")); this.sqlUpdateCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter("@Original_ID", System.Data.SqlDbType.VarChar, 50, System.Data.ParameterDirection.Input, false, ((System.Byte)(0)), ((System.Byte)(0)), "ID", System.Data.DataRowVersion.Original, null)); this.sqlUpdateCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter("@Original_bd", System.Data.SqlDbType.VarChar, 10, System.Data.ParameterDirection.Input, false, ((System.Byte)(0)), ((System.Byte)(0)), "bd", System.Data.DataRowVersion.Original, null)); this.sqlUpdateCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter("@Original_name", System.Data.SqlDbType.VarChar, 50, System.Data.ParameterDirection.Input, false, ((System.Byte)(0)), ((System.Byte)(0)), "name", System.Data.DataRowVersion.Original, null)); this.sqlUpdateCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter("@Original_sex", System.Data.SqlDbType.VarChar, 4, System.Data.ParameterDirection.Input, false, ((System.Byte)(0)), ((System.Byte)(0)), "sex", System.Data.DataRowVersion.Original, null)); this.sqlUpdateCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter("@Original_zz", System.Data.SqlDbType.VarChar, 10, System.Data.ParameterDirection.Input, false, ((System.Byte)(0)), ((System.Byte)(0)), "zz", System.Data.DataRowVersion.Original, null)); 我试过了改了以后的结果是把所有的sh改成了t
for(int i=0;i<DataGrid1.Items.Count;i++) { string key=DataGrid1.DataKeys[DataGrid1.Items[i].ItemIndex].ToString(); this.sqlUpdateCommand1.Parameters["@id"].Value=key; this.sqlUpdateCommand1.Parameters["@Original_ID"].Value=key; this.sqlDataAdapter1.UpdateCommand.CommandText="UPDATE xinxi SET sh='t' WHERE (id=@Original_id)"; this.sqlUpdateCommand1.Connection.Open(); this.sqlUpdateCommand1.ExecuteNonQuery(); this.sqlUpdateCommand1.Connection.Close(); } 的结果是是把所有的sh改成了t有什么不对吗?
需要参数 @Original_ID,但未提供该参数。
刚学.net许多代码是垃圾代码,但是我知道要一步步来。请孟老师看看到底是为什么?
protected void shlba(object sender,EventArgs e)//刚才的代码还是有点去掉的。
{
for(int i=0;i<DataGrid1.Items.Count;i++)
string key=DataGrid1.DataKeys[DataGrid1.Items[i].ItemIndex].ToString();
this.sqlUpdateCommand1.Parameters["@id"].Value=key;
this.sqlUpdateCommand1.Parameters["@name"].Value="";
this.sqlUpdateCommand1.Parameters["@sex"].Value="";
this.sqlUpdateCommand1.Parameters["@zz"].Value="";
this.sqlUpdateCommand1.Parameters["@bd"].Value="";
this.sqlUpdateCommand1.Parameters["@Original_ID"].Value="";
this.sqlUpdateCommand1.Parameters["@Original_sex"].Value="";
this.sqlUpdateCommand1.Parameters["@Original_name"].Value="";
this.sqlUpdateCommand1.Parameters["@Original_zz"].Value="";
this.sqlUpdateCommand1.Parameters["@Original_bd"].Value="";
this.sqlDataAdapter1.UpdateCommand.CommandText="UPDATE xinxi SET sh='t' WHERE (id=@id)";
this.sqlUpdateCommand1.Connection.Open();
this.sqlUpdateCommand1.ExecuteNonQuery();
this.sqlUpdateCommand1.Connection.Close();
}
数据库连接情况:
data source=DATOU;initial catalog=huiyuan;password=1;persist security info=True;user id=sa;workstation id=DATOU;packet size=4096
this.sqlUpdateCommand1.Parameters["@id"].Value=key;
this.sqlUpdateCommand1.Parameters["@Original_ID"].Value=key;
this.sqlDataAdapter1.UpdateCommand.CommandText="UPDATE xinxi SET sh='t' WHERE (id=@id)";
这句中的@id 对应的是参数Original_ID
for(int i=0;i<DataGrid1.Items.Count;i++)
string key=DataGrid1.DataKeys[DataGrid1.Items[i].ItemIndex].ToString();
this.sqlUpdateCommand1.Parameters["@id"].Value=key;
逻辑上或者实施的时候有错误吗??我觉得这里错了。
this.sqlUpdateCommand1.Parameters["@id"].Value=key;
this.sqlUpdateCommand1.Parameters["@Original_ID"].Value=key;
this.sqlDataAdapter1.UpdateCommand.CommandText="UPDATE xinxi SET sh='t' WHERE (id=@Original_id)";除非你的sqlUpdateCommand1.Parameters["@id"].SourceVersion 属性为Original
this.sqlUpdateCommand1.Connection = this.sqlConnection1;
this.sqlUpdateCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter("@ID", System.Data.SqlDbType.VarChar, 50, "ID"));
this.sqlUpdateCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter("@name", System.Data.SqlDbType.VarChar, 50, "name"));
this.sqlUpdateCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter("@sex", System.Data.SqlDbType.VarChar, 4, "sex"));
this.sqlUpdateCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter("@zz", System.Data.SqlDbType.VarChar, 10, "zz"));
this.sqlUpdateCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter("@bd", System.Data.SqlDbType.VarChar, 10, "bd"));
this.sqlUpdateCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter("@Original_ID", System.Data.SqlDbType.VarChar, 50, System.Data.ParameterDirection.Input, false, ((System.Byte)(0)), ((System.Byte)(0)), "ID", System.Data.DataRowVersion.Original, null));
this.sqlUpdateCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter("@Original_bd", System.Data.SqlDbType.VarChar, 10, System.Data.ParameterDirection.Input, false, ((System.Byte)(0)), ((System.Byte)(0)), "bd", System.Data.DataRowVersion.Original, null));
this.sqlUpdateCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter("@Original_name", System.Data.SqlDbType.VarChar, 50, System.Data.ParameterDirection.Input, false, ((System.Byte)(0)), ((System.Byte)(0)), "name", System.Data.DataRowVersion.Original, null));
this.sqlUpdateCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter("@Original_sex", System.Data.SqlDbType.VarChar, 4, System.Data.ParameterDirection.Input, false, ((System.Byte)(0)), ((System.Byte)(0)), "sex", System.Data.DataRowVersion.Original, null));
this.sqlUpdateCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter("@Original_zz", System.Data.SqlDbType.VarChar, 10, System.Data.ParameterDirection.Input, false, ((System.Byte)(0)), ((System.Byte)(0)), "zz", System.Data.DataRowVersion.Original, null));
我试过了改了以后的结果是把所有的sh改成了t
{
string key=DataGrid1.DataKeys[DataGrid1.Items[i].ItemIndex].ToString();
this.sqlUpdateCommand1.Parameters["@id"].Value=key;
this.sqlUpdateCommand1.Parameters["@Original_ID"].Value=key;
this.sqlDataAdapter1.UpdateCommand.CommandText="UPDATE xinxi SET sh='t' WHERE (id=@Original_id)";
this.sqlUpdateCommand1.Connection.Open();
this.sqlUpdateCommand1.ExecuteNonQuery();
this.sqlUpdateCommand1.Connection.Close();
}
的结果是是把所有的sh改成了t有什么不对吗?