Avatar billede 4u2x Nybegynder
15. maj 2004 - 17:14 Der er 21 kommentarer og
1 løsning

Udskriv data fra MySQL i C# program

Ville høre om der er en der ved hvordan man får sit C# program til at udskrive tekst fra en MySQL database..?
Avatar billede arne_v Ekspert
16. maj 2004 - 00:03 #1
Du vælger en passende driver og connecter til MySQL, laver en SELECT statement
og udskriver resultatet.

Jeg mener at de fleste foretrækker ByteFX MySqlClient.

Simpelt eksempel:

using System;
using System.Data;
using ByteFX.Data.MySqlClient;

class MainClass
{
    public static void Main(string[] args)
    {
        MySqlConnection con = new MySqlConnection("Database=Test;Data Source=localhost;User Id=;Password=");
        con.Open();
        MySqlCommand sel = new MySqlCommand("SELECT * FROM T1", con);
        MySqlDataReader rdr = sel.ExecuteReader();
        while(rdr.Read()) {
            Console.WriteLine(rdr[0] + " " + rdr[1]);
        }
        rdr.Close();
        con.Close();
    }
}
Avatar billede 4u2x Nybegynder
16. maj 2004 - 00:27 #2
The type or namespace ByteFX could not be found  <-- siger den.... hvad skal jeg gøre?
Avatar billede arne_v Ekspert
16. maj 2004 - 00:29 #3
Du skal have downloadet og installeret ByteFX !

(og have en reference til den i build)
Avatar billede arne_v Ekspert
16. maj 2004 - 00:30 #4
Avatar billede 4u2x Nybegynder
16. maj 2004 - 00:35 #5
using ByteFX.Data.MySqlClient;

namespace Connected
{
    /// <summary>
    /// Summary description for Form1.
    /// </summary>
    public class Form1 : System.Windows.Forms.Form
    {
        private System.Data.DataView dataView1;
        /// <summary>
        /// Required designer variable.
        /// </summary>
        private System.ComponentModel.Container components = null;

        public Form1()
        {
            //
            // Required for Windows Form Designer support
            //
            InitializeComponent();

            //
            // TODO: Add any constructor code after InitializeComponent call
            //
        }

        public static void Form2(string[] args)
        {
            MySqlConnection con = new MySqlConnection("Database=vipit_vipit;Data Source=mydb1.surftown.dk;User Id=vipit;Password=5967HLLX");
            con.Open();
            MySqlCommand sel = new MySqlCommand("SELECT * FROM T1", con);
            MySqlDataReader rdr = sel.ExecuteReader();
            while(rdr.Read())
            {
                Console.WriteLine(rdr[0] + " " + rdr[1]);
            }
            rdr.Close();
            con.Close();
        }

        /// <summary>
        /// Clean up any resources being used.
        /// </summary>
        protected override void Dispose( bool disposing )
        {
            if( disposing )
            {
                if (components != null)
                {
                    components.Dispose();
                }
            }
            base.Dispose( disposing );
        }

        #region Windows Form Designer generated code
        /// <summary>
        /// Required method for Designer support - do not modify
        /// the contents of this method with the code editor.
        /// </summary>
        private void InitializeComponent()
        {
            this.dataView1 = new System.Data.DataView();
            ((System.ComponentModel.ISupportInitialize)(this.dataView1)).BeginInit();
            //
            // Form1
            //
            this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
            this.ClientSize = new System.Drawing.Size(552, 358);
            this.Name = "Form1";
            this.Text = "VipIT Connected";
            ((System.ComponentModel.ISupportInitialize)(this.dataView1)).EndInit();

        }
        #endregion

        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        //[STAThread]
        static void Main()
        {
            //Application.Run(new Form1());
            Application.Run(new Form2());
        }
    }
}




Får fejlen

(91): 'Connected.Form1.Form2()' denotes a 'method' where a 'class' was expected
Avatar billede arne_v Ekspert
16. maj 2004 - 00:39 #6
Ja.

Application.Run(new Form2());

kræver at Form2 er en klasse

public static void Form2(string[] args)

siger at Form2 er en metode
Avatar billede 4u2x Nybegynder
16. maj 2004 - 00:41 #7
ehm... hvad skal jeg gøre?
Avatar billede arne_v Ekspert
16. maj 2004 - 00:48 #8
slet

Application.Run(new Form2());

genetabler

Application.Run(new Form1());

flyt kode fra Form2 metode til constructor

public Form1()
        {
            //
            // Required for Windows Form Designer support
            //
            InitializeComponent();

            //
            // TODO: Add any constructor code after InitializeComponent call
            //
            MySqlConnection con = new MySqlConnection("Database=vipit_vipit;Data Source=mydb1.surftown.dk;User Id=vipit;Password=5967HLLX");
            con.Open();
            MySqlCommand sel = new MySqlCommand("SELECT * FROM T1", con);
            MySqlDataReader rdr = sel.ExecuteReader();
            while(rdr.Read())
            {
                Console.WriteLine(rdr[0] + " " + rdr[1]);
            }
            rdr.Close();
            con.Close();
        }

slet Form2 metoden

ret

Console.WriteLine(rdr[0] + " " + rdr[1]);

til noget der gemmer i en control i.s.f. at bruge console IO.
Avatar billede arne_v Ekspert
16. maj 2004 - 00:49 #9
Iøvrigt vil jeg foreslå at du laver dit password om ...
Avatar billede 4u2x Nybegynder
16. maj 2004 - 01:03 #10
Additional information: Unable to connect to any of the specified MySQL hosts  <-- når jeg vil starte programmet


har også lige ændret mit password :)
Avatar billede arne_v Ekspert
16. maj 2004 - 01:05 #11
Er der hul igennem fra client til server på port 3306 ?
Avatar billede 4u2x Nybegynder
16. maj 2004 - 01:07 #12
serveren kører på port 3306... så skulle ikke se noget problem der.
Avatar billede arne_v Ekspert
16. maj 2004 - 01:09 #13
Og der er ikke nogen blokerende firewalls ?
Avatar billede 4u2x Nybegynder
16. maj 2004 - 01:11 #14
ved jeg ikke rigtig så meget om... det ligger hos Surftown.dk

det eneste jeg kan se via deres support panel så skriver de at de ikke understøtter ODBC... men her bruger vi jo ByteFX ?
Avatar billede arne_v Ekspert
16. maj 2004 - 01:13 #15
Spørgsmålet er om de tillader connection til databaen udefra elle rkun fra deres
web server.
Avatar billede 4u2x Nybegynder
16. maj 2004 - 01:16 #16
tjaa... jeg sender lige en mail til dem..  skriver til dig her imorgen... og foreløbig mange tak for hjælpen! :)
Avatar billede 4u2x Nybegynder
16. maj 2004 - 11:55 #17
De siger at der ikke skulle være nogle problemer med at connecte til serveren.

Skal jeg ikke skrive hvilken port jeg vil connecte igennem?
Avatar billede arne_v Ekspert
16. maj 2004 - 12:25 #18
Du kan angive Port=3306 i connection string, men 3306 er default.
Avatar billede 4u2x Nybegynder
16. maj 2004 - 12:30 #19
Har kigget rundt på nettet for at se hvordan de connecter og har lavet koden om til dette:

public Form1()
        {
            //
            // Required for Windows Form Designer support
            //
            InitializeComponent();

            //
            // TODO: Add any constructor code after InitializeComponent call
            //
            string ConnString = "Database=vipit_vipit;Data Source=mydb1.surftown.dk:3306;User Id=vipit_vipit;Password=superworld";
            MySqlConnection connection = new MySqlConnection(ConnString);

            MySqlCommand sel = new MySqlCommand("SELECT * FROM artikler", connection);
            MySqlDataReader rdr = sel.ExecuteReader();
            while(rdr.Read())
            {
                Console.WriteLine(rdr[0] + " " + rdr[1]);
            }
            rdr.Close();
            connection.Close();
        }


Jeg får dog fejlen:

Additional information: Connection must be valid and open
Avatar billede 4u2x Nybegynder
16. maj 2004 - 12:38 #20
har fundet fejlen i den der kode... manglede Connection.Open();

men nu får jeg den tidligere fejl-besked "Additional information: Unable to connect to any of the specified MySQL hosts"
Avatar billede 4u2x Nybegynder
17. maj 2004 - 15:43 #21
Har fået forbindelse til serveren nu og koden virker... men den udskriver bare ikke indholdet fra mysql'en inde i selve programmet.

Et forslag til hvad der mangler?
Avatar billede arne_v Ekspert
17. maj 2004 - 19:44 #22
Skal du ikke have erstattet:

Console.WriteLine(rdr[0] + " " + rdr[1]);

med noget:

tb.Text = rdr[0] + " " + rdr[1];

eller noget lignende ?
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