首页 > 解决方案 > vb.net ms 访问 mdb 表插入记录代码不起作用

问题描述

我想将数据插入 MS Access 数据库 (mdb) 表。代码如下所示:

Imports System.Data.OleDb

Imports System.Data


        Dim Cmd As OleDbCommand
        Dim SQL As String
        Dim objCmd As New OleDbCommand
        Dim Con = New OleDbConnection("Provider=Microsoft.ace.oledb.12.0; Data Source=" & pth & "\database.mdb; User Id=; Password=;")
        MsgBox(RichTextBox1.SelectedText)

        SQL = "insert into approved ( word, approveds) VALUES ('" & RichTextBox1.SelectedText & "', " & "'YES')"
        MsgBox(SQL)

        Cmd = New OleDbCommand(SQL, Con)
        Con.Open()
        objCmd = New OleDbCommand(SQL, Con)
        objCmd.ExecuteNonQuery()
        Con.Close()

它显示以下错误消息

System.Data.dll 中出现“System.Data.OleDb.OleDbException”类型的未处理异常

附加信息:条件表达式中的数据类型不匹配。

任何人都可以请帮助或任何其他程序

标签: databasevb.netms-access

解决方案


第一件事是第一件事。

你期望什么" & "'YES'意思?如果我错了,请纠正我,但你想Yes作为值传递?或者甚至"Yes"(带引号)?

如果是第一个,则仅Yes在单引号内就足够了('Yes')。对于第二种情况,它将是'\"Yes\"'.

您的代码仍然存在太多问题。您正在使用&运算符连接字符串。有些人可能会争辩说使用没有问题,&但看看代码并告诉我你的第一个表达是什么?好吧,我的第一个表达是:

这看起来很丑!

因此,您可以简单地格式化字符串,而不是串联。当然结果是一样的,但字符串格式化看起来更干净、更专业。这是一个示例:

 Dim x as String = "My Name Is {0}."
 Dim MyName As String = String.Format(x, "Zack Raiyan")

现在来了MsgBox(SQL)。好吧,我不需要第二次猜测,您正在使用这一行来查看您的 sql 语句是否符合预期。如果是这样,为什么不放一个断点呢?

现在,让我们谈谈您的变量声明。为什么要声明一个变量而不用任何实例初始化它,但稍后,在几行代码之后,当这本来可以完成时初始化它?样本 :

Dim x As New ObjectX

代替

Dim x As Object
.....
.....
x = New Object()

最后,如果您对阅读所有这些建议感到沮丧,那么让我们来谈谈这里的罪魁祸首,您的 sql 语句

insert into approved ( word, approveds)

括号前后的空格可能没有任何区别,但为什么要使用它们呢?您可能是编程新手,但了解这一点:

您将花费 20% 的时间来编写代码,而将 80% 的时间用于维护它。

因此,请始终编写干净、简单且可重用的代码。

继续....

 VALUES ('" & RichTextBox1.SelectedText & "')

不要这样做!而是传递参数,然后将值传递给它们。一个简单的例子:

Dim sql = New SqlCommand("Insert Into TableX(Column1)Values(@Column1Val)", MySqlConnection)

sql.Parameters.Add("@Column1Val", SqlDbType.VarChar).Value = "XYZ"

有一个更短的方法 tho :

sql.Parameters.AddWithValue("@Column1Val", "XYZ")

但仅当您知道您传递的数据类型与您传递给它的列的数据类型相同时才使用它。

我尽可能多地解释。我希望您理解您的错误,也希望您不会看不到我的回答如何解决您遇到的异常。如果您仍然不清楚,请发表评论,我很乐意提供帮助。


推荐阅读