直接用DataAdapter.Update()?我用来显示的这个datagrid,是通过DataAdapter的查询,放到dataset,在显示出来的,我更改的这一行的纪录,更改之后,直接DataAdapter.Update()好像不能存到数据库吧?我是新手,不要笑话我呀~。
还有,怎么能够取到我修改的那行纪录的值呢?(我看那一行,看上去每个字段都像textbox)

解决方案 »

  1.   

    啊啊
    就是TextBox哈
    DataAdapter.Update()可以的但在数据库中一定要设置主键
      

  2.   

    要这样写:
             xxxxDataAdapter.SelectCommand="xxxxxxxxxxx";     OleDbCommandBuilder xxxxCommandBuilder=new OleDbCommandBuilder(xxxxDataAdapter);
    DataAdapter.Update();
    一定要设置主键.
      

  3.   

    DataGrid中的每一行是可以读出来的,用Cell[]就行了。在Window Application中可以在空间上直接Add一行,
    如果在Web里面,大家知道怎么增加一行吗?求教
      

  4.   

    我查的是数据库中中的一张表,是3主键的,显示在datagrid中的是其中的一个主键和一个可以为null的字段。现在我要更新这个表,可以这样直接更新吗?
      

  5.   

    //要用update要先设置dataAdapter的insertcommand,这样dataadapter的update语句才会生效.//这里是建立access连接串,并准备往里面写东西.
    string path1= @"c:\data1.mdb";
    string strConn1  =  "Provider=Microsoft.Jet.OLEDB.4.0;  Data Source="+ path1  +";";  
    OleDbConnection conn1 = new OleDbConnection(strConn1);
    string sql1="select top 1 * from table1";
    //OleDbCommand myCommand1=new  OleDbCommand(sql1,conn1);
    OleDbDataAdapter myCommand1=new OleDbDataAdapter(sql1,conn1);
    conn1.Open ();
    DataSet ds=new DataSet ();
    myCommand1.Fill (ds,"table1");





    string insertSql ="insert into table1(numb,price,mtotal,date1,cn,cfn,csn,dosa,rout,stren,mea1,vol,mea2,hospcode) "
    +"values(@numb,@price,@mtotal,@date,@cn,@cfn,@csn,@dosa,@rout,@stren,@mea1,@vol,@mea2,@hospcode)"; //myCommand1.InsertCommand =new OleDbCommand (insertSql,conn1);
    /////////////////////////////////////////////////////////////////////
    //就是在这里设置command的insertcommand.
    ////////////////////////////////////////////////////////////////////
    myCommand1.InsertCommand =new OleDbCommand ();
    myCommand1.InsertCommand.CommandText =insertSql;
    myCommand1.InsertCommand.Connection =conn1;
    myCommand1.InsertCommand.Parameters.Add ("@numb",OleDbType.Double,20,"numb");
    myCommand1.InsertCommand.Parameters.Add ("@price",OleDbType.Double,20,"price");
    myCommand1.InsertCommand.Parameters.Add ("@mtotal",OleDbType.Double,20,"mtotal"); myCommand1.InsertCommand.Parameters.Add ("@date",OleDbType.VarChar ,255,"date1");
    myCommand1.InsertCommand.Parameters.Add ("@cn",OleDbType.VarChar ,255,"cn");
    myCommand1.InsertCommand.Parameters.Add ("@cfn",OleDbType.VarChar ,255,"cfn");
    myCommand1.InsertCommand.Parameters.Add ("@csn",OleDbType.VarChar ,255,"csn");
    myCommand1.InsertCommand.Parameters.Add ("@dosa",OleDbType.VarChar ,255,"dosa");
    myCommand1.InsertCommand.Parameters.Add ("@rout",OleDbType.VarChar ,255,"rout");
    myCommand1.InsertCommand.Parameters.Add ("@stren",OleDbType.VarChar ,255,"stren");
    myCommand1.InsertCommand.Parameters.Add ("@mea1",OleDbType.VarChar ,255,"mea1");
    myCommand1.InsertCommand.Parameters.Add ("@vol",OleDbType.VarChar ,255,"vol");
    myCommand1.InsertCommand.Parameters.Add ("@mea2",OleDbType.VarChar ,255,"mea2");
    myCommand1.InsertCommand.Parameters.Add ("@hospcode",OleDbType.VarChar ,255,"hospcode");
    DataRow newrow;
    int i=0;
    foreach (DataRow datarow in myDataSet.Tables["table1"].Rows )
    {
    newrow=ds.Tables["table1"].NewRow ();
    newrow[0]=datarow[0].ToString();
    newrow[1]=datarow[1].ToString();
    newrow[2]=datarow[2].ToString();
    newrow[3]=datarow[3];
    newrow[4]=datarow[4];
    newrow[5]=datarow[5];
    newrow[6]=datarow[6];
    newrow[7]=datarow[7];
    newrow[8]=datarow[8];
    newrow[9]=datarow[9];
    if (datarow[10].ToString() !=null)
    newrow[10]=datarow[10];
    else
    newrow[10]=null; if (datarow[11].ToString() !=null)
    newrow[11]=datarow[11];
    else
    newrow[11]=null;

    if (datarow[12].ToString() !=null)
    newrow[12]=datarow[12];
    else
    newrow[12]=null;

    if (datarow[13].ToString() !=null)
    newrow[13]=datarow[13];
    else
    newrow[13]=null;

                   ds.Tables["table1"].Rows.Add (newrow);
    i=i+1;
    listBox1.Items.Add (i.ToString () );
    }
    /////这里的update语句实际是调用之前设定的insertcommand来将记录插入到数据库中.
    myCommand1.Update (ds,"table1");


    }
      

  6.   

    Cry_out讲得很详细了
    如果还不行
    建议找本书看看
      

  7.   

    http://www.syncfusion.com/FAQ/WinForms/FAQ_c44c.asp
      

  8.   

    我遇到的情况是webform呀,那些@...@...是怎么传到数据库中的呀,我在datagrid中,只是更新了几个字段,主键的值可以从别的地方获得,怎么update()呀?我都快晕了,救救我呀!
      

  9.   

    你说的是web里面的datagrid的update。
    我做过一个你可以这样:DataGrid里面加入edit按钮,通过这个完成update的功能
    然后再Datagrid里面的editcommand事件里面写入
    DataGrid.EditItemIndex = e.Item.ItemIndex;然后再在updatecommand事件里面写入正常的SqlCommand里的Update语句
    sqlConnection1.Open();
    SqlCommand comm = new SqlCommand();
    comm=sqlconnection1.CreateCommand();
    comm.CommandText="UPDATE DataBASE SET ID=.....";
    comm.ExecuteNonQuery();
    sqlConnection1.Close();
    其中从DataGrid里面图取东西用((TextBox)e.Item.Cells[].Controls[0]).ToString()
    cells[]里面写你需要的信息是grid里面第几列的,从0开始。就行了,我就知这样做的,成功实现