Ebben a tutorialban a Xampp-on futó MySql adatbázist fogjuk összekötni C# konzolos alkalmazással, és felhasználjuk hozzá az Oldtimer emelt érettségi feladatot. A témakört csak érintjük, mert érettségin nem szerepel, és a tanmenetben is alig 4 órát foglalkozunk vele.
Első lépésben létrehozunk egy konzolos alkalmazást (Console App .NET Framework) Utána a NuGet Package Managerben feltelepítjük a MySql.Data csomagot. Solution Explorerben jobb klikk, majd a helyi menüben megtalálható. Ha sikeresen feltelepült, akkor a SolutionExplorer/References-ben meg fog jelenni.


A Mysql.Data csomag használatához importálni kell a szokásos módon: using MySql.Data.MySqlClient;
Következő lépésben megadjuk a csatlakozás adatait: (Xampp – localhost, alap root felhasználó, nincs jelszava, default port, adatbázis neve) A Xamppnak futnia kell, és tartalmaznia az oldtimer nevű adatbázist nyilván az adatokkal együtt! Ezzel a rövid kóddal megpróbálunk csatlakozni az adatbázishoz, hibakezeléssel együtt.
using System;
using MySql.Data.MySqlClient;
namespace ConsoleAppSql
{
class Program
{
static void Main(string[] args)
{
string kapcsolat = "server=127.0.0.1;" +
"port=3306;" +
"username=root;" +
"password=;" +
"database=oldtimer;" +
"Connection Timeout=10;";
MySqlConnection csatlakozas = new MySqlConnection(kapcsolat);
try
{
csatlakozas.Open();
Console.WriteLine("Sikeres csatlakozás!");
}
catch (MySql.Data.MySqlClient.MySqlException)
{Console.WriteLine("Sikeretelen csatlakozás!");}
Console.ReadKey();
}
}
}
/* Ha a konkrét hibaüzenetet akarod kiíratni cseréld le erre :
catch (MySql.Data.MySqlClient.MySqlException e)
{ nsole.WriteLine(e.Message)}
*/
Első lekérdezésnünk. Egy változóba – sql_parancs- beírjuk a konkrét sql kódot. Utána használjuk a MySqlCommand osztályt, ez fogja végrehajtani az sql utasítást. Az eredmény kiolvasásához a MySqlDataReader osztályt használjuk, az sql parancs lefuttatásához pedig az ExecuteReader() függvényt . 1db adatot várunk eredménynek., amihez a kiolvas1 változón keresztül férünk hozzá, ennek a 0. eleme lesz amit ki akarunk iratni.
string sql_parancs = "SELECT COUNT(id) AS 'sportautok-szama' FROM autok WHERE kategoriaId=4;"; // SQL
MySqlCommand lekerdezes_1 = new MySqlCommand(sql_parancs, csatlakozas);
MySqlDataReader kiolvas1 = lekerdezes_1.ExecuteReader();
while (kiolvas1.Read())
{
Console.WriteLine("1. lekérdezés: {0} db sportautó van", kiolvas1[0].ToString());
//Console.WriteLine("{0} -- {1}", reader[0].ToString(), reader[1].ToString());
}
Második lekérdezésünk: irasd ki a limuzinok nevét, színét! A megoldás nagyon hasonlít az előzőre, csak itt 2 adatot várunk.
/*Listázza ki az összes “Limuzin” kategóriába tartozó autó nevét és színét! Rendezze őket névsorba! A lekérdezés során a kategória kijelölését “Limuzin” név felhasználásával tegye! */
csatlakozas.Open();
string sql_parancs2 = "SELECT autok.nev, autok.szin FROM autok INNER JOIN kategoriak ON autok.kategoriaId = kategoriak.id WHERE kategoriak.nev = 'Limuzin' ORDER BY autok.nev;"; // SQL
MySqlCommand lekerdezes_2 = new MySqlCommand(sql_parancs2, csatlakozas);
MySqlDataReader kiolvas2 = lekerdezes_2.ExecuteReader();
Console.WriteLine("2.lekérdezés: Az adatbázisban ezek a limuzinok találhatók meg:");
while (kiolvas2.Read())
{
Console.WriteLine("{0} -- {1}", kiolvas2[0].ToString(), kiolvas2[1].ToString());
}
csatlakozas.Close();
Insert into – új rekord felvétele az adatbázisba. Itt az ExecuteNonQuery() függvényt használjuk a lekérdezés futtatásához. Ezt a függvényt lefuttatja az sql parancsot, és megadja, hány sort illesztett be. Nyilván, ha ez 0, akkor nem történt meg az új rekord beszúrása a táblába.
csatlakozas.Open();
string sql_parancs3 = "INSERT INTO autok (rendszam, szin, kategoriaId, nev, evjarat, ar) VALUES ('OT45-02', 'Piros', 3, 'Pontiac', 1980, 18000)"; // SQL sintaktika
MySqlCommand beszuro_lekerdezes = new MySqlCommand(sql_parancs3, csatlakozas);
int rowCount = 0;
rowCount = beszuro_lekerdezes.ExecuteNonQuery(); //ha sikerül új rekordot hozzáadni akkor 0-nál nagyobb az értéke
if (rowCount < 1)
{ Console.WriteLine("Nem sikerült a rekord hozzáadása!"); }
else
{ Console.WriteLine("Sikerült a rekord hozzáadása!"); }
csatlakozas.Close();