Avatar billede baitianlong Nybegynder
10. april 2005 - 14:47 Der er 16 kommentarer og
1 løsning

Connecte til MySql og putte data i selector

Jeg er meget ny med asp.net / c# , men jeg vil gerne have et eksempel på ovenstående.

Jeg har min WebForm1.aspx.cs og havde så tænkt på at smide databasefuktionaliteten over i en anden klasse og kalde metoder deri, når der skulle hentes/skrives. Jeg ved ikke om det er måden at gøre det på? Hvis det er, skal der så være en metode i min DatabaseFunc klasse, der returnerer en collection af Titler fra databasen, og i WebForm1.aspx.cs skal der være en metode, der putter resultaterne ind i DropDownListen.

På forhånd tak :)
Avatar billede burningice Nybegynder
10. april 2005 - 16:07 #1
public class Title {
  public string Name;
  public DateTime Date;
}

public class DBHandler {

  private string connString;

  public DBHandler(string connString) {
      this.connString = connString;
  }

  public Title[] GetTitles() {
      OleDbConnection conn = new OleDbConnection(this.connString);
      OleDbCommand comm = new OleDbCommand("SELECT * FROM tblTitles", conn);
      ArrayList arr = new ArrayList();

      OleDbDataReader reader = comm.ExecuteReader();
      while (reader.Read()) {
          Title t = new Title();
          t.Name = reader.GetString(0);
          t.Date = reader.GetDateTime(1);

          arr.Add(t);
      }

      reader.Close();
      conn.Close();

      return (Title[])arr.ToArray(typeof(Title));
  }
}


DBHandler handler = new DBHandler(din_connection_string);

foreach (Title t in handler.GetTitles()) {
  Response.Write(String.Format("Name: {0}, Date: {1}", t.Name, t.Date));
}
Avatar billede baitianlong Nybegynder
10. april 2005 - 16:17 #2
Det er sikkert fint nok, men jeg kan ikke umiddelbar finde ud af at bruge det. Skal Title og DBHandler være seperate klasser / filer, og skal det sidste, hvor du bruger det ind i en aspx.cs fil, eller ?!?! Lidt forklaring ville hjælpe.
Avatar billede burningice Nybegynder
10. april 2005 - 16:27 #3
har du læst noget om .Net/asp.net, f.eks. http://asp.net/Tutorials/quickstart.aspx ? Det du spørger om er meget basal viden du gerne skulle have på plads før du går videre og laver f.eks. en facadeklasse til din database.

1) der kan ligge x antal klasser i en enkelt fil, så hvor du lægger de to klasser er sådan set op til dig. Det eneste du ikke må er at splitte en klasse op i flere filer
2) Koden der opretter din facadeklasse og kalder en metode på den kan du passende lægge i din sides Load-Eventhandler (typisk Page_Load)
3) En dropdownliste understøtter databinding til normale arrays, så derfor kan du få dataerne ind i din liste ved at bruge denne kode:

DBHandler handler = new DBHandler(din_connection_string);

dinDropDownListe.DataSource = handler.GetTitles();
dinDropDownListe.DataBind();
Avatar billede baitianlong Nybegynder
10. april 2005 - 16:46 #4
Jeg får desværre en lille fejl:

An OLE DB Provider was not specified in the ConnectionString. An example would be, 'Provider=SQLOLEDB;'.

Min connstring ser sådan her ud:

connString = "DRIVER={MySQL ODBC 3.51 Driver};" +
                            "SERVER=mysql1.unoeuro.com;" +
                            "DATABASE=xxxxxxxx;" +
                            "UID=xxxxxxxx;" +
                            "PASSWORD=xxxxxxxx;" +
                            "OPTION=3";

Har du et bud på den ?
Avatar billede baitianlong Nybegynder
10. april 2005 - 16:47 #5
Jeg har prøvet et eksempel med en konsol applikation, og den kørte fint nok med samme connection string.
Avatar billede baitianlong Nybegynder
10. april 2005 - 16:58 #6
Nå, jeg har fået den fikset :) Den skulle se sådan her ud:

public Title[] GetTitles() {
    //OleDbConnection conn = new OleDbConnection(connString);
    OdbcConnection conn = new OdbcConnection(connString);
    conn.Open();
    //OleDbCommand comm = new OleDbCommand("SELECT * FROM tblTitles", conn);
    OdbcCommand comm = new OdbcCommand("SELECT * FROM tblTitles", conn);
    ArrayList arr = new ArrayList();
    //OleDbDataReader reader = comm.ExecuteReader();
    OdbcDataReader reader = comm.ExecuteReader();
    while(reader.Read()) {
        Title t = new Title();
        t.Name = reader.GetString(0);
        t.Date = reader.GetDateTime(1);
        arr.Add(t);
    }

    reader.Close();
    conn.Close();
    return (Title[]) arr.ToArray(typeof(Title));
}

Der manglede lidt ting hist og her (f.eks conn.Open()) :) Men tak for hjælpen.
Avatar billede burningice Nybegynder
10. april 2005 - 17:57 #7
:) det er hvad der kan ske når man hurtigt skriver det ned.

Hvis du bruger MySQL vil jeg anbefalde at hente deres .Net Connector istedet for at bruge Odbc - den fungerer noget bedre og hurtigere.
Avatar billede baitianlong Nybegynder
10. april 2005 - 18:43 #8
Ok, jeg prøver at kigge på det. Du skal i hvert fald have tak for hjælpen her. Der kommer nok mere senere, men min erfaring og den måde jeg har lært andre sprog på er "at kaste sig ud i det", så det gør jeg også med .net :)
Avatar billede jokkejensen Novice
11. april 2005 - 14:20 #9
Avatar billede burningice Nybegynder
11. april 2005 - 16:20 #10
jokkejensen>> nej, han skal netio IKKE bruge odbc. I så godt som alle tilfælde hvor der findes en native driver vil den være at foretrække over odbc
Avatar billede baitianlong Nybegynder
11. april 2005 - 16:26 #11
Er det noget jeg kan vælge, når jeg ikke selv har kontrol over serveren / det er webhotel ?
Avatar billede burningice Nybegynder
11. april 2005 - 16:33 #12
ja... .Net er bygget op omkring xcopy-princippet, så din driver skal ikke installeres/registreres nogen steder. Bare læg den i bin-mappen sammen med dine andre dll-filer, så spiller det.
Avatar billede baitianlong Nybegynder
11. april 2005 - 16:52 #13
okay, takker. Men jeg skal vel også ændre koden så
Avatar billede burningice Nybegynder
11. april 2005 - 16:56 #14
ja... alle steder hvor der står Odbcxxxx skal der stå MySqlxxxx

f.eks

OdbcConnection = MySqlConnection
Avatar billede jokkejensen Novice
11. april 2005 - 18:25 #15
Et side spørgsmål : hvor finder jeg lige de drivere til mysql :) jeg bruger nemlig microsoft's ?
Avatar billede burningice Nybegynder
11. april 2005 - 18:39 #16
Avatar billede baitianlong Nybegynder
11. april 2005 - 20:41 #17
tak for al din hjælp her, cyberfessor. både til mig og jokkejensen. Jeg bliver altid så rørt når brugere bliver ved med at give info selv om pointsne er faldet :) Det Kører !
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