Database 如何在vb.net中将数据直接保存到数据库中

Database 如何在vb.net中将数据直接保存到数据库中,database,vb.net,ms-access,Database,Vb.net,Ms Access,我的Visual Basic.NET代码在将数据直接保存到Microsoft Access数据库时遇到问题。以下是我试图解决问题的代码: Imports System.Data.OleDb Public Class Form1 Dim cnn As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\ching13\Desktop\watta1.mdb" Private Sub Button1_Click(ByVal

我的Visual Basic.NET代码在将数据直接保存到Microsoft Access数据库时遇到问题。以下是我试图解决问题的代码:

Imports System.Data.OleDb

Public Class Form1
Dim cnn As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\ching13\Desktop\watta1.mdb"

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    Using dbConnection = New OleDbConnection(cnn)
        Dim dt As New DataTable
        Dim da As New OleDbDataAdapter
        Try
            dbConnection.Open()
            Dim cmd As New OleDbCommand
            cmd.CommandText = "INSERT INTO Log-In( Username, [Password] ) VALUES (@user, @pass)"

            cmd.Parameters.Add(New OleDbParameter("@user", DbType.String))
            cmd.Parameters.Add(New OleDbParameter("@pass", DbType.String))

            cmd.Prepare()

            cmd.Parameters("@user").Value = TextBox1.Text
            cmd.Parameters("@pass").Value = TextBox2.Text

            cmd.ExecuteNonQuery()

        Catch ex As Exception
        Finally
            dbConnection.Close()


        End Try
        MessageBox.Show("Data Saved")
        TextBox1.Text = ""
        TextBox2.Text = ""

    End Using
End Sub
End Class
以下是我修订的Visual Basic代码:

Imports System.Data.OleDb
Public Class Form1
    Dim cnn As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\ching13\Desktop\watta2.accdb"


Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    Using dbConnection = New OleDbConnection(cnn)
        Dim dt As New DataTable
        Dim da As New OleDbDataAdapter
        dbConnection.Open()
        Dim cmd As New OleDbCommand
        cmd.Connection = dbConnection
        cmd.CommandText = "INSERT INTO Log-In( Username, [Password] ) VALUES (@user, @pass)"

        cmd.Parameters.Add(New OleDbParameter("@user", DbType.String))
        cmd.Parameters.Add(New OleDbParameter("@pass", DbType.String))

        cmd.Prepare()


        cmd.Parameters("@user").Value = TextBox1.Text
        cmd.Parameters("@pass").Value = TextBox2.Text

        cmd.ExecuteNonQuery()
        dbConnection.Close()


        MessageBox.Show("Data Saved")
        TextBox1.Text = ""
        TextBox2.Text = ""

    End Using
End Sub
End Class

我假设问题在于您没有将连接分配给命令。您可以使用或:


你遇到了什么错误?你至少需要提供一些信息。提示:您正在显式忽略Catch块中的异常。异常包含非常有用的信息,不应该被忽略。很有可能系统正试图告诉你到底出了什么问题,而你只是不听。看不到任何东西来给我线索。作为PS,你不需要关闭连接,那个catch块很顽皮……如果没有它,我想你会得到一个空引用异常,考虑到Tim爵士发现的情况。这就是为什么try-Catch-end不受欢迎的原因……先生,我的问题是我要插入或添加到数据库中的数据没有添加。代码不起作用。@user3195853为什么数据库发生了变化?您发布的第一个代码是watta1.mdb,更新后的代码是watta2.accdb。谢谢您的回答,先生,但程序仍然无法运行。@user3195853:删除空的catch块后发生了什么?下一个错误是什么?空的catch块是一种代码味道,因为它们隐藏了重要信息。。。来自您,而不是用户。先生,我删除了try catch。。我不知道下一步我要做什么。。我会给你看我的代码:@user3195853:你有例外吗?你用过调试器吗?cmd.ExecuteNonQuery返回什么?将其分配给Int32变量以查看是否插入了记录,然后返回1。先生,我刚开始编程两周。。所以,我真的不明白你的解释,先生。请给我一个密码
Dim cmd As New OleDbCommand
cmd.Connection = dbConnection
cmd.CommandText = "INSERT INTO Log-In( Username, [Password] ) VALUES (@user, @pass)"