Tartalomjegyzék
.Net Core - MariaDB
- Szerző: Sallai András
- Copyright © 2023, Sallai András
- Szerkesztve: 2024
- Web: https://szit.hu
Névtér és osztályok
Névtér:
- MySqlConnector
A következő osztályokat használjuk:
- MySqlConnection - Kapcsolatobjektum létrehozása.
- MySqlCommand - A lekérés létrehozása.
- MySqlDataReader - Lekérés indítása.
- MySqlException - Hibakezelés.
Projekt létrehozása
Hozzunk létre egy konzolos projektet:
mkdir app01 cd app01 dotnet new console
Függőség telepítése
Telepítsük a projektbe a MySqlConnector csomagot:
dotnet add package MySqlConnector
Szokták ajánlani a MySql.Data csomagot is. MariaDB esetén apró problémák léphetnek fel.
Ha nem megfelelő csomagot telepítettünk, a törlés:
dotnet remove package MySql.Data
Ellenőrizzük a app01.csproj fájlban:
<PackageReference Include="MySqlConnector" Version="2.3.1" />
A teljes állomány:
- app01.csproj
<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <OutputType>Exe</OutputType> <TargetFramework>net7.0</TargetFramework> <ImplicitUsings>enable</ImplicitUsings> <Nullable>enable</Nullable> </PropertyGroup> <ItemGroup> <PackageReference Include="MySqlConnector" Version="2.3.1" /> </ItemGroup> </Project>
Kapcsolódás
- Program.cs
using MySqlConnector; string host="localhost"; string name="konyvesbolt"; string user="konyvesbolt"; string pass="titok"; Console.WriteLine("Kapcsolódás..."); string url = $"Server={host};Database={name};User ID={user};Password={pass};"; using MySqlConnection conn = new MySqlConnection(url); try { conn.Open(); }catch (MySqlException e) { Console.Error.WriteLine("Hiba! A kapcsolódás sikertelen!"); Console.Error.WriteLine(e.Message); }
Apró változtatások
- Program.cs
using MySqlConnector; string host="localhost"; string name="libes"; string user="libes"; string pass="titok"; string url = @$" Server={host}; Database={name}; User ID={user}; Password={pass}; "; MySqlConnection conn = new(url); try { conn.Open(); Console.WriteLine("Ok"); }catch(MySqlException e) { Console.Error.WriteLine("Hiba! A kapcsolódás sikertelen!"); Console.Error.WriteLine(e.Message); }
Port megadása:
string host="localhost"; string port="3307"; string name="libes"; string user="libes"; string pass="titok"; string url = @$" Server={host}; Port={port}; Database={name}; User ID={user}; Password={pass}; ";
Futtatás
dotnet run
Az összes adat lekérdezése
- Program.cs
using MySqlConnector; string host="localhost"; string name="konyvesbolt"; string user="konyvesbolt"; string pass="titok"; Console.WriteLine("Kapcsolódás..."); string url = $"Server={host};Database={name};User ID={user};Password={pass};"; using MySqlConnection conn = new MySqlConnection(url); try { conn.Open(); string sql = "select * from konyvek"; using MySqlCommand cmd = new MySqlCommand(sql, conn); using MySqlDataReader reader = cmd.ExecuteReader(); while(reader.Read()) { if(!reader.IsDBNull(reader.GetOrdinal("cim"))) { string value = reader.GetString("cim"); Console.WriteLine(value); }else { Console.WriteLine("Az érték NULL"); } } }catch (MySqlException e) { Console.Error.WriteLine("Hiba! A kapcsolódás sikertelen!"); Console.Error.WriteLine(e.Message); }
Új adatok felvétele
- Program.cs
using MySqlConnector; string host="localhost"; string name="konyvesbolt"; string user="konyvesbolt"; string pass="titok"; Console.WriteLine("Kapcsolódás..."); string url = $"Server={host};Database={name};User ID={user};Password={pass};"; using MySqlConnection conn = new MySqlConnection(url); try { conn.Open(); string sql = "insert into konyvek (cim, szerzo) values (@cim, @szerzo)"; using MySqlCommand cmd = new MySqlCommand(sql, conn); cmd.Parameters.AddWithValue("cim", "A gép"); cmd.Parameters.AddWithValue("szerzo", "Fitos Ferenc"); cmd.ExecuteNonQuery(); } catch (MySqlException e) { Console.Error.WriteLine("Hiba! A kapcsolódás sikertelen!"); Console.Error.WriteLine(e.Message); }
Dolgozók példa
Minta projekt .Net Core-ban írva:
Adatbázis
- create.sql
create database zoldzrt; create table employees( id int not null primary key auto_increment, name varchar(50), city varchar(50), salary double ); grant all privileges on zoldzrt.* to zoldzrt@localhost identified by 'titok';
Create művelet
- Program.cs
using MySqlConnector; string host = "localhost"; string name = "zoldzrt"; string user = "zoldzrt"; string pass = "titok"; string connstr = $"Server={host};Database={name};User ID={user};Password={pass};"; using MySqlConnection conn = new(connstr); try { conn.Open(); string sql = "insert into employees (name, city, salary) values (@name, @city, @salary)"; using MySqlCommand cmd = new MySqlCommand(sql, conn); cmd.Parameters.AddWithValue("name", "Toros Ernő"); cmd.Parameters.AddWithValue("city", "Szeged"); cmd.Parameters.AddWithValue("salary", 393); int rowsAffected = cmd.ExecuteNonQuery(); Console.WriteLine($"Érintett sorok száma: {rowsAffected}"); }catch(MySqlException e) { Console.Error.WriteLine("Hiba! A beszúrás sikeretelen!"); Console.Error.WriteLine(e.Message); }
Read művelet
- Program.cs
using MySqlConnector; string host = "localhost"; string name = "zoldzrt"; string user = "zoldzrt"; string pass = "titok"; string connstr = $"Server={host};Database={name};User ID={user};Password={pass};"; using MySqlConnection conn = new(connstr); try { conn.Open(); string sql = "select * from employees"; using MySqlCommand cmd = new(sql, conn); using MySqlDataReader reader = cmd.ExecuteReader(); while(reader.Read()) { Console.WriteLine($"{reader["name"]}\t{reader["city"]}"); } }catch(MySqlException e) { Console.Error.WriteLine("Hiba! A lekérdezés sikeretelen!"); Console.Error.WriteLine(e.Message); }
Update művelet
- Program.cs
using MySqlConnector; string host = "localhost"; string name = "zoldzrt"; string user = "zoldzrt"; string pass = "titok"; string connstr = $"Server={host};Database={name};User ID={user};Password={pass};"; using MySqlConnection conn = new(connstr); try { conn.Open(); string sql = "update employees set name=@name, city=@city where id=@id"; using MySqlCommand cmd = new MySqlCommand(sql, conn); cmd.Parameters.AddWithValue("id", 3); cmd.Parameters.AddWithValue("name", "Cserép Tibor"); cmd.Parameters.AddWithValue("city", "Hatvan"); int rowsAffected = cmd.ExecuteNonQuery(); Console.WriteLine($"Érintett sorok száma: {rowsAffected}"); }catch(MySqlException e) { Console.Error.WriteLine("Hiba! A frissítés sikeretelen!"); Console.Error.WriteLine(e.Message); }
Delete művelet
- Program.cs
using MySqlConnector; string host = "localhost"; string name = "zoldzrt"; string user = "zoldzrt"; string pass = "titok"; string connstr = $"Server={host};Database={name};User ID={user};Password={pass};"; using MySqlConnection conn = new(connstr); try { conn.Open(); string sql = "delete from employee where id=@id"; using MySqlCommand cmd = new MySqlCommand(sql, conn); cmd.Parameters.AddWithValue("id", 4); int rowsAffected = cmd.ExecuteNonQuery(); Console.WriteLine($"Érintett sorok száma: {rowsAffected}"); }catch(MySqlException e) { Console.Error.WriteLine("Hiba! A törlés sikeretelen!"); Console.Error.WriteLine(e.Message); }
Dátumok
Ha dátumokkal dolgozunk, szükségünk van kapcsolati sztringben még egy beállításra. A Convert Zero DateTime legyen True-ra állítva:
string connStr = @$" Server={host}; Database={name}; User={user}; Password={pass}; Convert Zero Datetime=True ";
A modellben ekkor három típust használhatunk:
- DateOnly
- DateTime
- MySqlDateTime
public class Employee { public int Id {set; get;} public DateOnly Birth {get; set;} }
public class Employee { public int Id {set; get;} public DateTime Birth {get; set;} }
public class Employee { public int Id {set; get;} public MySqlDateTime Birth {get; set;} }
A MySqlReader osztály használata esetén a fentieknek megfelelően két metódust használhatunk:
Ha modellben DateOnly típust használunk:
reader.GetDateOnly("Birth");
Ha modellben DateTime típust használunk:
reader.GetDateTime("Birth");
Ha modellben MySqlDateTime típust használunk:
reader.GetMySqlDateTime("Birth");
Lásd még
Linkek
-
- mysqlconnectorassembly (MySqlConnector névtér)
- mysqlconnectiontype (MySqlConnection osztály)
- mysqlcommandtype (MySqlCommand osztály)
- mysqlexceptiontype (MySqlException osztály)