Avatar billede torotune Nybegynder
25. marts 2006 - 17:45 Der er 23 kommentarer og
1 løsning

MySql og ASP.NET 2.0

Hej,

Jeg har ledt lidt på google for at finde nogle eksempler med MysSql og ASP.NET 2.0. Jeg vil gerne skifte fra Access over til MySQL og bruge MySQL i Visual Web Developer Express 2005 i Database Explorer. Jeg har læst mig frem til at jeg skal have en connection i min web.config som jeg kan kalde når som helst. - men hvordan er det lettest at gøre?

- Nogen der kan hjælpe mig lidt på vej, eller med et link til noget på nettet.
- Hvordan køber jeg i øvrigt Visual Web Developer Express?

Mvh. :-)
Avatar billede dj_uncas Nybegynder
25. marts 2006 - 17:54 #1
1. Du bør kigge lidt på MySql's egen Connector/Net som er et API med en masse klasser til at forbinde til MySql.

2. Visual Web Developer Express er gratis! (i et år fra november)
http://msdn.microsoft.com/vstudio/express/vwd/

Jeg tror ikke du kan få lov til at bruge Database Explorer med MySql, ikke uden noget tredjeparts software, men det kender jeg ikke noget til..
Avatar billede dj_uncas Nybegynder
25. marts 2006 - 17:55 #2
Avatar billede torotune Nybegynder
25. marts 2006 - 18:25 #3
Hej!

Okay, vidst ikke at VWD havde en så lang prøveperiode, jeg regnede med at man skulle betale for den registry key der bliver efterspurgt efter en måned. - Så kan jeg da prøve den lidt endnu :-)

Tak for linksne, det var noget i den stil jeg søgte, nu må jeg se om jeg kan finde ud af at skrue det sammen, ellers spørger jeg her :-)

Alle de eksempler jeg kan finde på nettet og i bøger er med SQLServer, men der er måske ikke meget til forskel på den måde man forbinder til en MySQL-database på. - Altså ved at opsætte configurationen i web.config under connectionStrings, og så kalde den hver gang man skal bruge en connection?
Avatar billede dj_uncas Nybegynder
25. marts 2006 - 18:32 #4
Nej, der er ikke den store forskel i .NET på SQL Server og MySQL..

Jeg har tidligere lavet et lille eksempel på at indsætte/opdatere data i MySQL med .NET:
http://aoa.dk/demo/DotNetDatabase.html

Jeg starter med at lave en SELECT, så den del ser du også ;-)
Avatar billede da9el Nybegynder
25. marts 2006 - 23:33 #5
12.     Do customers who acquire the Visual Studio Express products during the free promotional pricing period have to pay after the first year if they want to continue to use them?
   

No, as long as you download Visual Studio Express on or before November 7th 2006, you will not have to pay for it.

Kilde: http://msdn.microsoft.com/vstudio/express/support/faq/

:)
Avatar billede torotune Nybegynder
26. marts 2006 - 01:05 #6
Hmm... - Så det er altså free at all? Godt nok hvis det er, men havde dog ikke noget imod at betale de små 49$ for det når det er så effektivt og smart (skal så lige have lært at bruge det fuldt ud) :-)
Avatar billede torotune Nybegynder
26. marts 2006 - 01:10 #7
Forresten nogen der kender til MySQL Migration Tool? Altså hvis jeg skal konvertere min Access til MySql, så spørger den efter en Connection ved både "Source Database" (Access) og "output database" (MySql). Hvad er det? 'Localhost' virker ikke helt..
Avatar billede torotune Nybegynder
26. marts 2006 - 01:13 #8
Under Access spørger den efter "Stored Connection"
Avatar billede torotune Nybegynder
26. marts 2006 - 14:32 #9
Jeg tror jeg fandt løsningen på det sidste her, men jeg har et problem når jeg skal prøve at teste min database jeg har oprettet via denne side:
(Kilde: http://www.15seconds.com/issue/050407.htm)

<%@ Page Language="VB" debug="true" %>
<%@ Import Namespace = "System.Data" %>
<%@ Import Namespace = "MySql.Data.MySqlClient" %>
<script language="VB" runat="server">

Sub Page_Load(sender As Object, e As EventArgs)

    Dim myConnection  As MySqlConnection
    Dim myDataAdapter As MySqlDataAdapter
    Dim myDataSet    As DataSet

    Dim strSQL        As String
    Dim iRecordCount  As Integer

    myConnection = New MySqlConnection("server=localhost; user id=15secs; password=password; database=mydatabase; pooling=false;")

    strSQL = "SELECT * FROM mytable;"

    myDataAdapter = New MySqlDataAdapter(strSQL, myConnection)
    myDataSet = New Dataset()
    myDataAdapter.Fill(myDataSet, "mytable")

    MySQLDataGrid.DataSource = myDataSet
    MySQLDataGrid.DataBind()

End Sub

</script>

<html>
<head>
<title>Simple MySQL Database Query</title>
</head>
<body>

<form runat="server">

<asp:DataGrid id="MySQLDataGrid" runat="server" />

</form>

</body>
</html>

Paster jeg den kode ind VWD sætter den en fejl ved Namespace = "MySql.Data.MySqlClient". - "Cannot be found".

- Tror scriptet er skrevet til version 1.1 - Hvordan vil det tilsvarende se ud i 2.0?
Avatar billede dj_uncas Nybegynder
26. marts 2006 - 14:56 #10
Problemet her er at du ikke har MySql.Data assembly'en. Den skal du downloade og ligge i din /bin/ mappe..
Avatar billede torotune Nybegynder
26. marts 2006 - 15:21 #11
Ah ja, selvfølgelig! Det er jo det han også skriver derinde!
Nu kan jeg komme i kontakt med DB'en fra siden :-)
Avatar billede torotune Nybegynder
26. marts 2006 - 16:02 #12
Men kan jeg så definere den ConnectionString i min web.config, noget á la:

<connectionStrings>
        <add name="MyConnectionString" connectionString="server=localhost; user id=root; password=password; database=mysqlDatabase; pooling=false;"
          providerName="MySQL.Data.MySQLClient" />
</connectionStrings>

Og så kalde den fra et GridView ved at sige eksempelvis:

  <asp:SqlDataSource ID="mySqlDataSource" runat="server"
    ConnectionString="MyConnectionString"
    SelectCommand="SELECT * FROM MyTable"/>
  <asp:GridView ID="myGridView" DataSourceID="mySqlDataSource" runat="server" />

Ovenstående giver mig en fejl:
"Format of the initialization string does not conform to specification starting at index 0."
)
Avatar billede torotune Nybegynder
26. marts 2006 - 18:07 #13
Hvis jeg prøver at følge instruktionerne herfra:
http://www.asp.net/QuickStart/aspnet/doc/data/databases.aspx#connstrings

Hvor der er et eksempel med SQL Server, og retter det til nedenstående som gerne skulle passe til MySql:   

I web.config:

<connectionStrings>
        <add name="Pubs" connectionString="server=localhost; user id=root; password=password; database=mysqldb; pooling=false;"
        providerName="MySQL.Data.MySQLClient" />
  </connectionStrings>

  <system.data>
    <DbProviderFactories>   
      <add name="MySQL Data Provider" invariant="MySQL.Data.MySQLClient" type="MySQL.Data.MySQLClient.MySqlClientFactory, ..."/>
    </DbProviderFactories>
  </system.data>

Og hente data på en side med:

<form id="Form1" runat="server">
  <asp:GridView ID="GridView1" DataSourceID="SqlDataSource1" runat="server"/>
  <asp:SqlDataSource ID="SqlDataSource1" runat="server"
    SelectCommand="SELECT * FROM MyTable"
    ConnectionString="<%$ ConnectionStrings:Pubs %>" />
</form>

Får jeg en "Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding."

Hvad er der galt her?
Avatar billede dj_uncas Nybegynder
26. marts 2006 - 18:53 #14
Min første reaktion er at MySql.Data.MySqlClient ikke er en provider, men et API. En provider er en klasse du selv laver som nedarver fra "Provider" som .NET stiller til rådighed..
Avatar billede torotune Nybegynder
26. marts 2006 - 19:17 #15
Hmm.. Jeg fandt det i denne tråd hvor en bruger siger han bruger det i hans web.config:

http://forums.asp.net/1224853/ShowPost.aspx
Avatar billede torotune Nybegynder
26. marts 2006 - 19:20 #16
I eksemplerne fra asp.net-QuickStart bruges der

providerName="System.Data.SqlClient" />

ved en SQLExpress ConnectionString.
Avatar billede dj_uncas Nybegynder
26. marts 2006 - 19:21 #17
ok, så er der inkonsistensen mellem providerName i din connectionstring og name i din DbProviderFactory. Jeg går ud fra at providerName skal være det du har kaldt din provider længere nede?
Avatar billede torotune Nybegynder
26. marts 2006 - 19:32 #18
Jeg forstår ikke helt - altså fordi de ikke begge hedder "Pubs" ?
Avatar billede dj_uncas Nybegynder
26. marts 2006 - 19:36 #19
Nej fordi du har:
<add name="MySQL Data Provider"

men vil bruge en anden:
providerName="MySQL.Data.MySQLClient"

Lige dette punkt er ikke noget jeg har nogen erfaring med, men jeg ville gå ud fra at det element du tilføjer (add) skal have det "name" som du kalder med providerName
Avatar billede torotune Nybegynder
26. marts 2006 - 19:52 #20
Ok, så jeg skal sætte dem lig hinanden:

<connectionStrings>
        <add name="Pubs" connectionString="server=localhost; user id=root; password=password; database=mysqldb; pooling=false;"
        providerName="MySQL.Data.MySQLClient" />
  </connectionStrings>

  <system.data>
    <DbProviderFactories>   
      <add name="MySQL.Data.MySQLClient" invariant="MySQL.Data.MySQLClient" type="MySQL.Data.MySQLClient.MySqlClientFactory, ..."/>
    </DbProviderFactories>
  </system.data>

- Det giver dog stadig ikke hul igennem.
Avatar billede dj_uncas Nybegynder
26. marts 2006 - 20:05 #21
Jeg så lige noget i stil med at sætte
providerName="<%$ ConnectionStrings:ConnectionStringName.ProviderName %>"

fra denne artikel:
http://aspnet.4guysfromrolla.com/articles/022206-1.aspx
Avatar billede torotune Nybegynder
26. marts 2006 - 21:02 #22
Dvs. så jeg får min GridView til at se nogenlunde således ud:

<form id="Form1" runat="server">
  <asp:GridView ID="GridView1" DataSourceID="SqlDataSource1" runat="server"/>
  <asp:SqlDataSource ID="SqlDataSource1" runat="server"
    ConnectionString="<%$ ConnectionStrings:Pubs %>"
    ProviderName="<%$ ConnectionStrings:Pubs.ProviderName %>"
    SelectCommand="SELECT * FROM MyTable"/>
</form>
Avatar billede torotune Nybegynder
30. marts 2006 - 09:14 #23
Hej, jeg tror jeg åbner et nyt spørgsmål med connectionstring da jeg sidder lidt fast. - Men smid du blot et svar for din hjælp, da du har ledt mig godt på vej :-)
Avatar billede dj_uncas Nybegynder
30. marts 2006 - 09:33 #24
All right :-)
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