【问题标题】:Why does my code stop after "con.Open()"?为什么我的代码在“con.Open()”之后停止?
【发布时间】:2009-12-28 04:07:15
【问题描述】:

在我的代码中,为什么在con.Open() 之后什么都不执行。
如果我逐步完成每一步,它会在con.Open() 之后结束Form1_Load 事件。

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

【问题讨论】:

    标签: vb.net ms-access oledb


    【解决方案1】:

    听起来像是开始引发错误。

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

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

    【讨论】:

    • 把它放在 try..catch 中。它抛出一些异常。第一个是“System.InvalidOperationException:'Microsoft.ACE.OLEDB.12.0'提供程序未在本地计算机上注册。??
    • 嗯,这是个问题。您需要安装该驱动程序。
    • 谢谢。我以为是 Mircrosoft Object 12.0 Library 参考。
    • 我安装了驱动程序,但仍然遇到同样的异常。 ?
    • @ScottK:您应该发布编译选项解决方案作为答案并接受它。
    【解决方案2】:

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

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

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

    如何更改设置:

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

    更多信息在这里:Microsoft.ACE.OLEDB.12.0 provider is not registered

    【讨论】:

    • 更新: 对于 Visual Studio 2010,您必须转到“工具”、“设置”,并选中“专家设置”以使“构建”可见以执行第 6 步.
    【解决方案3】:

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

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

    【讨论】:

      【解决方案4】:

      导入 System.Data.Odbc

      公开课表11

      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

      【讨论】:

        猜你喜欢
        • 2013-10-05
        • 2011-04-06
        • 1970-01-01
        • 1970-01-01
        • 2021-07-30
        • 1970-01-01
        • 1970-01-01
        • 2022-01-15
        • 1970-01-01
        相关资源
        最近更新 更多