Avatar billede kak Nybegynder
28. september 2007 - 15:35 Der er 17 kommentarer og
2 løsninger

Problem med asp.net og MySql

Jeg har lavet en asp.net løsning, som bygger på en MS Sql server, hvilket virker fint. Men nu vil jeg lægge den om til en MySql db, og det giver lidt problemer med forbindelsen til databasen.

I min web.config har jeg disse to:

  <add name="myConnectionString" connectionString="server=localhost,3306;database=testdb;user id=test;password=test;pooling=false;"
    providerName="MySql.Data.MySqlClient" />

<add key="myConnectionString" value="Data Source=localhost,3306;database=testdb;user id=test;password=test;pooling=false;" />

Jeg forsøger at åbne databasen sådan her:

Dim myConn As Data.SqlClient.SqlConnection
myConn = New Data.SqlClient.SqlConnection(ConfigurationManager.AppSettings("myConnectionString"))
myConn.Open()

Men myconn.open() giver denne fejl:

Exception Details: System.ArgumentOutOfRangeException: Non-negative number required.
Parameter name: count

Nogle gode forslag?
Avatar billede a1a1 Novice
28. september 2007 - 16:14 #1
hvordan ser din kode ud? (og hvorfor bruger du ikke bare ms sql express))
Avatar billede a1a1 Novice
28. september 2007 - 16:19 #2
er ikke helt sikker på om .net 2.0 (ConfigurationManager.AppSettings) kun vil have en MS database

Jeg bruger selv:
<appSettings>
<add key="strConn" value="server=<min ip>; uid=sa; pwd=<hemlig>; database=<myDB>; timeout=120" />
</appSettings>

og "får" den sån..
Public strConn As String = System.Configuration.ConfigurationSettings.AppSettings("strConn")
;o)
Avatar billede kak Nybegynder
28. september 2007 - 18:01 #3
Det skal være MySql, fordi jeg skal have det hostet ude i byen.

Jeg kan ikke umiddelbart få dit forslag til at virke, men jeg er måske kommet lidt videre. På min pc (som jeg udvikler på), har jeg nu både MS Sql server og MySql server kørende.

Det ser ud til, at den kalder MS Sql serveren, selvom jeg vil have fat på den anden, så nu har jeg fået sat port=3306 ind, men det virker umiddelbart heller ikke. Men jeg skal vel heller ikke bruge Dim myConn As Data.SqlClient.SqlConnection, når jeg vil kalde MySql serveren??

Jeg har forsøgt med Imports mySql.Data.MySqlClient, men det får jeg også en fejl på :-(
Avatar billede sherlock Nybegynder
28. september 2007 - 19:00 #4
Du skal download .net-provideren fra www.mysql.com. Der er vist også eksempler med.
Avatar billede thomas_yde Nybegynder
29. september 2007 - 20:18 #5
nej du har fat i noget selv, SqlConnection er .NET egens forbindelse til en MS database, så vidt jeg ved. Men du skal istedet bruge MySQL.Data.MySqlClient.MySqlConnection. Og så skal du sikre dig, at din host tillader ,at der bliver brugt ekstra dll'er. Ellers kan du bruge en ODBC driver til at oprette en forbindelse. Som man fx skal hos www.unoeuro.com, der ellers tillader AJAX.NET :D

Desuden skal du være forsigtig med at lave den om fra mssql til mysql, da der er helt andre typer i MySQL. Så du ryger nok ind i nogle problemer her. Med mindre du har kodet det med "simple" sql queries.

En anden ting er at du burde nok bruge <connectionString> afsnittet i web.config, da den er beregnet til disse informationer. Men det er en helt anden snak :)
Avatar billede sherlock Nybegynder
02. oktober 2007 - 10:49 #6
Du skal stadigvæk downloade .net-provideren fra www.mysql.com.

MySQL.Data.MySqlClient er ikke i VS fra standard.
Avatar billede kak Nybegynder
02. oktober 2007 - 14:22 #7
Jeg har downloaded og installeret .net provideren, men jeg sidder stadig lidt fast.

Hvor og hvordan skal jeg koble .net provideren på mit projekt, så jeg kan kalde noget ala data.mysql...?
Avatar billede sherlock Nybegynder
02. oktober 2007 - 20:55 #8
Du skal have MySql.Data.dll i dit bin-directory.

Vær opmærksom på, at der ikke er komponenter til designeren. Det foregår i ren kode. men det er nu ikke så slemt.
Der findes kommercielle komponenter der indeholder det hele.

Her er en masse eksempler fra MySql.com:
http://dev.mysql.com/doc/refman/5.0/en/connector-net-examples.html
Avatar billede kak Nybegynder
03. oktober 2007 - 10:02 #9
Så virker det! Tak for hjælpen.

Jeg har både brugt noget af det som thomas_yde og sherlock har hjulpet med, så vil I begge oprette et svar, så I kan få point?!
Avatar billede sherlock Nybegynder
04. oktober 2007 - 07:58 #10
:)
Avatar billede thomas_yde Nybegynder
04. oktober 2007 - 16:29 #11
held og lykke med sitet :)
Avatar billede kaydk Nybegynder
05. oktober 2007 - 17:34 #12
hej kak jeg sidder med nøjagtig samme problem, hvad er bin-directory, jeg kan nemlig ikke finde den nogen steder, jeg har installeret connectoren.
Avatar billede sherlock Nybegynder
05. oktober 2007 - 17:57 #13
Du skal lave et dir, som hedder bin i roden på dit websted.
Avatar billede kaydk Nybegynder
05. oktober 2007 - 18:13 #14
Altså mit hjemmeside projekt bliver gemt i mappen;

C:\#PRIVAT\PROJEKTER\asp.net\LoadMySQLdata

Hertil har jeg kopieret filen "MySql.Data.dll"

Men det virker ikke?
Avatar billede kaydk Nybegynder
05. oktober 2007 - 18:15 #15
Jeg har hentet MYSQL 5.0 og installeret det sammen MYSQL administrator, herinde har jeg så oprettet en database og tabel.

Så har gået ind og hentet .NET connectoren og installeret denne.

Og så har jeg brugt noget kode som ligner #1's.
Der står også om i den guide jeg har brugt, at jeg skal kopiere MySql.Data.dll til bin-directory, men jeg ved bare ikke, hvad denne bin-directory er.
Avatar billede kaydk Nybegynder
05. oktober 2007 - 18:19 #16
Jeg bruger forresten unoeuro som host. Men lige nu vil jeg bare have det til at spille i min maskine.
Avatar billede kak Nybegynder
07. oktober 2007 - 19:39 #17
Hej kaydk.

Det er helt korrekt, at du selv skal lave en mappe der hedder bin, i roden af dit site og her placerer du filen.

Jeg har lavet en connection-string i web.config, for lettere at kunne kalde databasen forskellige steder. I <connectionStrings> afsnittet står denne her:

<add name="MYSQLConnectionString" connectionString="server=localhost;port=3306;database=minDB;user id=brugernavn;password=mitpassword;pooling=false;"
    providerName="MySql.Data.MySqlClient" />

Og i <appSettings> afsnittet står denne her:

<add key="MYSQLConnectionString" value="server=localhost;port=3306;uid=brugernavn;pwd=mitpassword;database=minDB;" />

I din .aspx fil placerer du denne her:
<%@import  namespace="mySql.Data.MySqlClient" %>


I din aspx.vb fil kan du f.eks. lave et dabasekald på denne måde:

Dim myConn As MySql.Data.MySqlClient.MySqlConnection
Dim myCmd As MySql.Data.MySqlClient.MySqlCommand
myConn = New MySql.Data.MySqlClient.MySqlConnection(ConfigurationManager.AppSettings("MYSQLConnectionString"))
myConn.Open()
myCmd = New MySql.Data.MySqlClient.MySqlCommand("select * from MinTabel;", myConn)
Dim rs As MySql.Data.MySqlClient.MySqlDataReader = myCmd.ExecuteReader()

Sådan har jeg i hvert fald fået det til at virke, så jeg håber det hjælper dig!
Avatar billede kaydk Nybegynder
07. oktober 2007 - 19:47 #18
Men så bruger du ikke ADO.NET adapter til at styre databasen?
Avatar billede kak Nybegynder
11. oktober 2007 - 18:37 #19
Nu kommer du ud i noget, jeg ikke er så stærk i :-) Men jeg bruger ikke .Net's indbyggede driver, hvis det er det du mener (kan man ikke, så vidt jeg har fået fortalt)?

Men det virker i hvert fald, med den løsning jeg har givet eksempel på.
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