Avatar billede flvind Nybegynder
10. januar 2006 - 23:40 Der er 18 kommentarer og
1 løsning

indlæse mysql database og vise resultater

Hej jeg har siddet og kigget noget på de eksempler der findes med hvorledes man indlæser data fra en mysql database til c#, men har ikke fundet noget eksempel jeg kan bruge.

Jeg har en mysql database bestående af flere forskellige tabeller og jeg vil derfor gerne have oprettet en forbindelse til database således at jeg ved tryk på forskellige knapper kan få vist hvad de forskellige tabeller i databasen indeholder.

Jeg har 4 tabeller der indeholder stort set de samme attributter:
shop
overnat
attraktion
spise
De fire tabeller har kolonnerne
id, navn, adresse, sted, postnummer, telefon og beskrivelse.

jeg vil derfor gerne have oprette en listbox hvor resultatet kan vises og fire knapper en for hver tabel.

Nogen der kan hjælpe mig???
Avatar billede alex_sleiborg Nybegynder
11. januar 2006 - 09:56 #1
Altså en listview box? Skal det så laves som tabpages? Eller hvad havde du tænkt dig
Avatar billede flvind Nybegynder
11. januar 2006 - 10:42 #2
problemet er at jeg har en række tabeller i en mysql database som jeg ønsker at have mulighed for at vise og redigere ved hjælp af c#
måden de blive vist på behøver ikke at være en listbox
Avatar billede testpilot_dk Nybegynder
11. januar 2006 - 10:53 #3
Du skal bruge en side, hvor du har et datagrid på!

Det er forholdsvis nemt!

Du bør hente mysql connector.net og installere denne og så tilføje den som reference i dit projekt!

Når dette er gjort er det bare om at lave en mysql connection string som kalder din database med en aktuel bruger og password!

med hensyn til datagriddet kan du kigge på følgende side
http://samples.gotdotnet.com/quickstart/aspplus/samples/webforms/ctrlref/webctrl/datagrid/doc_datagrid.aspx
Avatar billede flvind Nybegynder
11. januar 2006 - 11:11 #4
det hjalp mig ikke det store da jeg skal bruge det til en windows form
Avatar billede alex_sleiborg Nybegynder
11. januar 2006 - 11:13 #5
Hvis du kan vente et par timer, så kan jeg godt lave et eksempel
Avatar billede testpilot_dk Nybegynder
11. januar 2006 - 11:14 #6
Datagrids fungere også fint på hjemmesider, eller har jeg misset noget om at du ikke vil have det til at virke under windows, men under mono
Avatar billede flvind Nybegynder
11. januar 2006 - 11:15 #7
det ville være kanon

jeg benytter visual studio c# 2003 standard
mysql.data til at connecte til databasen
Avatar billede flvind Nybegynder
11. januar 2006 - 11:21 #8
problemet er at jeg skal udvikle en windows applikation der kan scanne et XML dokument ind i en mysql database hvorfra jeg så kan udlæse informationerne.
jeg forsøger derfor at oprette et eksempel som jeg så kan arbejde videre med. hvis jeg har basis funktionerne til at virke kommer det andet nok.
Avatar billede testpilot_dk Nybegynder
11. januar 2006 - 11:24 #9
jeg har ingen anelse om hvordan xml skal indslæses i databsen! så den lader jeg alex om
Avatar billede alex_sleiborg Nybegynder
11. januar 2006 - 12:52 #10
Her er et eksempel, det er godt nok kun den ene tabel der er vist her. Men princippet er jo det samme

using System;
using System.Collections.Generic;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace MysqlTestApp
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            DataGateway.GetAll();
            ArrayList list = DataGateway.GetAll();
            foreach (Person r in list)
            {
                System.Windows.Forms.ListViewItem listViewItem1 = new System.Windows.Forms.ListViewItem(new string[] {r.F1.ToString(), r.F2, r.F3, r.F4, r.F5.ToString(), r.F6.ToString(), r.F7,}, -1);
                this.listView1.Items.Add(listViewItem1);

            }
        }
    }
    public class Person
    {
        private int f1;
        private string f2;
        private string f3;
        private string f4;
        private int f5;
        private int f6;
        private string f7;
        public Person()
            : this(0, "", "", "", 0, 0, "")
        {
        }
        public Person(int f1, string f2, string f3, string f4, int f5, int f6, string f7)
        {
            this.f1 = f1;
            this.f2 = f2;
            this.f3 = f3;
            this.f4 = f4;
            this.f5 = f5;
            this.f6 = f6;
            this.f7 = f7;
        }
        public int F1
        {
            get
            {
                return f1;
            }
            set
            {
                f1 = value;
            }
        }
        public string F2
        {
            get
            {
                return f2;
            }
            set
            {
                f2 = value;
            }
        }
        public string F3
        {
            get
            {
                return f3;
            }
            set
            {
                f3 = value;
            }
        }
        public string F4
        {
            get
            {
                return f4;
            }
            set
            {
                f4 = value;
            }
        }
        public int F5
        {
            get
            {
                return f5;
            }
            set
            {
                f5 = value;
            }
        }
        public int F6
        {
            get
            {
                return f6;
            }
            set
            {
                f6 = value;
            }
        }
        public string F7
        {
            get
            {
                return f7;
            }
            set
            {
                f7 = value;
            }
        }
    }
    public class DataGateway
    {
        public static ArrayList GetAll()
        {
            try
            {
                string MyConnection = "server=127.0.0.1;uid=root;" +
                    "pwd=pass;database=test;";

                MySql.Data.MySqlClient.MySqlConnection con;
                con = new MySql.Data.MySqlClient.MySqlConnection();
                con.ConnectionString = MyConnection;

                con.Open();
                MySql.Data.MySqlClient.MySqlCommand com = new MySql.Data.MySqlClient.MySqlCommand("SELECT id,navn,adresse,sted,postnr,telefon, beskrivelse FROM shop", con);
                ArrayList list = new ArrayList();
                MySql.Data.MySqlClient.MySqlDataReader rdr = com.ExecuteReader();
                while (rdr.Read())
                {
                    list.Add(new Person((int)rdr[0], (string)rdr[1], (string)rdr[2], (string)rdr[3], (int)rdr[4], (int)rdr[5], (string)rdr[6]));
                }
                rdr.Close();
                con.Close();
                return list;
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
                return null;
            }
        }
    }
}
Avatar billede flvind Nybegynder
11. januar 2006 - 13:00 #11
Hej jeg regner med at det skulle være muligt at kopiere koden og så compile den, men jeg får følgende fejl på partial "C:\Documents and Settings\Flemming\My Documents\Visual Studio Projects\WindowsApplication1\Form1.cs(12): Expected class, delegate, enum, interface, or struct"

hvad gør jeg galt??
Avatar billede alex_sleiborg Nybegynder
11. januar 2006 - 13:06 #12
Det er ikke alt kildekoden der er der. Jeg har lavet det i vs 2005, og du bruger 2003?

Tag de 2 klasser DataGateway og Person, og smid nederst i din form1.cs

Så skal du have tilføjet en listview fra din toolbox. Og så dobbelt klik på din form, så du laver en event når du starter dit program.

og put det her ind
DataGateway.GetAll();
            ArrayList list = DataGateway.GetAll();
            foreach (Person r in list)
            {
                System.Windows.Forms.ListViewItem listViewItem1 = new System.Windows.Forms.ListViewItem(new string[] {r.F1.ToString(), r.F2, r.F3, r.F4, r.F5.ToString(), r.F6.ToString(), r.F7,}, -1);
                this.listView1.Items.Add(listViewItem1);
Avatar billede flvind Nybegynder
11. januar 2006 - 13:18 #13
Hej nu ser min kode sådan ud, men det virker stadig ikke. det stadig den samme fejl med partial

using System;
using System.Collections.Generic;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace MysqlTestApp
{
    public partial class Form1 : Form
    {
    private System.Windows.Forms.ListView listView1;
   
public Form1()
                      {
                          InitializeComponent();
                      }

                      private void Form1_Load(object sender, EventArgs e)
                      {
                          DataGateway.GetAll();
                          ArrayList list = DataGateway.GetAll();
                          foreach (Person r in list)
                          {
                              System.Windows.Forms.ListViewItem listViewItem1 = new System.Windows.Forms.ListViewItem(new string[] {r.F1.ToString(), r.F2, r.F3, r.F4, r.F5.ToString(), r.F6.ToString(), r.F7,}, -1);
                              this.listView1.Items.Add(listViewItem1);

                          }
                      }

                      private void InitializeComponent()
                      {
                          this.listView1 = new System.Windows.Forms.ListView();
                          this.SuspendLayout();
                          //
                          // listView1
                          //
                          this.listView1.Location = new System.Drawing.Point(24, 112);
                          this.listView1.Name = "listView1";
                          this.listView1.TabIndex = 0;
                          //
                          // Form1
                          //
                          this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
                          this.ClientSize = new System.Drawing.Size(292, 273);
                          this.Controls.Add(this.listView1);
                          this.Name = "Form1";
                          this.Load += new System.EventHandler(this.Form1_Load_1);
                          this.ResumeLayout(false);

                      }

                      private void Form1_Load_1(object sender, System.EventArgs e)
                      {
                          DataGateway.GetAll();
                          ArrayList list = DataGateway.GetAll();
                          foreach (Person r in list)
                          {
                              System.Windows.Forms.ListViewItem listViewItem1 = new System.Windows.Forms.ListViewItem(new string[] {r.F1.ToString(), r.F2, r.F3, r.F4, r.F5.ToString(), r.F6.ToString(), r.F7,}, -1);
                              this.listView1.Items.Add(listViewItem1);
                          }
                      }
                      public class Person
                      {
                          private int f1;
                          private string f2;
                          private string f3;
                          private string f4;
                          private int f5;
                          private int f6;
                          private string f7;
                          public Person()
                              : this(0, "", "", "", 0, 0, "")
                          {
                          }
                          public Person(int f1, string f2, string f3, string f4, int f5, int f6, string f7)
                          {
                              this.f1 = f1;
                              this.f2 = f2;
                              this.f3 = f3;
                              this.f4 = f4;
                              this.f5 = f5;
                              this.f6 = f6;
                              this.f7 = f7;
                          }
                          public int F1
                          {
                              get
                              {
                                  return f1;
                              }
                              set
                              {
                                  f1 = value;
                              }
                          }
                          public string F2
                          {
                              get
                              {
                                  return f2;
                              }
                              set
                              {
                                  f2 = value;
                              }
                          }
                          public string F3
                          {
                              get
                              {
                                  return f3;
                              }
                              set
                              {
                                  f3 = value;
                              }
                          }
                          public string F4
                          {
                              get
                              {
                                  return f4;
                              }
                              set
                              {
                                  f4 = value;
                              }
                          }
                          public int F5
                          {
                              get
                              {
                                  return f5;
                              }
                              set
                              {
                                  f5 = value;
                              }
                          }
                          public int F6
                          {
                              get
                              {
                                  return f6;
                              }
                              set
                              {
                                  f6 = value;
                              }
                          }
                          public string F7
                          {
                              get
                              {
                                  return f7;
                              }
                              set
                              {
                                  f7 = value;
                              }
                          }
                      }
                      public class DataGateway
                      {
                          public static ArrayList GetAll()
                          {
                              try
                              {
                                  string MyConnection = "server=127.0.0.1;uid=root;" +
                                      "pwd=pass;database=test;";

                                  MySql.Data.MySqlClient.MySqlConnection con;
                                  con = new MySql.Data.MySqlClient.MySqlConnection();
                                  con.ConnectionString = MyConnection;

                                  con.Open();
                                  MySql.Data.MySqlClient.MySqlCommand com = new MySql.Data.MySqlClient.MySqlCommand("SELECT id,navn,adresse,sted,postnr,telefon, beskrivelse FROM shop", con);
                                  ArrayList list = new ArrayList();
                                  MySql.Data.MySqlClient.MySqlDataReader rdr = com.ExecuteReader();
                                  while (rdr.Read())
                                  {
                                      list.Add(new Person((int)rdr[0], (string)rdr[1], (string)rdr[2], (string)rdr[3], (int)rdr[4], (int)rdr[5], (string)rdr[6]));
                                  }
                                  rdr.Close();
                                  con.Close();
                                  return list;
                              }
                              catch (Exception ex)
                              {
                                  MessageBox.Show(ex.Message);
                                  return null;
                              }
                          }
                      }
                  }
}
Avatar billede pidgeot Nybegynder
11. januar 2006 - 13:25 #14
VS 2003 understøtter ikke partial classes, og derfor brokker den sig. Dvs. du enten skal opgradere til 2005, få Form1.Designer.cs fra alex_sleiborg og flette de to ting sammen, eller selv oprette de controls der skal bruges og så fylde den kode du har fået ind de passende steder.
Avatar billede alex_sleiborg Nybegynder
11. januar 2006 - 13:37 #15
Her er komplet kildekode. Jeg har kompilet den fra konsolen, med denne build kommando

csc /reference:stien_på_din_mysql.data.dll test.cs

using System;
using System.Collections.Generic;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;


namespace MysqlTestApp
{
    public partial class Form1 : Form
    {
   
    //private System.Windows.Forms.ListView listView1;
   
public Form1()
                      {
                          InitializeComponent();
                      }

                      private void Form1_Load(object sender, EventArgs e)
                      {
                          ArrayList list = DataGateway.GetAll();
                          foreach (Person r in list)
                          {
                              System.Windows.Forms.ListViewItem listViewItem1 = new System.Windows.Forms.ListViewItem(new string[] {r.F1.ToString(), r.F2, r.F3, r.F4, r.F5.ToString(), r.F6.ToString(), r.F7,}, -1);
                              this.listView1.Items.Add(listViewItem1);

                          }
                      }

                      private void InitializeComponent()
                      {
                            this.listView1 = new System.Windows.Forms.ListView();
            this.clmID = new System.Windows.Forms.ColumnHeader();
            this.clmNAME = new System.Windows.Forms.ColumnHeader();
            this.clmADRESS = new System.Windows.Forms.ColumnHeader();
            this.clmLOCATION = new System.Windows.Forms.ColumnHeader();
            this.clmPOSTNR = new System.Windows.Forms.ColumnHeader();
            this.clmPHONE = new System.Windows.Forms.ColumnHeader();
            this.clmOTHER = new System.Windows.Forms.ColumnHeader();
            this.SuspendLayout();
            //
            // listView1
            //
            this.listView1.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
            this.clmID,
            this.clmNAME,
            this.clmADRESS,
            this.clmLOCATION,
            this.clmPOSTNR,
            this.clmPHONE,
            this.clmOTHER});
            this.listView1.GridLines = true;
            this.listView1.Location = new System.Drawing.Point(57, 46);
            this.listView1.Name = "listView1";
            this.listView1.Size = new System.Drawing.Size(489, 307);
            this.listView1.TabIndex = 0;
            this.listView1.UseCompatibleStateImageBehavior = false;
            this.listView1.View = System.Windows.Forms.View.Details;
            //
            // clmID
            //
            this.clmID.Text = "ID";
            this.clmID.Width = 40;
            //
            // clmNAME
            //
            this.clmNAME.Text = "Navn";
            this.clmNAME.Width = 80;
            //
            // clmADRESS
            //
            this.clmADRESS.Text = "Adresse";
            this.clmADRESS.Width = 80;
            //
            // clmLOCATION
            //
            this.clmLOCATION.Text = "Sted";
            this.clmLOCATION.Width = 80;
            //
            // clmPOSTNR
            //
            this.clmPOSTNR.Text = "Post Nr";
            this.clmPOSTNR.Width = 40;
            //
            // clmPHONE
            //
            this.clmPHONE.Text = "Telefon";
            this.clmPHONE.Width = 65;
            //
            // clmOTHER
            //
            this.clmOTHER.Text = "Beskrivelse";
            this.clmOTHER.Width = 100;
            //
            // Form1
            //
            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
            this.ClientSize = new System.Drawing.Size(605, 483);
            this.Controls.Add(this.listView1);
            this.Name = "Form1";
            this.Text = "Form1";
            this.Load += new System.EventHandler(this.Form1_Load);
            this.ResumeLayout(false);
                      }
                      private System.Windows.Forms.ListView listView1;
        private System.Windows.Forms.ColumnHeader clmID;
        private System.Windows.Forms.ColumnHeader clmNAME;
        private System.Windows.Forms.ColumnHeader clmADRESS;
        private System.Windows.Forms.ColumnHeader clmLOCATION;
        private System.Windows.Forms.ColumnHeader clmPOSTNR;
        private System.Windows.Forms.ColumnHeader clmPHONE;
        private System.Windows.Forms.ColumnHeader clmOTHER;
                      static void Main()
    {
        Application.Run(new Form1());
    }

                      private void Form1_Load_1(object sender, System.EventArgs e)
                      {
                          DataGateway.GetAll();
            ArrayList list = DataGateway.GetAll();
            foreach (Person r in list)
            {
                System.Windows.Forms.ListViewItem listViewItem1 = new System.Windows.Forms.ListViewItem(new string[] {r.F1.ToString(), r.F2, r.F3, r.F4, r.F5.ToString(), r.F6.ToString(), r.F7,}, -1);
                this.listView1.Items.Add(listViewItem1);

            }
                      }
                      public class Person
                      {
                          private int f1;
                          private string f2;
                          private string f3;
                          private string f4;
                          private int f5;
                          private int f6;
                          private string f7;
                          public Person()
                              : this(0, "", "", "", 0, 0, "")
                          {
                          }
                          public Person(int f1, string f2, string f3, string f4, int f5, int f6, string f7)
                          {
                              this.f1 = f1;
                              this.f2 = f2;
                              this.f3 = f3;
                              this.f4 = f4;
                              this.f5 = f5;
                              this.f6 = f6;
                              this.f7 = f7;
                          }
                          public int F1
                          {
                              get
                              {
                                  return f1;
                              }
                              set
                              {
                                  f1 = value;
                              }
                          }
                          public string F2
                          {
                              get
                              {
                                  return f2;
                              }
                              set
                              {
                                  f2 = value;
                              }
                          }
                          public string F3
                          {
                              get
                              {
                                  return f3;
                              }
                              set
                              {
                                  f3 = value;
                              }
                          }
                          public string F4
                          {
                              get
                              {
                                  return f4;
                              }
                              set
                              {
                                  f4 = value;
                              }
                          }
                          public int F5
                          {
                              get
                              {
                                  return f5;
                              }
                              set
                              {
                                  f5 = value;
                              }
                          }
                          public int F6
                          {
                              get
                              {
                                  return f6;
                              }
                              set
                              {
                                  f6 = value;
                              }
                          }
                          public string F7
                          {
                              get
                              {
                                  return f7;
                              }
                              set
                              {
                                  f7 = value;
                              }
                          }
                      }
                      public class DataGateway
                      {
                          public static ArrayList GetAll()
                          {
                              try
                              {
                                  string MyConnection = "server=127.0.0.1;uid=root;" +
                                      "pwd=pass;database=test;";

                                  MySql.Data.MySqlClient.MySqlConnection con;
                                  con = new MySql.Data.MySqlClient.MySqlConnection();
                                  con.ConnectionString = MyConnection;

                                  con.Open();
                                  MySql.Data.MySqlClient.MySqlCommand com = new MySql.Data.MySqlClient.MySqlCommand("SELECT id,navn,adresse,sted,postnr,telefon, beskrivelse FROM shop", con);
                                  ArrayList list = new ArrayList();
                                  MySql.Data.MySqlClient.MySqlDataReader rdr = com.ExecuteReader();
                                  while (rdr.Read())
                                  {
                                      list.Add(new Person((int)rdr[0], (string)rdr[1], (string)rdr[2], (string)rdr[3], (int)rdr[4], (int)rdr[5], (string)rdr[6]));
                                  }
                                  rdr.Close();
                                  con.Close();
                                  return list;
                              }
                              catch (Exception ex)
                              {
                                  MessageBox.Show(ex.Message);
                                  return null;
                              }
                          }
                      }
                  }
}
Avatar billede flvind Nybegynder
11. januar 2006 - 16:50 #16
Er det ikke muligt at lave det samme ved hjælp af
OdbcConnection
OdbcDataAdapter
OdbcCommand
eller noget lignende???
Avatar billede alex_sleiborg Nybegynder
12. januar 2006 - 15:54 #17
Jo det kan man godt. Men jeg har altid brugt Mysql Connector til det

Den kan downloades her

http://dev.mysql.com/downloads/connector/net/1.0.html
Avatar billede alex_sleiborg Nybegynder
14. januar 2006 - 21:49 #18
Jeg kan også godt vise dig et eksempel, ved hjælp af odbc
Avatar billede flvind Nybegynder
14. februar 2006 - 14:21 #19
lukket
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