加如下语句
OleDbDataAdapter.Update(dsauthors1);dsauthors1是dataGrid控件绑定的数据集

解决方案 »

  1.   

    用DataAdapter控件的Update方法是最简单的。
      

  2.   

    兄弟呀,我用的myCommand.Update(ds,"test");
    就是你说的OleDbDataAdapter.Update(dsauthors1);呀,不知道为什么看到界面上的dataGrid已修改,但实际看数据库没有修改。
      

  3.   

    兄弟们呀,我用的myCommand.Update(ds,"test");就是你们说的OleDbDataAdapter.Update(dsauthors1);可是为什么还是不能更改数据库,我的一朋友说一定要写sql中的insert、update和delete,这是必须的吗?
      

  4.   

    oleDbDataAdapter.Update(dataSet,dataTable)
      

  5.   

    用sqlCommand也是可以的,你数据库的权限是否设对了?你还是用dataAdapter吧,我试过很多次,sqlServer,Access,foxpro数据库绝对没问题.实在不行你可以先把数据库作为数据源添加,然后在.net把他从数据源中直接拖放到窗体中.试一下,有问题再说
      

  6.   

    我将数据源拖放到窗体中,发现.net向导创建了insertcommand、updatecommand、deletecommand等对象,这里面也用到了sql中的insert、update和delete的语句,这本质上还是一样的,到底应该怎么做?
      

  7.   

    使用CommandBuilder生成DataAdapter的InsertCommand,UpdateCommand和DeleteCommand。只需一个语句:OleCommandBuilder myCommandBuilder  = new OleCommandBuilder(myCommand);再用myCommand.Update(ds,"test");
      

  8.   

    CommandBuilder只能用于更新一张表,而且该标必须有唯一的列。
      

  9.   

    一条语句搞定,绝对可以!!!
    myCommand.Update(ds.GetChanges(DataRowState.Modified))别忘给分!!
      

  10.   

    回楼上的:
    加入你给的语句后,有一报错:"值不能为空,参数名:dataSet"
      

  11.   

    你是怎样绑定大dataGrid的数据的?
      

  12.   

    回daizhihui_1() :我的系统提示:找不到类型或命名空间OleCommandBuilder 应该要using 什么才能有它?
      

  13.   

    回wangjingjing390(晶晶):
    dataGrid1.DataSource=ds.Tables["test"].DefaultView;
      

  14.   

    你是用dataGrid编辑数据的吗?要是数据可以显示,那我觉得update应该不会有问题的啊,我都这样用了很久了,从来没出过问题.
      

  15.   

    wangjingjing390(晶晶) 能将你简单的源代码给我一份吗?谢谢。
    [email protected]
      

  16.   

    在dataGrid的属性页中,有一个borderstyle(反正是一个什么style)我晚上给你详细资料,他右边应该有一个有三个点(browse)的按钮,你试着把dataGrid中的每一列都和dataTable上对应的一列绑定(先添加一个style,设定style的dataTable,然后在style里在把数据绑定到列)不是很麻放,你就试一试吧!
      

  17.   

    using System.Data.oleDb我晚上给你发!
      

  18.   

    对不起,我刚收到,下面是您的留言:
    是的,你可以使用Update()来对数据库进行更新。如果你使用的是SQL Server,你还可以用Update()一次性的更新数据库(包括新增、插入、修改、删除保存到数据库中),如果不是Sql server,就要看是否数据库支持这种操作。对于SQL Server,你最好使用Sql前最。DataAdapter.Update,下面是参考代码片断:
    SqlConnection myConn=new SqlConnection(" Provider = sqloledb; Data Source = 127.0.0.1;uid=sa;pwd=;database=pubs") ;
    SqlCommand selCommand=new Command("select * from authors",myConn);
    SqlDataAdapter da=new SqlDataAdapter();
    da.SelectCommand=selCommand;
    DataSet ds=new DataSet();
    da.Fill(ds,"test");
    SqlCommandBuilder dc=new SqlCommandBuilder(da);private void cmdSave_Click(object sender, System.EventArgs e)
    {
      if(ds.Tables["test"].HasChanges()){
         DataSet changeDs=ds.Tables["test"].GetChanges();
         da.Update(changeDs,"test");
         ds.Tables["test"].AcceptChanges();
      }
    }其中ds.Tables["test"]加点以后并没有HasChanges和GetChanges,也就是说dataset中没有这两个方法,不知为何故?
      

  19.   

    又看了一下你写的代码(是手工写的吧!如果是按下面做试试)
    private void cmdSave_Click(object sender, System.EventArgs e)
    {//保存修改
    try
    {
    /*ds.Tables["test"].AcceptChanges();
    myCommand.TableMappings.Clear();
    myCommand.TableMappings.Add("authors","test");
    myCommand.Update(ds,"test");
    */
    System.Data.OleDb.OleDbCommandBuilder ole_cb=new System.Data.OleDb.OleDbCommandBuilder(myCommand);
    myCommand.UpdateCommand = ole_cb.GetUpdateCommand();
    myCommand.Update(ds.GetChanges(DataRowState.Modified));
    ds.AcceptChanges();
    }
    catch(Exception ex)
    {
    MessageBox.Show(ex.Message);
    }
    }
      

  20.   

    wangjingjing390(晶晶) 首先得真心的谢谢你。我看到你的代码了,可惜我发现没有解决我的问题,原因是在您应用可视化生成代码的时候,就使得这个代码只适应本程序,而且其本质还是用到了sql中的insert、update和delete,而我现在所做的项目是需要随时更换数据库和表的一个sql工具,所以……

    这是您代码中的关键部分
    this.oleDbInsertCommand1.CommandText = "INSERT INTO 课程表(星期二, 星期六, 星期日, 星期三, 星期四, 星期五, 星期一) VALUES (?, ?, ?, ?, ?, ?, ?)";

    this.oleDbUpdateCommand1.CommandText = @"UPDATE 课程表 SET 星期二 = ?, 星期六 = ?, 星期日 = ?, 星期三 = ?, 星期四 = ?, 星期五 = ?, 星期一 = ? WHERE (节次 = ?) AND (星期一 = ? OR ? IS NULL AND 星期一 IS NULL) AND (星期三 = ? OR ? IS NULL AND 星期三 IS NULL) AND (星期二 = ? OR ? IS NULL AND 星期二 IS NULL) AND (星期五 = ? OR ? IS NULL AND 星期五 IS NULL) AND (星期六 = ? OR ? IS NULL AND 星期六 IS NULL) AND (星期四 = ? OR ? IS NULL AND 星期四 IS NULL) AND (星期日 = ? OR ? IS NULL AND 星期日 IS NULL)";

    this.oleDbDeleteCommand1.CommandText = @"DELETE FROM 课程表 WHERE (节次 = ?) AND (星期一 = ? OR ? IS NULL AND 星期一 IS NULL) AND (星期三 = ? OR ? IS NULL AND 星期三 IS NULL) AND (星期二 = ? OR ? IS NULL AND 星期二 IS NULL) AND (星期五 = ? OR ? IS NULL AND 星期五 IS NULL) AND (星期六 = ? OR ? IS NULL AND 星期六 IS NULL) AND (星期四 = ? OR ? IS NULL AND 星期四 IS NULL) AND (星期日 = ? OR ? IS NULL AND 星期日 IS NULL)";可不可以不用sql语句?
      

  21.   

    综合了fa2002(叮当) 和heroux(FlyerAero) 的帮助,我现在可以修改了,表示感谢,但由于我做的是一个sql查询工具,所以可能有一些sql server的表是没有主键的,那是不是就不可以了。我以前用vb写过同样的代码,没有问题的,可以很容易进行新增、修改和删除,但用c#却还是不会。