刚刚问了个问题,在高人指导下解决了,但是还是有两个问题不明白,问题见代码中的注释
数据库中有一张表test,只有两列,ID(int),Name(nchar)
要求取出该表,绑定到DataGridview后,在DataGridView中修改后提交到数据库,ID列只读,只能修改Name列,不对表做增删
经验证后正确代码如下:
            SqlConnection sqlconnect = DatabaseManager.getNewConn();
            ada = new SqlDataAdapter("select ID,Name from test",sqlconnect);
            ada.UpdateCommand = new SqlCommand("update test set Name=@Name where ID=@ID",sqlconnect);
            ada.UpdateCommand.Parameters.Add("@Name", SqlDbType.NVarChar, 15, "Name");            SqlParameter p1 = ada.UpdateCommand.Parameters.Add("@ID", SqlDbType.Int);
            p1.SourceColumn = "ID";
            p1.SourceVersion = DataRowVersion.Original;
//问题一:怎样才能把参数值设为自定义变量,这里我改为p1.Value = MyString;不行
            dataSet = new DataSet();
            ada.Fill(dataSet);   //问题二:这里改为ada.Fill(Table1)就不能更新到数据库, 
dataadapter.Fill(dataSet) 和dataadapter.Fill(dataTable)有什么不同,为什么一个能提交到数据库,而另一个不能            Table1=dataSet.Tables[0];
            dataGridView1.DataSource = Table1;修改后提交到数据库ada.Update(dataSet);/经验证,只要问题二那里是ada.Fill(dataSet);这里改为ada.Fill(Table1) 也行

解决方案 »

  1.   

    1.ID没有定义成主键可以修改,但不能要这句p1.SourceVersion = DataRowVersion.Original;
    2.Fill(dataset)和Fill(DataTble)应该是一样的,反正最后只用了一个表做为数据源
     
      

  2.   


    关于第2点,问题二那里改为Fill(DataTble),在我的这段代码里不行。我的原帖在这:ID是主键
    http://topic.csdn.net/u/20101222/22/acd174b2-2c67-41f1-be45-237f536b3059.html?83392
    经实验证明不行,我才来问的