Ebben a példában megnézzük, hogyan lehet elérni C#-ból egy MySql adatbázist. A példában Xampp-ot használok, alap beállításokkal. (root, nincs jelszó, adatbázis neve: bolt)
Hozzunk létre egy új adatbázist phpmyadmin-ban! A neve legyen bolt. Ez az egy darab tábla lesz benne:
|
1 2 3 4 5 6 7 8 9 10 |
CREATE TABLE termekek ( id INT PRIMARY KEY AUTO_INCREMENT, nev VARCHAR(100), ar INT ); INSERT INTO termekek (nev, ar) VALUES ('Alma', 200), ('Körte', 250), ('Banán', 300); |
Ha működik az adatbázis, akkor készítsünk egy új konzolos projektet. Az adatbázis kapcsolathoz szükség lesz a MySql.Data.MySqlClient; -osztályra.
connectionString: ebben a változóban tároljuk az adatbázis adatait
Az SQL utasításokat is tárolhatjuk egy-egy változóban.
- MySqlConnection: Adatbázis kapcsolatot kezel.
- MySqlCommand: SQL utasításokat futtat.
- MySqlDataReader: Soronként olvassa ki az adatokat SELECT lekérdezés után.
- MySqlDataAdapter: Adatokat tölthet DataTable-be, pl. grafikus alkalmazásban (WinForms/WPF)
Hibakezelést célszerű használni:
|
1 2 3 4 5 6 |
try { conn.Open(); // utasítások...} catch (MySqlException ex) { Console.WriteLine("Hiba: " + ex.Message);} finally { conn.Close();} |
| Művelet | Metódus | Használat |
|---|---|---|
| SELECT | ExecuteReader() | Adatok beolvasása |
| INSERT | ExecuteNonQuery() | Új sor beszúrása |
| UPDATE | ExecuteNonQuery() | Sor módosítása |
| DELETE | ExecuteNonQuery() | Sor törlése |
Az alap programunk, amivel lekérdezzók az összes adatot, hozzáadunk, módosítunk, törlünk.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 |
using System; using System.Collections.Generic; using System.Data.SqlClient; using System.Linq; using System.Text; using System.Threading.Tasks; using MySql.Data.MySqlClient; namespace adatbazis_konzolos { internal class Program { static void Main(string[] args) { string connectionString = "server=localhost;database=bolt;uid=root;pwd=;"; try { //MySqlConnection - Adatbázis kapcsolatot kezel. using (MySqlConnection conn = new MySqlConnection(connectionString)) { conn.Open(); // új adat felvétele string ujAdat = "INSERT INTO termekek (nev, ar) VALUES (@nev, @ar)"; MySqlCommand cmd1 = new MySqlCommand(ujAdat, conn); cmd1.Parameters.AddWithValue("@nev", "Eper"); cmd1.Parameters.AddWithValue("@ar", 3500); int sorok = cmd1.ExecuteNonQuery(); Console.WriteLine($"{sorok} sor beszúrva."); // frissítés, paraméterekkel - UPDATE termekek SET ar = 350 WHERE nev = 'Narancs'; string frissitettAdat = "UPDATE termekek SET ar = @ujAr WHERE nev = @nev"; MySqlCommand cmd2 = new MySqlCommand(frissitettAdat, conn); cmd2.Parameters.AddWithValue("@ujAr", 350); cmd2.Parameters.AddWithValue("@nev", "Narancs"); sorok = cmd2.ExecuteNonQuery(); Console.WriteLine($"{sorok} sor frissítve."); // törlés - DELETE FROM termekek WHERE nev = 'Narancs'; string adatTorles = "DELETE FROM termekek WHERE nev = @nev"; MySqlCommand cmd3 = new MySqlCommand(adatTorles, conn); cmd3.Parameters.AddWithValue("@nev", "Narancs"); sorok = cmd3.ExecuteNonQuery(); Console.WriteLine($"{sorok} sor törölve."); // adatok lekérdezése string sql = "SELECT * FROM termekek"; // MySqlCommand - SQL utasításokat futtat MySqlCommand cmd = new MySqlCommand(sql, conn); // MySqlDataReader - Soronként olvassa ki az adatokat SELECT lekérdezés után using (MySqlDataReader r = cmd.ExecuteReader()) { Console.WriteLine("ID \t Név \t Ár"); Console.WriteLine("---------------------------"); while (r.Read()) { int id = r.GetInt32("id"); string nev = r.GetString("nev"); int ar = r.GetInt32("ar"); Console.WriteLine($"{id}\t{nev}\t{ar} Ft"); } } conn.Close(); } } catch (MySqlException ex) { Console.WriteLine("Hiba az adatbázis kapcsolódás során: " + ex.Message); } Console.ReadLine(); } } } |
