2014-01-14 62 views
-1

我在直接将数据保存到Microsoft Access数据库时遇到了Visual Basic.NET代码中的问题。这里是我试图完成我的问题代码:如何将数据直接保存到vb.net的数据库中

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 
+2

,什么是您遇到的错误?您需要提供至少*部分*信息。 (提示:你在Catch块中显式*忽略*异常,异常包含非常有用的信息,不应该被忽略。系统很可能试图告诉你到底发生了什么错误,而你只是没有听。) – David

+0

没有看到任何东西给我一个线索。作为一个PS你不需要关闭连接,并且该catch块很好调皮... –

+0

没有它你会得到一个空引用异常,我认为,给定蒂姆爵士发现了什么。这就是为什么尝试Catch结束是皱眉... –

回答

2

我认为问题是,你不分配ConnectionCommand。您可以使用constructorproperty

Dim cmd As New OleDbCommand 
cmd.Connection = dbConnection 
cmd.CommandText = "INSERT INTO Log-In(Username, [Password]) VALUES (@user, @pass)" 
+1

好吧,发现先生 –

+0

谢谢你的答案先生,但程序仍然无法正常工作。 – user3195853

+0

@ user3195853:删除空的catch块后发生了什么?下一个错误是什么?空的catch块是一种代码气味,因为它们隐藏了重要的信息......但不是来自用户的重要信息。 –

相关问题