this.sqlUpdateCommand1.Parameters["@Original_ID"].Value="";
去掉看看

解决方案 »

  1.   

    不知道你叫什么,就叫孟老师吧,如果我照你那样做的话结果是:
    需要参数 @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
      

  2.   

    这样:
    this.sqlUpdateCommand1.Parameters["@id"].Value=key;
    this.sqlUpdateCommand1.Parameters["@Original_ID"].Value=key;
      

  3.   

    事实上,
    this.sqlDataAdapter1.UpdateCommand.CommandText="UPDATE xinxi SET sh='t' WHERE (id=@id)";
    这句中的@id 对应的是参数Original_ID
      

  4.   

    你们觉得我写的
    for(int i=0;i<DataGrid1.Items.Count;i++)
    string key=DataGrid1.DataKeys[DataGrid1.Items[i].ItemIndex].ToString();
    this.sqlUpdateCommand1.Parameters["@id"].Value=key;
    逻辑上或者实施的时候有错误吗??我觉得这里错了。
      

  5.   

    对不起,刚才错了。应该这样:
    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
      

  6.   

    最好提供出完整的代码,包括sqlUpdateCommand1的全部代码
      

  7.   

    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
      

  8.   

     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有什么不对吗?