更新Access数据库时,数据怎么始终无法写入数据库?

Artemisis 2017-07-04 11:07:35
摸索两天了,实在抓狂。诚恳请教大家,为什么我的这一段写入数据库的代码,执行之后,数据库中的表还是空的?谢谢了!

'---参数定义-------------
Public MPCConn As New OleDb.OleDbConnection '
Public MPCDa As New OleDb.OleDbDataAdapter '
Public MPCComm As New OleDb.OleDbCommand '
Public MPCDs As New DataSet '

'------写入数据库便于校核-------
MPCConn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source='" & Application.StartupPath & "\WDataBase.accdb '"

MPCComm.CommandText = "Select * From 计算结果Load"

MPCComm.Connection = MPCConn
MPCDa.SelectCommand = MPCComm
MPCConn.Open()
MPCDa.Fill(MPCDs, "计算结果")
MPCDs.Tables("计算结果").PrimaryKey = New DataColumn() {MPCDs.Tables("计算结果").Columns("名称")} '设置主键

MPCDs.Tables("计算结果").Rows.Clear()'只保留表格式,内容重新写入
Dim dr As DataRow
For i = 0 To CLNum-1
dr = MPCDs.Tables("计算结果").NewRow()
dr("编号") = i
dr("名称") = CondLoad(i).LoadName
dr("符号") = CondLoad(i).LoadMark
dr("数值") = CondLoad(i).SpecificLoad
MPCDs.Tables("计算结果").Rows.Add(dr)
Next i

Dim scb As New OleDb.OleDbCommandBuilder(MPCDa)

MPCDa.Update(MPCDs, "计算结果")
MPCDs.AcceptChanges()
MPCConn.Close()

为什么上述这段代码,在执行之后,数据库中的表格没有反应,也就是说,“计算结果“这个表格没有能够传入带数据库中,数据库中的表还是空着的??
我也查了一下,MPCDs.Tables("计算结果")中是有数据的,具体用debug写了一下,是有数据的。
For i = 0 To CLNum - 1
Debug.Print(MPCDs.Tables("计算结果").Rows(i)("名称").ToString)
Next i

但是为什么
MPCDa.Update(MPCDs, "计算结果")
MPCDs.AcceptChanges()
这两句没有执行呢?或者说,为什么数据库里面结果没有变化呢??非常困惑,谢谢了!
...全文
1214 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Pirate scholar 2018-05-08
  • 打赏
  • 举报
回复
在fill后面dataset的以下值试试看 .AutoIncrement = True AutoIncrementStep = -1 AutoIncrementSeed = 0
hxb74 2017-11-03
  • 打赏
  • 举报
回复
解决了吗?确认数据库的时候开错了数据库文件?
FainSheeg 2017-10-30
  • 打赏
  • 举报
回复
scb.QuotePrefix = "[" scb.QuoteSuffix = "]" 加上这两句
轻鸿万里 2017-10-30
  • 打赏
  • 举报
回复
你直接一条执行语句不就行了吗?干嘛搞那么麻烦 Public cmd As New OleDbCommand for i=0 to 100 cmd.CommandText = “insert into a(a,b,c) values(1,2,3)” cmd.ExecuteNonQuery() next
Artemisis 2017-07-04
  • 打赏
  • 举报
回复
我按照这个思路改了一下,发现还是不行啊? '---参数定义------------- Public MPCConn As New OleDb.OleDbConnection ' Public MPCDa As New OleDb.OleDbDataAdapter ' Public MPCComm As New OleDb.OleDbCommand ' Public MPCDs As New DataSet ' '------写入数据库便于校核------- MPCConn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source='" & Application.StartupPath & "\WDataBase.accdb '" MPCComm.CommandText = "Select * From 计算结果Load" MPCComm.Connection = MPCConn MPCDa.SelectCommand = MPCComm MPCConn.Open() MPCDa.Fill(MPCDs, "计算结果") MPCDa.FillSchema(MPCDs, System.Data.SchemaType.Mapped)‘这里主要参照原数据库中的数据格式 MPCDs.Tables("计算结果").Rows.Clear()'只保留表格式,内容重新写入 Dim dr As DataRow For i = 0 To CLNum-1 dr = MPCDs.Tables("计算结果").NewRow() dr("编号") = i dr("名称") = CondLoad(i).LoadName dr("符号") = CondLoad(i).LoadMark dr("数值") = CondLoad(i).SpecificLoad MPCDs.Tables("计算结果").Rows.Add(dr) Next i Dim scb As New OleDb.OleDbCommandBuilder(MPCDa) MPCDa.UpdateCommand = scb.GetUpdateCommand()’增加了这一句 MPCDa.Update(MPCDs, "计算结果") MPCDs.AcceptChanges() MPCConn.Close() 主要增加 MPCDa.UpdateCommand = scb.GetUpdateCommand() 但是最后运行还是报错“在 System.InvalidOperationException 中第一次偶然出现的“System.Data.dll”类型的异常” 求问各位大神,到底错在哪里,谢谢
xdashewan 2017-07-04
  • 打赏
  • 举报
回复
目测没写updatecommand,参照https://msdn.microsoft.com/zh-cn/library/system.data.oledb.oledbdataadapter.updatecommand(v=vs.110).aspx

16,553

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧