Avatar billede idiotbarn Nybegynder
01. juni 2005 - 16:47 Der er 23 kommentarer og
1 løsning

ConnectionString til mySQL

Hej med jer.
Jeg sidder og roder med en mySQL database (4.0.20) og har haft lidt problemer med min connectionstring, jeg har dog fået det til at virke med:
"DRIVER={MySQL ODBC 3.51 Driver};SERVER=data.domain.com;PORT=3306;DATABASE=myDatabase; USER=myUsername;PASSWORD=myPassword;OPTION=3;"

Mit spørgsmål er, (udover jeg ikke lige ved hvorfor det er den port), er der nogen nævneværdig forskel på hvilken connectionstring jeg bruger, og ellers hvordan jeg forbinder til databasen? Jeg ville umiddelbart sige at mySqlConnection lød lidt mere logisk at bruge.

Men hvilken klasse og connectionstring ville i bruge for at få adgang til denne her database?
Avatar billede arne_v Ekspert
01. juni 2005 - 16:52 #1
det er den port fordi det er den MySQL bruger

jeg vil klart anbefale MySqlConnection fremfor OdbcConnection

connection string skal matche den connection klasse du bruger
Avatar billede arne_v Ekspert
01. juni 2005 - 16:52 #2
eksempel

    Dim con As MySqlConnection = New MySqlConnection ("Database=Test;Data Source=localhost;User Id=;Password=")
    con.Open
Avatar billede arne_v Ekspert
01. juni 2005 - 16:53 #3
eller

        MySqlConnection con = new MySqlConnection("Database=Test;Data Source=localhost;User Id=;Password=");
        con.Open();

hvis du bruger C#
Avatar billede burningice Nybegynder
01. juni 2005 - 16:56 #4
Avatar billede idiotbarn Nybegynder
01. juni 2005 - 17:30 #5
men kan man bare bruge den? Kunne ikke finde den da jeg søgte i msdn?
Avatar billede arne_v Ekspert
01. juni 2005 - 18:01 #6
nej - den skal downloades fra mysql's web site
Avatar billede arne_v Ekspert
01. juni 2005 - 18:01 #7
Avatar billede idiotbarn Nybegynder
01. juni 2005 - 22:06 #8
Jeg har ikke mulighed for at installere noget på serveren, så besluttede mig for at bare at prøve at se om den var installeret. Jeg prøvede med:
<%@ import namespace="eInfoDesigns.dbProvider.MySqlClient;"%>
Som den sagde den ikke kunne finde.

Jeg kan ikke helt sikker på om det er måden at gøre det på, da der på connectionstrings.com står med using, men det er jeg sikker på i kan fortælle mig ;)
Avatar billede arne_v Ekspert
01. juni 2005 - 22:08 #9
Fordi det er en ægte .NET provider så skal der ikke installeres noget.

MySql.Data.dll skal bare uploades til bin dir
Avatar billede arne_v Ekspert
01. juni 2005 - 22:10 #10
Og så må det være

<%@ Import Namespace="MySql.Data.MySqlClient" %>
Avatar billede arne_v Ekspert
01. juni 2005 - 22:10 #11
Og du skal muligvis have en:

<%@ Assembly Name="MySql.Data" %>

også
Avatar billede idiotbarn Nybegynder
02. juni 2005 - 19:46 #12
ok...jeg har hentet pakken uden installations filen, og uploadet :
MySql.Data.dll
MySql.Data.xml
MySql.Data.Tests
fra
mysql-connector-net-1.0.4-noinstall\bin\net-1.1\release
(har også prøvet med net-1.0)

jeg går ikke ud fra at de sidste to filer skal bruges, men de røg med alligevel. Jeg får fejlen:

Parser Error Message: File or assembly name MySql.Data, or one of its dependencies, was not found.

Source Error:
Line 1:  <%@ Page Language="C#" Debug="true" %>
Line 2:  <%@ Assembly Name="MySql.Data" %>
Line 3:  <%@ Import Namespace="MySql.Data.MySqlClient" %>

Burde det ikke kun være de filer?
Avatar billede arne_v Ekspert
02. juni 2005 - 19:52 #13
Du behøver kun dll'en

og den skal ligge i din web apps bin dir ikke samme dir som siden
Avatar billede idiotbarn Nybegynder
02. juni 2005 - 20:37 #14
Ah perfekt. Jeg bliver mere og mere glad for det her sprog :)
men hvad bruger man mere præcis web apps til? altså mappen. Den ligger i roden hvilket jeg går ud fra at er iorden.
Men nu vi er ved det, så ligger min web.config også i wwwroot, burde den ikke ligge mere sikkert?
Avatar billede arne_v Ekspert
02. juni 2005 - 20:49 #15
nu er jeg lidt desorienteret

med "din web apps" mener jeg bare "din web applikations"

har du et dir med navn web apps ?

At man bare kan kopiere dll'er (også kaldet xcopy deployment) er en af fordelene
ved .NET
Avatar billede idiotbarn Nybegynder
02. juni 2005 - 21:03 #16
i wwwroot har jeg lagt et bin bibliotek, og det virker?
Avatar billede arne_v Ekspert
02. juni 2005 - 22:41 #17
med en standard IIS opsætning: ja
Avatar billede idiotbarn Nybegynder
03. juni 2005 - 15:55 #18
Ok tak.
Det skulle foregå på samme måde med at indsætte i databasen ik? Jeg bliver ved med at få en fejl med nedenstående kode:


            MySqlConnection conn = new MySqlConnection(ConfigurationSettings.AppSettings["connectionstring"]);
            MySqlCommand cmd = new MySqlCommand("INSERT INTO Sites (SiteAddress,User,Code,TimeOffset) VALUES (@Address,@User,@Code,@TimeOffset)",conn);

            cmd.Parameters.Add(new MySqlParameter("@Address",MySqlDbType.VarChar));
            cmd.Parameters["@Address"].Value = "asdasd";
...osv.


Får fejlen:

Parameter '@Address' not found in collection

Exception Details: MySql.Data.MySqlClient.MySqlException: Parameter '@Address' not found in collection
Avatar billede arne_v Ekspert
03. juni 2005 - 16:05 #19
Der ser OK ud

Kan du ikke prøve at printe alt i cmd.Parameters ?
Avatar billede idiotbarn Nybegynder
03. juni 2005 - 16:38 #20
Address
User
Code
TimeOffset

Koden er:
void AddSite_Click(object sender, EventArgs e) {
    Page.Validate();
    if (Page.IsValid){

        String SiteAd = Request.Form["SiteAddress"];
        String Offset = Request.Form["TimeOffset"];
        Brugernavn.Text="Site: "+SiteAd;
        Kode.Text="Off: "+Offset;
        String User = SiteAd;
        int tekstLen = User.Length;

        //Strip tekst hvis adressen ender på /
            if(User.Substring(tekstLen-1).Equals("/")){
                User = User.Substring(0,User.Length-1);
            }

            //fjern http://www.
            if(User.Substring(0,11).Equals("http://www.")){
                User=User.Substring(11);
            }else{
                User=User.Substring(7);
            }

            //create a random password
            PasswordGen PW = new PasswordGen();
            String Password=PW.CreatePassword(7);

            MySqlConnection conn = new MySqlConnection(ConfigurationSettings.AppSettings["connectionstring"]);
            MySqlCommand cmd = new MySqlCommand("INSERT INTO Sites (SiteAddress,User,Code,TimeOffset) VALUES (@Address,@User,@Code,@TimeOffset)",conn);

            cmd.Parameters.Add("@Address","asds");
            cmd.Parameters.Add("@User","asdss");
            cmd.Parameters.Add("@Code","asdasds");
            cmd.Parameters.Add("@TimeOffset",1);
            for(int j=0;j<cmd.Parameters.Count;j++){
            Response.Write(cmd.Parameters[j]+"<br>");
            }

        try
        {
            conn.Open();
            cmd.ExecuteNonQuery();
        }

            catch(MySqlException exc){
            StatusSite.Text="----"+exc.Message;
            }
            finally{
            conn.Close();
            }

    }

    }


Man kan godt gøre det "inde i" en knap ik?
Avatar billede idiotbarn Nybegynder
03. juni 2005 - 17:34 #21
Filen er blevet lavet om...jeg kan slet ikke tilføje noget som helst hvis den ser således ud:


            MySqlConnection conn = new MySqlConnection(ConfigurationSettings.AppSettings["connectionstring"]);
            MySqlCommand cmd = new MySqlCommand("INSERT INTO Sites (SiteAddress,User,Code,TimeOffset) VALUES (@Address,@User,@Code,@TimeOffset)",conn);

            //cmd.Parameters.Add("@Address",SiteAd);
            //cmd.Parameters.Add("@User",User);
            //cmd.Parameters.Add("@Code",Password);
            //cmd.Parameters.Add("@TimeOffset",Int32.Parse(Offset));

            cmd.Parameters.Add(new MySqlParameter("@Address",MySqlDbType.VarChar));
            cmd.Parameters["@Address"].Value = "asdasd";
           
            cmd.Parameters.Add(new MySqlParameter("@User",MySqlDbType.VarChar));
            cmd.Parameters["@User"].Value = "asdaasdd";

            cmd.Parameters.Add(new MySqlParameter("@Code",MySqlDbType.VarChar));
            cmd.Parameters["@Code"].Value = "asdssaasd";

            cmd.Parameters.Add(new MySqlParameter("@TimeOffset",MySqlDbType.Int16));
            cmd.Parameters["@TimeOffset"].Value = 1;

for(int j=0;j<cmd.Parameters.Count;j++){
            Response.Write(cmd.Parameters[j]+" : <br>");
            }
Den siger stadig at den ikke kan tilføjes...skal jeg printe den ud på en anden måde? flytter jeg forsætningen op til lige efter MySqlCommand cmd =... printer den intet
Avatar billede idiotbarn Nybegynder
03. juni 2005 - 18:08 #22
sidste ting...Hvis jeg gør det på måden med:
cmd.Parameters.Add("@Address","asds");
kan jeg skrive både parameteren og dens værdi ud. Men fejlen er nu at:
Column 'SiteAddress' cannot be null
Avatar billede idiotbarn Nybegynder
11. juni 2005 - 14:50 #23
gør det lige i et andet spørgsmål. Svarer du, så lukker jeg. Tak for hjælpen
Avatar billede arne_v Ekspert
11. juni 2005 - 17:46 #24
svar
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