为什么我的代码在“con.Open()”之后停止?

时间:2009-12-28 04:07:15

标签: vb.net ms-access oledb

在我的代码中,为什么在con.Open()之后没有任何内容执行 如果我单步执行每个步骤,则会在Form1_Load之后结束con.Open()事件。

Imports System.Data.OleDb

Public Class Form1

Dim con As OleDbConnection
Dim strCon As String = "Provider=Microsoft.ACE.OLEDB.12.0;" & _
"Data Source=C:\testDB.accdb"

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

    con = New OleDbConnection(strCon)

    con.Open()
    MsgBox("con open")

    con.Close()
    MsgBox("con closed")

End Sub
End Class

4 个答案:

答案 0 :(得分:3)

听起来像错误开始了。

您是否尝试使用OnError Goto Handler类型代码构建代码?请参阅On Error Statement

如果这是VB.NET,请尝试使用Try ... Catch捕获异常。然后在Catch语句上设置断点,以找出错误是什么。

答案 1 :(得分:0)

安装MS Access数据库引擎(使用Microsoft.ACE.OLEDB.12.0)后,我的程序仍无效。我仍然有错误:

  

“'Microsoft.ACE.OLEDB.12.0'提供程序未在本地muoteachine上注册。”

必须更改高级编译配置,因为我在Windows 7 64位上运行,可能“......将处理器类型锁定为32位”。

如何更改设置:

1.Tools - >选项。
2.检查“显示所有设置”。
3.在左侧的树视图中,选择“项目和解决方案” 4.在右侧的选项中,选中“显示高级构建配置”框 5.单击“确定” 6.转到Build - >配置管理器...
7.在“平台”列中,在下拉列表中选择“新建” 8.在第一个下拉框中选择“x86” 9.“好的”

此处有更多信息:Microsoft.ACE.OLEDB.12.0 provider is not registered

答案 2 :(得分:0)

即使你有适当的尝试catch阻塞一段时间,con.Open()也需要几秒钟才能抛出异常,因为它正在等待服务器。以下错误需要一段时间才能抛出异常,看起来好像你的Step Into消失了。请耐心等待!

“ORA-12170:TNS:发生连接超时”

答案 3 :(得分:0)

导入System.Data.Odbc

Public Class Form11

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    Dim a1, a2, a6, a3, a4, a5, a7 As String
    ' Dim a2, a6 As Integer
    a1 = txtname.Text
    a3 = txtaddress.Text
    a4 = txtcity.Text
    a5 = txtmail.Text
    a7 = txtbalance.Text
    a2 = txtmob.Text
    a6 = txtvehicles.Text
    Dim con As New OdbcConnection("DSN = crusher_schema")
    con.Open()
    MsgBox("Databse Connected", MsgBoxStyle.Information, "add")
    Dim cmd As New Odbc.OdbcCommand("insert into customer values('" & a1 & "','" & a2 & "','" & a3 & "','" & a4 & "','" & a5 & "','" & a6 & "','" & a7 & "', con")
    Dim r As Integer
    r = cmd.ExecuteNonQuery
    If r = 1 Then
        MessageBox.Show("Succesfully inserted" & r)
    Else
        MessageBox.Show("Not inserted" & r)
    End If!

Form.vb