【问题标题】:VB.net (aspx) mysql connectionVB.net (aspx) mysql 连接
【发布时间】:2010-04-09 20:18:14
【问题描述】:

NET 和 VB.net 代码在后面。我有一个经典的 ASP 页面,它使用以下代码连接到 mySQL 服务器:

 Set oConnection = Server.CreateObject("ADODB.Connection")
 Set oRecordset = Server.CreateObject("ADODB.Recordset")

 oConnection.Open "DRIVER={MySQL ODBC 3.51 Driver}; SERVER=example.com; PORT=3306;      DATABASE=xxx; USER=xxx; PASSWORD=xxx; OPTION=3;"
 sqltemp = "select * from userinfo WHERE emailAddress = '" & theUN & "'"
 oRecordset.Open sqltemp, oConnection,3,3

 if oRecordset.EOF then
 ...

但是,我在 ASP.NET (VB.NET) 中找不到任何可以连接到 mySQL 的东西。我只发现这段代码在到达“Dim conn As New OdbcConnection(MyConString)”代码后似乎不起作用:

 Dim MyConString As String = "DRIVER={MySQL ODBC 3.51 Driver};" & _
 "SERVER=example.com;" & _
 "DATABASE=xxx;" & _
 "UID=xxx;" & _
 "PASSWORD=xxx;" & _
 "OPTION=3;"

 Dim conn As New OdbcConnection(MyConString)
 conn.Open()

 Dim MyCommand As New OdbcCommand
 MyCommand.Connection = MyConnection
 MyCommand.CommandText = "select * from userinfo WHERE emailAddress = '" & theUN & "'""
 MyCommand.ExecuteNonQuery()
 MyConnection.Close()

我也有这些导入语句:

 <%@ Import Namespace=System %>
 <%@ Import Namespace=System.IO %>
 <%@ Import Namespace=System.Web %>
 <%@ Import Namespace=System.ServiceProcess %>
 <%@ Import Namespace=Microsoft.Data.Odbc %>
 <%@ Import Namespace=MySql.Data.MySqlClient %>
 <%@ Import Namespace=MySql.Data %>
 <%@ Import Namespace=System.Data %>

错误如下:

编译器错误消息:BC30002:未定义类型“OdbcConnection”。

来源错误:

 Line 121:  "OPTION=3;"
 Line 122:  
 Line 123:  Dim conn As New OdbcConnection(MyConString) '<--error line
 Line 124:  conn.Open()
 Line 125:  

所以任何帮助都会很棒! :o)

编辑:使用这种方式可以正常工作

 Dim MyConString As String = "DRIVER={MySQL ODBC 3.51 Driver};" & _
 "SERVER=example.com;" & _
 "DATABASE=xxx;" & _
 "UID=xxx;" & _
 "PASSWORD=xxx;" & _
 "OPTION=3;"

 Dim conn As OdbcConnection = New OdbcConnection(MyConString)
 conn.Open()

 Dim MyCommand As New OdbcCommand
 MyCommand.Connection = conn
 'MyCommand.CommandText = "INSERT INTO tablename VALUES("val1","val2","val3")"
 'MyCommand.ExecuteNonQuery()
 conn.Close()

和 mysql.data.DLL 一起玩

 Dim MyConString As String = "DRIVER={MySQL ODBC 3.51 Driver};" & _
    "SERVER=example.com;" & _
    "DATABASE=xxx;" & _
    "UID=xxx;" & _
    "PASSWORD=xxx;" & _
    "OPTION=3;"

    Dim conn As New MySqlConnection(MyConString)
    conn.Open()

    Dim MyCommand As New MySqlCommand
    MyCommand.Connection = conn
    'MyCommand.CommandText = "INSERT INTO tablename VALUES("val1","val2","val3")"
    'MyCommand.ExecuteNonQuery()
    conn.Close()

大卫

【问题讨论】:

  • 那是一个相当旧的 ODBC 驱动程序:不能使用 5.x 版本吗? dev.mysql.com/downloads/connector/odbc/5.1.html
  • “似乎不起作用”是什么意思?您是否收到错误消息?
  • 使用 VB.NET 代码时遇到什么错误(如果有)?
  • 我会收到一条错误消息,但它已关闭,我不知道如何打开它...“/”应用程序中的服务器错误。运行时错误描述:服务器上发生应用程序错误。此应用程序的当前自定义错误设置阻止远程查看应用程序错误的详细信息(出于安全原因)。但是,它可以被本地服务器机器上运行的浏览器查看。
  • 自关闭以来我不确定该错误:“/”应用程序中的服务器错误。运行时错误描述:服务器上发生应用程序错误。此应用程序的当前自定义错误设置阻止远程查看应用程序错误的详细信息(出于安全原因)。但是,它可以被本地服务器机器上运行的浏览器查看。

标签: asp.net vb.net mysql


【解决方案1】:

1) 从MySQL site 获取最新的连接器

2) 根据他们提供的内容,将 MySql.Data.dll 复制到您的网络应用程序的 Bin 文件夹

3) 将此行添加到您的代码隐藏的顶部:

Imports MySql.Data.MySqlClient

4) 使用此代码,更新连接字符串的全部大写部分:

    Using Con As New MySqlConnection("Database=DB;Server=SERVER-NAME;User Id=USERNAME;Password=PASSWORD;ignore prepare=false")
        Con.Open()
        Using Com As New MySqlCommand("select * from userinfo WHERE emailAddress=?emailAddress", Con)
            Com.CommandType = Data.CommandType.Text
            Com.Parameters.AddWithValue("?emailAddress", theUN)
            Using RDR = Com.ExecuteReader()
                If RDR.HasRows Then
                    Do While RDR.Read
                        'Do stuff here
                        Response.Write(RDR.Item("emailAddress").ToString())
                    Loop
                End If
            End Using
        End Using
        Con.Close()
    End Using

编辑

那个?语法是为了避免 SQL 注入,你也可以连接起来

【讨论】:

  • mySQL 服务器不在本地服务器(我自己的)上。我将无法复制任何 dll 文件。然而,他们确实有 5.x 版本,但我只是使用我的经典 ASP 页面中的代码,它可以正常工作,而且它恰好使用 3.x 驱动程序。
  • 如果您正在运行 .Net,您应该能够将 DLL 添加到您的 Bin 文件夹中。您不必再像以前在经典 ASP 中那样对它们进行 regsvr32 了
  • 由于他们正在运行 mySQL 5.x,他们是否还没有提供该服务?
  • 就是一个普通的文件夹,没什么特别的,自己做就行了
  • 谢谢,克里斯。我现在可以双向工作了:o)。哪个更好用? DLL 还是 Odbc 连接?
【解决方案2】:

尝试添加:

<%@ Import Namespace=System.Data.Odbc %>

【讨论】:

  • 仍然得到相同的错误:编译器错误消息:BC30002:未定义类型'MySqlConnection'。
  • 嗯,这是一个不同的错误,并且在您向我们展示的代码中的任何地方都没有使用“MySqlConnection”。你在其他地方使用那种类型吗?无论如何,听起来您引用的 MySql 库要么没有正确连接,要么没有您尝试使用的功能;不幸的是,我没有使用该特定库的经验。不过,您应该能够在 DLL 来自的任何站点上找到有关它的文档。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-26
相关资源
最近更新 更多