Avatar billede torotune Nybegynder
04. juni 2006 - 00:21 Der er 10 kommentarer og
1 løsning

Access til MySql - ASP.NET 2.0

Hej,

Jeg har et site som hidtil har kørt på en Access-database. Jeg ønsker nu at skifte til MySQL, primært for at få hastigheden optimeret.

Jeg synes dog at informationerne på nettet omkring asp.net 2.0 og MySQL er noget mangelfuld – eller i hvert fald kan jeg ikke finde svar på mine spørgsmål, især da jeg er helt ny i MySQL.

Som jeg gør nu, har jeg en ConnnectionString i min web.config som denne:

  <connectionStrings>
    <add name="ConnectionString" connectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\wwwroot\website\App_Data\myDB.mdb"
      providerName="System.Data.OleDb" />
  </connectionStrings>

Og herfra henter jeg primært data via SqlDataSource:

<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:ConnectionString %>"
ProviderName="<%$ ConnectionStrings:ConnectionString.ProviderName %>"  SelectCommand="SELECT
  • FROM [Table]">
  • </asp:SqlDataSource>


    Jeg har via MySQL Migration Toolkit lavet en kopi/convert af min .MDB til MySQL, og det nemmeste ville være hvis jeg bare kunne tage min Connectionstring og lave den om så den pegede på min MySQL, men det fungerer vist ikke helt så let. Jeg har hentet MySQL Connector Net 1.0.7 ned og smider den i min ”bin”-mappe, men herfra ved jeg faktisk ikke helt hvad jeg skal gøre for at komme i kontakt med databasen.

    -    Er det en dum idé at skifte på denne måde, og kan jeg overhovedet anvende SqlDataSource på samme måde med MySQL som jeg kan med Access?
    -    På www.connectionstrings.com finder jeg under MySQL flere forskellige (myODBC og OLE DB osv.) – Hvilke/-n skal jeg bruge i mit tilfælde og hvordan? 
    -    Vil jeg komme til at skulle omskrive den syntaks mine nuværende SQL-sætninger er skrevet med – altså differentierer MySQL’s syntaks sig meget fra hvad Access forstår.

    Som sagt skriver jeg fordi jeg har svært ved at finde noget på nettet som er opdateret til asp.net 2.0, så håber der er nogle der kan hjælpe lidt med noget lærdom :-)

    Mvh.
    Avatar billede arne_v Ekspert
    04. juni 2006 - 00:23 #1
    Har du prøvet at rette connection string til og se hvad der sker ?
    Avatar billede torotune Nybegynder
    04. juni 2006 - 00:47 #2
    Som jeg prøver det nu får jeg en:

    "Unable to find the requested .Net Framework Data Provider.  It may not be installed."

    I min codebehind til min form har jeg

    Imports MySql.Data
    Imports MySql.Data.MySqlClient
    Imports MySql.Data.Types 

    Min ConnectionString ser således ud:

    <connectionStrings>
      <add name="ConnectionString" connectionString="server=localhost; user id=root; password=pass; database=mysqldb; pooling=false;"
      providerName="MySql.Data.MySqlClient" />
    </connectionStrings>

    Min SqlDataSource:

    <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:ConnectionString %>"
    ProviderName="<%$ ConnectionStrings:ConnectionString.ProviderName %>"  SelectCommand="SELECT * FROM Table WHERE ID = 1">
    </asp:SqlDataSource>
    Avatar billede snepnet Nybegynder
    04. juni 2006 - 09:55 #3
    Har du kigget her:
    http://bugs.mysql.com/bug.php?id=16126

    Jeg har ikke selv prøvet den, men det her er måske noget (måske arne kender noget til den):
    http://www.crlab.com/mysqlnet/download.html

    Mvh
    Avatar billede torotune Nybegynder
    04. juni 2006 - 11:36 #4
    Hej Snepnet - udfra dit første link kan jeg ikke rigtig finde ud af om der bliver konkluderet at SqlDataSource simpelthen ikke fungerer sammenhæng med MySql?
    Eller om man på en eller anden måde skal smide DbProviderFactory ind i web.config.

    Jeg har afprøvet dette eksempel med MySQL og ObjectDataSource her, for at se om det overhovedet kan fungere:

    http://www.codeproject.com/aspnet/MySQLCsharp.asp

    - Det virker upåklageligt og det kun med "Imports MySql.Data.MySqlClient".

    Men burde man så ikke også kunne bruge det sammen med SqlDataSource uden brug af 3. parts providere som dem fra Crlab?
    Avatar billede snepnet Nybegynder
    04. juni 2006 - 12:16 #5
    Du kan benytte objectdatasource til hvad som helst - så at det virker med det indikerer ikke andet end at objectdatasource virker... Det har ikke noget med MySql at gøre.

    Hvis du skal have det til at fungere med sqldatasource, skal du lave din egen providerfactory som Emanuele foreslår. Alternativt skal du benytte en anden provider end MySqlConnector, der understøtter det direkte (som den MySqlDirect jeg henviste til... Jeg ved ikke om der er flere).

    Men bortset fra det, så synes jeg en objectdatasource, og nogle fornuftige klasser ville være at foretrække på sigt - fremfor at benytte en sqldatasource.

    Mvh
    Avatar billede torotune Nybegynder
    04. juni 2006 - 15:01 #6
    Okay, jeg bør nok overveje din sidste løsning og så få det bundet op på objekter i stedet for direkte på databasen.

    Jeg sidder og roder med at få min MySQL Database uploadet på webhotel. Når den er lagt op/importeret kan jeg se den og tilgå den via phpmyadmin. Her har jeg dog problemer med at oprette stored procedures. Det er som om phpmyadmin ikke tillader det.

    Ved I om det er muligt i stedet at tilgå min database via MySQL Administrator på en remote forbindelse?
    Avatar billede snepnet Nybegynder
    04. juni 2006 - 15:11 #7
    Hvis du vil tilgå din database med andet end webinterfacet, skal din host formentlig lukke op for en port for dig.
    Mvh
    Avatar billede torotune Nybegynder
    04. juni 2006 - 21:26 #8
    Okay, det prøver jeg lige at bede dem om :-)

    Efter hvad man kan læse ud af de fora der er på mysql.com er folk generelt meget utilfredse med den måde MySQL kører sammen med den nye version af .NET, og flere overvejer at bruge/beholde/skifte tilbage til MS SQL Server i VS2005, da tiden brugt på at bøvle med MySQL opvejer hvad det vil koste at investere i MS SQL Server. 

    Men er det fordi vi skal vente et par måneder endnu og se om der dukker bedre løsninger op, eller købe adgang til 3. parts løsninger som CrLab's eller simpelthen overveje om det bedre kan betale sig at anvende MS SQL Server?
    Avatar billede snepnet Nybegynder
    04. juni 2006 - 21:58 #9
    En MS Sql 2005 Express er gratis, og understøtter datamængder på op til 4GB, så det er ikke fordi det nødvendigvis kommer til at koste dig penge.
    MySqlConnector er jo sådan set (i .net sammenhæng) et 3. parts produkt, men det betyder jo ikke at det nødvendigvis er det bedste... Jeg har selv været glad for at bruge det, men MySqlDirect er så kommet i en 2.0 version, hvorimod MySqlConnector ikke ser ud til at være kommet i en sådan (hvilket jo nok skal ske).
    Mvh
    Avatar billede torotune Nybegynder
    09. juni 2006 - 01:58 #10
    Okay, jeg venter lidt og håber på der snart kommer en MySqlConnector i 2.0.. Indtil da må jeg droppe) at bruge SqlDataSource og så lave det via ObjectDataSource.

    Problemet med stored procedures viste sig ikke at være phpmyadmin, men det at mit webhotel stadig kører med MySQL 4.et eller andet. Det understøttes først i version 5. :-/

    Men mange tak for forklaringerne/hjælpen og smid endelig et svar :-)
    Avatar billede snepnet Nybegynder
    09. juni 2006 - 16:15 #11
    Ok - det kommer her :o)
    Mvh
    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