2010-04-09 5 views
1

Le code NET et VB.net derrière. J'ai une page ASP classique qui se connecte au serveur MySql avec le code suivant:VB.net (aspx) connexion 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 
... 

Cependant, je suis incapable de trouver quoi que ce soit pour se connecter à mySQL dans ASP.NET (VB.NET). Je n'ai trouvé ce morceau de code qui ne semble pas fonctionner une fois qu'il arrive à la « Dim conn As New OdbcConnection (MyConString) » Code:

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() 

Je ces déclarations d'importation aussi:

<%@ 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 %> 

L'erreur est la suivante:

Message d'erreur du compilateur: BC30002: le type 'OdbcConnection' n'est pas défini.

Erreur Source:

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

Ainsi, toute aide serait super! : O)

EDIT: AVEZ OBTENU LE TRAVAIL À L'AIDE DE CETTE FAÇON

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() 

ET AVEC LA mysql.data.DLL EN JEU

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() 

David

+1

qui est un pilote ODBC assez vieux: il est impossible d'utiliser la version 5.x? http://dev.mysql.com/downloads/connector/odbc/5.1.html – davek

+0

Quelle erreur (le cas échéant) obtenez-vous en utilisant le code VB.NET? – Nate

+0

Je ne suis pas sûr de l'erreur depuis sa désactivation: Erreur du serveur dans '/' Application. Erreur d'exécution Description: Une erreur d'application s'est produite sur le serveur. Les paramètres d'erreur personnalisés actuels pour cette application empêchent l'affichage à distance des détails de l'erreur d'application (pour des raisons de sécurité). Il peut cependant être consulté par les navigateurs s'exécutant sur la machine du serveur local. – StealthRT

Répondre

0

1) Obtenez le nouveau connecteur du MySQL site

2) De ce qu'ils vous donnent, copiez le MySql.Data.dll dans votre dossier Bin pour votre application web

3) Ajouter cette ligne à votre code-behind en haut:

Imports MySql.Data.MySqlClient 

4) Utilisation ce code, la mise à jour des parties de la chaîne de connexion en majuscules:

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 

Modifier

Le? la syntaxe est d'éviter l'injection SQL, vous pouvez concaténer à la place, aussi

+0

Le serveur mySQL n'est pas sur un serveur local (le mien). Je ne serai pas capable de copier les fichiers DLL sur. Ils ont, cependant, la version 5.x mais j'utilisais juste le code de ma page ASP classique qui fonctionne et il arrive juste d'utiliser des pilotes 3.x. – StealthRT

+0

Si vous utilisez .Net, vous devriez pouvoir ajouter des DLL à votre dossier Bin. Vous n'avez plus besoin de les regsvr32 comme vous le faisiez en ASP classique –

+0

Ne sont-ils pas déjà fournis car ils exécutent mySQL 5.x? – StealthRT

0

Essayez d'ajouter:

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

Toujours la même erreur: Message d'erreur du compilateur: BC30002: Le type 'MySqlConnection' n'est pas défini. – StealthRT

+0

Hmm, c'est une erreur différente, et "MySqlConnection" n'est utilisé nulle part dans le code que vous nous avez montré. Utilisez-vous ce type ailleurs? Quoi qu'il en soit, il semble que la bibliothèque MySql que vous référencez n'est pas connectée correctement ou n'a pas la fonctionnalité que vous essayez d'utiliser; Malheureusement, je n'ai pas d'expérience avec cette bibliothèque en particulier. Cependant, vous devriez être capable de trouver de la documentation sur n'importe quel site d'où proviennent les DLL. – tloflin