10. januar 2006 - 23:40Der 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.
Hos Computerworld it-jobbank er vi stolte af at fortsætte det gode partnerskab med folkene bag IT-DAY – efter vores mening Danmarks bedste karrieremesse for unge og erfarne it-kandidater.
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
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.
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; } } } }
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"
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);
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; } } } } }
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.
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 {
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.