CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  VB.NET

插入可更新,删除却不可更新,请教

楼主zhanghui7880()2005-04-02 22:29:44 在 .NET技术 / VB.NET 提问

Dim   myrow   As   DataRow   =   Myds.Tables(0).NewRow                                
  myrow.Item(0)   =   4  
                  myrow.Item(1)   =   "slkj7hka"  
                  myrow.Item(2)   =   21  
                  myrow.Item(3)   =   217  
                  Myds.Tables(0).Rows.Add(myrow)                            
                  Dim   tBuilder   As   New   OleDbCommandBuilder(MydataAdapter)  
        MydataAdapter.DeleteCommand   =   tBuilder.GetInsertCommand()  
  MydataAdapter.Update(Myds.Tables(0))  
   
  插入记录可更新数据库内容  
                 
   
    Myds.Tables(0).Rows.RemoveAt(1)  
                  Dim   tBuilder   As   New   OleDbCommandBuilder(MydataAdapter)  
                  MydataAdapter.DeleteCommand   =   tBuilder.GetDeleteCommand()  
                  MydataAdapter.Update(Myds.Tables(0))  
  删除后无法更新数据库,不知出什么问题了  
   
  问题点数:30、回复次数:9Top

1 楼saucer(思归)回复于 2005-04-02 22:33:49 得分 0

what   is   the   datasource?    
   
  >>>不知出什么问题了  
   
  catch   the   exception   to   see   what   the   nature   of   the   exception   isTop

2 楼chenyuming2004(这辈子我算是废了)回复于 2005-04-03 03:06:43 得分 0

Dim   tBuilder   As   New   OleDbCommandBuilder(MydataAdapter)  
  这中间什么更新,插入,删除都无所谓啊。  
  MydataAdapter.Update(Myds.Tables(0))  
   
   
  像这句我感觉没必要,它会自动生成,自动做的。  
  MydataAdapter.DeleteCommand   =   tBuilder.GetDeleteCommand()  
   
   
  Top

3 楼zhanghui7880()回复于 2005-04-03 08:14:52 得分 0

MydataAdapter.DeleteCommand   =   tBuilder.GetDeleteCommand()  
  这句话的确没有用,去掉也可以运行,我设置断电察看,自动生成的删除语句,就是针对Tables(0))对应的表操作的,可就是删除不了  
  Top

4 楼zhanghui7880()回复于 2005-04-03 08:16:00 得分 0

upTop

5 楼zhanghui7880()回复于 2005-04-03 21:06:17 得分 0

这个程序运行正常,但数据源没有更新Top

6 楼cyczl666(蔡蔡)回复于 2005-04-03 21:42:23 得分 15

up一个,我也遇到同样问题  
  用DataAdapter.Update(Dataset),数据源总是不变  
  'Update   dataset  
  dsGreaser.Tables(0).Rows(index).Item("CurrentValue")   =   10  
  dsGreaser.Tables(0).Rows(index).Item("SetValue")   =   10  
  dsGreaser.Tables(0).Rows(index).Item("TotalValue")   =   10  
   
  'Update   database  
  Dim   strDbFileName   As   String   =   "data\parameter.mdb"  
  Dim   strConnectionString   As   String   =   "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data   Source="   +   strDbFileName  
  Dim   strCommandString   As   String   =   "SELECT   *   FROM   GreaserParameter"  
  Dim   myConnection   As   New   OleDbConnection(strConnectionString)  
  Dim   myDataAdapter   As   New   OleDbDataAdapter(strCommandString,   myConnection)  
  Dim   myCommandBuilder   As   New   OleDbCommandBuilder(myDataAdapter)  
  myDataAdapter.UpdateCommand   =   myCommandBuilder.GetUpdateCommand  
  myDataAdapter.Update(dsGreaser)  
  dsGreaser.AcceptChanges()  
   
  这样就可以:  
  Dim   strDbFileName   As   String   =   "data\parameter.mdb"  
  Dim   strConnectionString   As   String   =   "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data   Source="   +   strDbFileName  
  Dim   strCommandString   As   String   =   "SELECT   *   FROM   GreaserParameter"  
  Dim   myConnection   As   New   OleDbConnection(strConnectionString)  
  Dim   myDataAdapter   As   New   OleDbDataAdapter(strCommandString,   myConnection)  
  Dim   myCommand   As   New   OleDbCommand("UPDATE   GreaserParameter   SET   CurrentValue=10,   SetValue=10,   TotalValue=10   WHERE   Index=1",   myConnection)  
  myCommand.Connection.Open()  
  myCommand.ExecuteNonQuery()  
  myCommand.Connection.Close()Top

7 楼hamadou(闵峰--为了理想而奋斗)回复于 2005-04-04 09:23:31 得分 15

Myds.Tables(0).Rows.RemoveAt(1)  
                  Dim   tBuilder   As   New   OleDbCommandBuilder(MydataAdapter)  
                  MydataAdapter.DeleteCommand   =   tBuilder.GetDeleteCommand()  
                  MydataAdapter.Update(Myds.Tables(0))  
  删除后无法更新数据库,不知出什么问题了  
  /////////////////////////////////////////////////////  
  原因是:  
   
  用于从   DataTable   对象中删除   DataRow   对象的方法有两种:DataRowCollection   对象的   Remove   方法和   DataRow   对象的   Delete   方法。Remove   方法从   DataRowCollection   中删除   DataRow,而   Delete   方法只将行标记为删除。当应用程序调用   AcceptChanges   方法时,才会发生实际的删除。通过使用   Delete,您可以在实际删除之前先以编程方式检查哪些行标记为删除。如果将行标记为删除,其   RowState   属性会设置为   Deleted。  
   
  在将   DataSet   或   DataTable   与   DataAdapter   和关系型数据源一起使用时,用   DataRow   的   Delete   方法移除行。Delete   方法只是在   DataSet   或   DataTable   中将行标记为   Deleted,而不会移除它。而   DataAdapter   在遇到标记为   Deleted   的行时,会执行其   DeleteCommand   以在数据源中删除该行。然后,就可以用   AcceptChanges   方法永久移除该行。如果使用   Remove   删除该行,则该行将从表中完全移除,但   DataAdapter   不会在数据源中删除该行。  
   
  Top

8 楼hamadou(闵峰--为了理想而奋斗)回复于 2005-04-04 09:25:01 得分 0

可见用rows.remove或rows.removeat都是从datarowcollection中移除了该行,但datatadapter并不会去在数据源进行修改该行!Top

9 楼zhanghui7880()回复于 2005-04-05 13:44:47 得分 0

hamadou(闵峰),能否   给一各简单的小例子Top

相关问题

  • 关于插入新记录时的"|80004005|操作必须使用一个可更新的查询"错误
  • 插入数据时,提示:操作必须使用一个可更新的查询。
  • 插入数据时,提示:操作必须使用一个可更新的查询
  • 给datagrid加了个删除按钮,本地试好着,可更新到服务器上点删除后datagrid就不见了也没删除记录
  • 怎样使视图可更新??
  • 什么是"可更新的查询"?
  • oracle8的可更新视图如何设置?超级大送分!!!
  • jdbc可更新数据集问题,困扰我两日!!
  • 为什么我的结果集不可更新?
  • 操作必须使用一个可更新的查询???

关键词

  • 数据
  • 删除
  • mydataadapter
  • tbuilder
  • myds
  • myrow
  • 插入
  • oledbcommandbuilder
  • deletecommand
  • 标记

得分解答快速导航

  • 帖主:zhanghui7880
  • cyczl666
  • hamadou

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo