你整段代码加上try catch试试。

解决方案 »

  1.   

    上次在论坛的VB里面答复过类似的问题,如果C#也出现同样的问题的话,那只有用拼接语句的办法,自适应语句就不适合早期的数据库了;
    拼接语句大多也是使用循环拼接与字符串处理方式完成一条或多条语句,也不是什么难事;
    拼接的插入,更新,删除语句各为一个函数,调用也是很容易的事;
    与其浪费精力和时间在不可能的事上,不如趁早写代码去更明智.
      

  2.   

    查看了一下我的2014年的工程Microsoft.Jet.OLEDB.4.0用的是自适应更新是可以的一直用到现在都没问题.
    当时工程引用DLL
      

  3.   

    上述引用的2个DLL为了资料导出至今都是可以的.
      

  4.   

    你不是插入吗,我看到还有select语句,检查下
      

  5.   


    https://blog.csdn.net/xianfajushi/article/details/8578495
    以上或许能参考一下.
      

  6.   

    VB的帖子看https://bbs.csdn.net/topics/392567126不知道你看得懂VB代码?
    不过我这里要说的是2个自己写的函数    Sub AccEss数据库增删改(ByVal 数据源 As String, ByVal 语句 As List(Of String))
            Dim 数 = 0
            Dim 连接 As New OleDb.OleDbConnection(数据源)
            连接.Open()
            For Each 执行 As String In 语句
                Dim 操作 = New OleDb.OleDbCommand(执行, 连接)
                数 += 操作.ExecuteNonQuery()
            Next
            连接.Close()
            MessageBox.Show("数据保存成功!受影响数" + 数.ToString("〖00000〗"), "友情提醒", MessageBoxButtons.OK, MessageBoxIcon.Asterisk)
        End Sub还有一个可以写为更新函数,是用循环拼接的字符串,写好了拼接函数对于任意表任意字段都是适用的.            Dim 执行 As New List(Of String)
                Dim 语句 As String = "UPDATE 测试表 SET "
                Dim xu = 0
                For Each 列 As DataColumn In ds.Tables(0).Columns'循环表列与行的列完成拼接语句
                    语句 += 列.ColumnName + " = '" + ds.Tables(0).Rows(0)(xu) + "' ,"
                    xu += 1
                Next
                语句 = 语句.TrimEnd(",") + "WHERE ID = '" + ds.Tables(0).Rows(0)(0) + "'"
                执行.Add(语句)
                AccEss数据库增删改(cnStr, 执行)'执行这个语句更新成功,也可以查看文件夹中数据库修改时间看到其实VB.NET语句和C#语句其实看起来差不了多少,一般写程序希望写好一个函数能适用的范围很广,上面的2个函数就是这样,第1个适合增删改的功能,只要使用不同的语句就能达到目的.
    第2个可以写为一个更新的拼接语句函数,无论表的字段有多少都可以,
    只要写好了这样的函数,那么,无论什么数据表都可以调用就达到目的了,而且也很简洁.
      

  7.   

    这里有全部的测试用例https://blog.csdn.net/xianfajushi/article/details/89357305,
    实践证明用语句创建的数据库和表不适用自协调更新,而手动创建的数据库和表就可以,
    其中奥妙未去探索,有兴趣的话自己去探秘究微.
      

  8.   

    会弹出测试成功么,不会的话进行Debug调试或者找一篇正规的代码流程写一遍。