Avatar billede dimle Nybegynder
27. august 2002 - 10:34 Der er 13 kommentarer og
2 løsninger

Connecte til en MySQL database i ASP.NET...

Er der nogen der ved hvordan man connecter til en MySQL database i ASP.NET? Jeg skal bruge ADO.NET eller OLEDB!

Jeg vil gerne have konkret kode og ikke links hvor man skal sidde og lede i en krig!!
Avatar billede z42cool Nybegynder
27. august 2002 - 11:18 #1
1) Først og fremmest skal du have MyODBC installeret så du kan anvende MySQL som en ODBC datakilde. MyODBC kan hentes fra mysql.com her:

http://www.mysql.com/downloads/api-myodbc-3.51.html

2) Opsæt et nyt DSN på din maskine. Control Panel -> Administrative Tools -> Datasource ODBC -> Fanebladet System DSN -> Add. Vælg MySQL som driver og udfyld den næste dialog boks med et navn, ip-adresse for MySQL serveren, navnet på den database du skal bruge, brugernavn og password.

3) Så skal du bruge Microsofts ODBC.Net provider som kan hentes her:

http://msdn.microsoft.com/downloads/default.asp?URL=/downloads/sample.asp?url=/MSDN-FILES/027/001/668/msdncompositedoc.xml

4) Hvis du ikke har MDAC 2.7 installeret skal du ogsp gøre det. Den findes her:

http://www.microsoft.com/data/download_270RTM.htm

5) I din machine.config file tilføjer du følgende:

<dependentAssembly>
<assemblyIdentity name="Microsoft.Data.Odbc" publicKeyToken="b77a5c561934e089"/>
</dependentAssembly>

6) Du er nu klar til at anvende MySQL fra .Net


<%@ Page Language="VB" Debug="True" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="Microsoft.Data.ODBC" %>

<script runat="server">

  'Brug dit eget dsn navn her

  Public Sub Page_Load (obj As Object, e As EventArgs)
    If Not Page.IsPostBack Then
      Dim objConn As New ODBCConnection("DSN=mysqldsn")
      Dim objDA As New ODBCDataAdapter
      Dim dvw As DataView
      Dim ds As New DataSet

      objDA = New ODBCDataAdapter("SELECT * FROM MyTable", objConn)
      objDA.Fill(ds, "MyTable")
      dvw = ds.Tables("MyTable").DefaultView
      MyDataGrid.DataSource = dvw
      MyDataGrid.DataBind()
    End If
  End Sub

</script>

<html>
  <body>
    <asp:datagrid id="MyDataGrid" runat="server" />
  </body>
</html>
Avatar billede kichian Nybegynder
27. august 2002 - 11:20 #2
Jeg behøver ikke 200 point, så derfor ingen kode ;-)

For at bruge ODBC, skal der installeres ODBC-provider fra Microsoft:
http://msdn.microsoft.com/code/default.asp?url=/code/sample.asp?url=/msdn-files/027/001/668/msdncompositedoc.xml

Derefter er connect-streng som std. ASP.

Eksempel på OleDB findes på:
http://www.dotnet247.com/247reference/a.aspx?u=http://www.csharphelp.com/archives2/archive288.html
Avatar billede dimle Nybegynder
27. august 2002 - 11:23 #3
Et meget flot svar. Men som jeg skrev, så vil jeg meget gerne vide, hvordan det gøres vha. OLEDB. Ved du det?
Avatar billede z42cool Nybegynder
27. august 2002 - 11:46 #4
1) Installer MyOLEDB som kan findes her:

http://www.mysql.com/Downloads/Win32/MyOLEDB3.exe

<%@ Page Language="VB" Debug="True" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.OleDb" %>

<script runat="server">

  'Brug dit eget dsn navn her

  Public Sub Page_Load (obj As Object, e As EventArgs)
    If Not Page.IsPostBack Then
      Dim objConn As New OleDbConnection("Provider=MySQLProv;Data Source=localhost;Initial Catalog=MyDBName;UserID=root;Password=;")
      Dim objDA As New OleDbDataAdapter
      Dim dvw As DataView
      Dim ds As New DataSet

      objDA = New OleDbDataAdapter("SELECT * FROM MyTable", objConn)
      objDA.Fill(ds, "MyTable")
      dvw = ds.Tables("MyTable").DefaultView
      MyDataGrid.DataSource = dvw
      MyDataGrid.DataBind()
    End If
  End Sub

</script>

<html>
  <body>
    <asp:datagrid id="MyDataGrid" runat="server" />
  </body>
</html>
Avatar billede odegaard Nybegynder
27. august 2002 - 11:51 #5
Hvis du vil bruge OleDB, så skal du bruge en OLEDB provider (driver) der understøtter MySQL. Her er du sku nok på egen hånd. Måske kan følgende bruges:
http://www.mysql.com/downloads/os-win32.html
http://www.csharphelp.com/archives2/archive288.html

Med lidt held, vil jeg tro du kan bruge alle de andre OleDB eksempler der findes. Jeg gider sgu ikke sidde og teste kode mod en databaserver server jeg ikke har :-)
Nogle gange kan man ikke købe lykke for point, så du må igang med at læse :-)
Avatar billede dimle Nybegynder
27. august 2002 - 12:46 #6
z42cool - nu har jeg prøvet det som du har skrevet. Når jeg så prøver at connecte til Databasen får jeg følgende fejl:

Multiple-step OLE DB operation generated errors. Check each OLE DB status value, if available. No work was done.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.Data.OleDb.OleDbException: Multiple-step OLE DB operation generated errors. Check each OLE DB status value, if available. No work was done.

Source Error:


Line 119:           
Line 120:    Dim conn As New OleDbConnection( strMyConnect )
Line 121:    conn.Open()


Hjææææææælp!
Avatar billede z42cool Nybegynder
27. august 2002 - 14:08 #7
Hvordan ser din connection streng ud?
Avatar billede dimle Nybegynder
27. august 2002 - 14:11 #8
Den ser sådan ud:

strMyConnect="Provider=MySQLProv;
Data Source=localhost;InitialCatalog=imo;UserID=;Password=;"
Avatar billede z42cool Nybegynder
27. august 2002 - 14:19 #9
Og din MySQL server er naturligvis på samme maskine som web serveren? Jeg har ikke noget umiddelbart bud på din fejl! Er det i constructoren eller kaldet til Open at fejlen sker?
Avatar billede dimle Nybegynder
27. august 2002 - 14:27 #10
Jeg kører bare MySQLserver på den maskine jeg sidder ved (localhost). Ja- fejlen sker i Open-kaldet.
Avatar billede z42cool Nybegynder
27. august 2002 - 14:40 #11
Tjah - jeg er på bar bund, men du kan jo try - catche din conn.Open() sætning og så give dig til at nærlæse informationerne i den OleDbException der bliver kastet!
Avatar billede odegaard Nybegynder
27. august 2002 - 14:55 #12
Avatar billede dimle Nybegynder
28. august 2002 - 10:44 #13
Nu har jeg opgivet af få det til at virke med OleDB og prøver ODBC i stedet. Men det kan jeg heller ikke få til at virke. Når jeg indsætter teksten i machine.config, så kommer den og brokker sig når jeg prøver at åbne siden i browseren. Hvad er der galt?
Avatar billede jakobandersen Nybegynder
30. august 2002 - 13:09 #14
ODBC driveren til MySQL Performer også bedre end OleDb provideren når vi snakker mySQL.

For at bruge ODBC namespacet skal du enten gøre som odegaard og tilføje en dependant assembly i machine.config. Alternativt kan man i web.config lave en reference til Microsoft.Data som ligger i Global
Assembly Cache (ligger i f.eks. C:\WINNT\Assembly)
Hvis du går ind i dette dir kan du se hvilken version af Microsoft.Data du
bruger og så tilføjer du din assembly til web.config sådan her(Alle de
informationer du skal bruge kan du finde ved at åbne dit assembly dir, der
står version, token osv.):

<configuration>
  <system.web>
      <compilation debug="true">
        <assemblies>
                <add assembly="Microsoft.Data.Odbc, Version=1.0.3300.0,
Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
        </assemblies>
      </compilation>
  </system.web>
</configuration>

Herefter kunne din testside se sådan her ud:
<% @ Page Language="c#" %>
<% @Import Namespace="Microsoft.Data.Odbc" %>
<script language="c#" runat="server">
void Page_Load(){
  OdbcConnection objCon;
  OdbcCommand objCmd = new OdbcCommand();
  objCon = new OdbcConnection("driver={MySQL};server=xxx.xxx.xxx.xxx;uid=DITBRUGERNAVN;pwd=DITPASSWORD;database=DATABASENAVN;OPTION=17923");
  objCon.Open();
  objCmd.Connection = objCon;
  objCmd.CommandText = "SELECT <fieldlist> FROM <table>";
  OdbcDataReader oDataReader = objCmd.ExecuteReader(CommandBehavior.CloseConnection);
  MyDataGrid.DataSource = oDataReader;
  MyDataGrid.DataBind();
}
</script>
<ASP:DataGrid id="MyDataGrid" runat="server"  />
Avatar billede dimle Nybegynder
30. september 2002 - 13:00 #15
Tak for hjælpen men det vil ikke rigtig virke, så jeg dropper det..
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester