Pandy_PB 2021-03-01 16:01 采纳率: 20%
浏览 113
已结题

VB.NET Access数据库更新问题,请帮忙指正!

Public Class Form1
    Dim SqlConn As OleDbConnection
    Dim SqlUse1 As OleDbDataAdapter
    Dim Dt1 As DataTable

'绑定数据库,显示DGV中
   Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        SqlConn = New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Schedule Tool\Tool\Projects_Schedule_Database.accdb")
        SqlUse1 = New OleDbDataAdapter("SELECT * FROM China_Projects", SqlConn)       
        Dt1 = New DataTable
        SqlUse1.Fill(Dt1)
        DataGridView1.DataSource = Dt1.DefaultView

  End Sub

'更新数据库
  Private Sub Button17_Click(sender As Object, e As EventArgs) Handles Button17.Click
        Dim OleCb1 As New OleDbCommandBuilder(SqlUse1)
        OleCb1.QuotePrefix = "["
        OleCb1.QuoteSuffix = "]"
        SqlUse1.UpdateCommand = OleCb1.GetUpdateCommand()
        SqlUse1.Update(Dt1) 
        Dt1.AcceptChanges() '此处是否可省略?
        MsgBox("Done")
    End Sub
End class


''问题,手动更改DGV中的单元格后,点击Button数据库可以更新。但通过控件如Textbox写入的字符串(这里指控件写入DGV单元格中)无法更新数据库字段.

''描述1,此数据库中有三张table
''描述2,确定每张表格都有主键
''描述3,若是在DGV中新增加的行(行内有内容),数据库可以保存更新
''描述4,多次保存后(n>4),提示(“违反并发:Updatecommand 影响了预期...”)

''请帮忙指正,谢谢

  • 写回答

2条回答 默认 最新

  • Pandy_PB 2021-03-01 16:54
    关注
    Public Class Form1
        Dim SqlConn As OleDbConnection
        Dim SqlUse1 As OleDbDataAdapter
        Dim Dt1 As DataTable
     
    '绑定数据库,显示DGV中
       Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
            SqlConn = New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Schedule Tool\Tool\Projects_Schedule_Database.accdb")
            SqlUse1 = New OleDbDataAdapter("SELECT * FROM China_Projects", SqlConn)       
            Dt1 = New DataTable
            SqlUse1.Fill(Dt1)
            DataGridView1.DataSource = Dt1.DefaultView
     
      End Sub
     
    '更新数据库
      Private Sub Button17_Click(sender As Object, e As EventArgs) Handles Button17.Click
            Dim OleCb1 As New OleDbCommandBuilder(SqlUse1)
            OleCb1.QuotePrefix = "["
            OleCb1.QuoteSuffix = "]"
    
            DataGridView1.CurrentCell = Nothing  '个人疏忽(增加此行代码),问题解决。因DGV中单元格在编辑中,此处没有退出。   结贴
    
            SqlUse1.UpdateCommand = OleCb1.GetUpdateCommand()
            SqlUse1.Update(Dt1) 
            Dt1.AcceptChanges() 
            MsgBox("Done")
        End Sub
    End class
    评论

报告相同问题?

悬赏问题

  • ¥15 Arcgis相交分析无法绘制一个或多个图形
  • ¥15 seatunnel-web使用SQL组件时候后台报错,无法找到表格
  • ¥15 fpga自动售货机数码管(相关搜索:数字时钟)
  • ¥15 用前端向数据库插入数据,通过debug发现数据能走到后端,但是放行之后就会提示错误
  • ¥30 3天&7天&&15天&销量如何统计同一行
  • ¥30 帮我写一段可以读取LD2450数据并计算距离的Arduino代码
  • ¥15 飞机曲面部件如机翼,壁板等具体的孔位模型
  • ¥15 vs2019中数据导出问题
  • ¥20 云服务Linux系统TCP-MSS值修改?
  • ¥20 关于#单片机#的问题:项目:使用模拟iic与ov2640通讯环境:F407问题:读取的ID号总是0xff,自己调了调发现在读从机数据时,SDA线上并未有信号变化(语言-c语言)