Sub Button1_Click(sender As Object, e As EventArgs)
   
   Dim objConn as New OleDBConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & server.mappath(".") & "/db1.mdb")
   Dim ds as Dataset = New DataSet()
   Dim objAdapter as New OleDbDataAdapter("SELECT * FROM book1", objConn)
   Dim objCmdBld as New OleDbCommandBuilder(objAdapter)   objAdapter.Fill(ds, "book1")   Dim drow as DataRow   dim name=textbox1.text
   dim email=textbox2.text   drow = ds.Tables("book1").NewRow()
   drow("name") = name
   drow("email") = email
   ds.Tables("book1").Rows.Add(drow)   objAdapter.Update(ds, "book1")   datagrid1.DataSource=ds.Tables("book1").DefaultView
   datagrid1.DataBind()    textbox1.text=""
    textbox2.text="" End Sub
book1表中有三个字段,分别是id  name  email   其中id字段是自动编号,上面代码中只添加了name 和email字段,,在显示时,出现了最后一条记录没有id,,效果如下:
ID   NAME   EMAIL 
11    11     11
22    22     22
      33     33
但是在数据库中却能看到id     我用SQL的insert时就没有这种情况,请问这该如何解决呢?

解决方案 »

  1.   

    你第一次查询时取出了两条记录,但你在新增记录的时候并没有往DataSet中添加ID,虽然数据库用的是自动ID,但实际上,你在更新完数据库以后就没有更新DataSet,这样DataSet中保留的自然是以前的数据,你都没往DataSet里面添加ID,自然看不到ID值了。
      

  2.   

    drow = ds.Tables("book1").NewRow()
    drow["ID"] = ID
    drow("name") = name
    drow("email") = email
    ds.Tables("book1").Rows.Add(drow)
      

  3.   

    datagrid.DataBind前重新objAdapter.Fill(ds, "book1")一下
      

  4.   

    birdxxxx(爱上老鼠的猫) 
       你第一次查询时取出了两条记录,但你在新增记录的时候并没有往DataSet中添加ID,虽然数据库用的是自动ID,但实际上,你在更新完数据库以后就没有更新DataSet,这样DataSet中保留的自然是以前的数据,你都没往DataSet里面添加ID,自然看不到ID值了。
      
     
    因为ID是自动编号,,我如果在ds中加入ID项的话,那就等于对自动编号字段进行改写,这是不允许的阿...我该怎么写呢?
    我试了一种方法,,即在objAdapter.Update(ds, "book1")后加了句response.redirect("newfile.aspx")   newfile.aspx是自身页,这样做问题全部解决了,但是这样做好吗?
      

  5.   

    qixiao(七小)(找工作中...)
    可以了,,谢谢!!