这是系统自动生产的呀,还需要怎么处理?
当执行Update的时候,DataAdapter会自动设置所有的参数。

解决方案 »

  1.   

    应该可以更新数据库啊,我的想法是:对某一记录(DATAGRID中)
    修改后调用这个事件,把修改结果保存到数据库
      

  2.   

    你到底是想自动生成update语句还是想显示声明呀!
    把代码全贴出来
      

  3.   

    各位老大,我是想更新数据库啊,我贴出代码:
    ================================
    Imports System.Data
    Imports System.Data.OleDb
    Imports System.Web.UI
    Imports System.Web.UI.WebControls
    Public Class MyWebclass
        Inherits System.Web.UI.Page
        Public statues As Label
        Public ds As New DataSet()
        Public mydatagrid As DataGrid
        Public objadapter As OleDbDataAdapter
    Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            Dim strCon As String = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Server.MapPath("db\NewList.mdb")
            Dim strSql As String = "select id,subject,content,postime,author from newlist order by id desc"
            Dim ObjConnection As OleDbConnection = New OleDbConnection(strCon)
            objadapter = New OleDbDataAdapter(strSql, strCon)
            Objadapter.Fill(ds)
            mydatagrid.DataSource = ds.Tables(0).DefaultView
            mydatagrid.DataBind()End SubPublic Sub Newlist_Edit(ByVal sender As Object, ByVal e As datagridcommandeventargs) 
            mydatagrid.EditItemIndex = CInt(e.item.itemindex)
            mydatagrid.DataBind()
    End SubPublic Sub NewList_cancel(ByVal sender As Object, ByVal e As datagridcommandEventArgs)
            mydatagrid.EditItemIndex = -1
            mydatagrid.DataBind()
    End Sub
    Public Sub NewList_delete(ByVal sender As Object, ByVal e As datagridcommandEventArgs)
    Objadapter.DeleteCommand = Objbuilder.GetDeleteCommand()        
    objadapter.Update(ds)
            mydatagrid.DataBind()
    End Sub
    Public Sub NewList_update(ByVal sender As Object, ByVal e As datagridcommandEventArgs)
       Dim Objbuilder As OleDbCommandBuilder = New OleDbCommandBuilder(Objadapter)
       'Objadapter.InsertCommand = Objbuilder.GetInsertCommand()
       'Objadapter.DeleteCommand = Objbuilder.GetDeleteCommand()
       Objadapter.UpdateCommand = Objbuilder.GetUpdateCommand()
       response.write(Objadapter.updatecommand.commandtext)  objadapter.Update(ds)
       mydatagrid.EditItemIndex = -1
       mydatagrid.DataBind()
    End Sub
    End Class
    ==================
    可是数据库怎么都不能更新
      

  4.   

    如果你用了OleDbCommandBuilder对象,你就不用显式声明这些insertcommand,deletecommadn,updatecommand了
    看看这个
    ms-help://MS.VSCC/MS.MSDNVS.2052/cpref/html/frlrfsystemdataoledboledbcommandbuilderclasstopic.htm
      

  5.   

    在objadapter.Update(ds)一句的前面加上
    ds.Tables[0].Rows[0][0] = "test";
    试试能否更新。
    (应该是可以的)
      

  6.   

    你的问题是我还没有对数据库进行操作吗?我是第一次使用commandbuilder对象objadapter.Update(ds)这个语句就是更新数据库啊
      

  7.   

    你执行Update之前没有改变ds里面的数据呀。
      

  8.   

    objadapter.Update(ds)是更新数据库
    但它是根据你以前的selectcommand和dataset中的改变来自动生成相应的更新语句
      

  9.   

    你执行Update之前没有改变ds里面的数据呀。
      

  10.   

    请问icyer,你是不是要在id字段中插入"test"?不能这样啊
      

  11.   

    ds.Tables[0].Rows[0][0] = 111;
      

  12.   

    都不行,我以为用COMMANDBUILDER可以简化更新过程,
    现在看来并不好用,各位都用过这个对象吗?
      

  13.   

    commandbuilder是这样用的,你好好看看msdn吧!看看下面的代码OleDbConnection myConn = new OleDbConnection(myConnection);
        OleDbDataAdapter myDataAdapter = new OleDbDataAdapter();
        myDataAdapter.SelectCommand = new OleDbCommand(mySelectQuery, myConn);
        OleDbCommandBuilder custCB = new OleDbCommandBuilder(myDataAdapter);    myConn.Open();    DataSet custDS = new DataSet();
        myDataAdapter.Fill(custDS, "Customers");    //code to modify data in dataset here    //Without the OleDbCommandBuilder this line would fail
        myDataAdapter.Update(custDS, "Customers");    myConn.Close();    return custDS;
      

  14.   

    你对commandbuilder理解的不清楚Dim myConn As New OleDbConnection(myConnection)
        Dim myDataAdapter As New OleDbDataAdapter()
        myDataAdapter.SelectCommand = New OleDbCommand(mySelectQuery, myConn)
        Dim custCB As OleDbCommandBuilder = New OleDbCommandBuilder(myDataAdapter)    myConn.Open()    Dim custDS As DataSet = New DataSet
        myDataAdapter.Fill(custDS, "Customers")    ' Code to modify data in DataSet here     ' Without the OleDbCommandBuilder this line would fail.
        myDataAdapter.Update(custDS, "Customers")    myConn.Close()
      

  15.   

    这个例子我刚看过,上面的例子中oledbcommandbuilder声明了以后再就没出现过,不知为什么?
      

  16.   

    DataAdapter执行Update的时候,会检测作为参数的DataSet与数据库之间的差别,如果DataSet与数据库有改变,那就执行更新操作,否则就不会执行(执行了也没用),所以,要看到Update的效果,就必须先改变DataSet里面的值。
    OleDbCommandBuilder cb = new OleDbCommandBuilder(DataAdapter1);
    DataSet ds = new DataSet();
    DataAdapter1.Fill(ds);
    ds.Tables[0].Rows[0][0] = "test";
    DataAdapter1.Update(ds);
      

  17.   

    DataAdapter执行Update的时候,会检测作为参数的DataSet与数据库之间的差别,如果DataSet与数据库有改变,那就执行更新操作,否则就不会执行(执行了也没用),所以,要看到Update的效果,就必须先改变DataSet里面的值。
    OleDbCommandBuilder cb = new OleDbCommandBuilder(DataAdapter1);
    DataSet ds = new DataSet();
    DataAdapter1.Fill(ds);
    ds.Tables[0].Rows[0][0] = "test";
    DataAdapter1.Update(ds);
      

  18.   

    oledbcommandbuilder声明以后本来就不用出现了
    custCB这个名字你可以随便取
      

  19.   

    Dim custCB As OleDbCommandBuilder = New OleDbCommandBuilder(myDataAdapter)的作用就是建立myDataAdapter的各种Command。
    这一句只要执行一次就可以了。
      

  20.   

    加了icyer那句后可以更新,
    可是我的例子到底应该怎么改?
      

  21.   

    ok,我先取得编辑框的值,然后手工对DATASET赋新值,最后执行命令,是这样吗?还有没有更自动的做法?