Cześć z braku laku ostatnio napisałem dość wygodną klasę do MySQL z metodą select przekazującą wyniki do DataGridView. To idzie do mojego pierwszego poważniejszego programu, był bym wdzięczny za jakieś wskazówki lub poprawki.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
using System.Text;
using MySql.Data.MySqlClient;
namespace commander
{
class mysql
{
MySqlConnection connection;
public mysql(string serwer, string baza, string user, string haslo)
{
string MyConString = "SERVER="+serwer+";" +
"DATABASE="+baza+";" +
"UID="+user+";" +
"PASSWORD="+haslo+";";
connection = new MySqlConnection(MyConString);
}
public void select(string query, ListBox lista)
{
MySqlCommand command = connection.CreateCommand();
MySqlDataReader Reader;
command.CommandText = query;
connection.Open();
Reader = command.ExecuteReader();
while (Reader.Read())
{
string thisrow = "";
for (int i = 0; i < Reader.FieldCount; i++)
thisrow += Reader.GetValue(i).ToString() + ",";
lista.Items.Add(thisrow);
}
connection.Close();
}
public void select(string query, DataGridView tabela, string kolumny)
{
string[] k1 = kolumny.Split(' ');
tabela.ColumnCount = k1.Count();
int j=0;
foreach (string k2 in k1)
{
tabela.Columns[j].Name = k2;
j++;
}
MySqlCommand command = connection.CreateCommand();
MySqlDataReader Reader;
command.CommandText = query;
connection.Open();
Reader = command.ExecuteReader();
while (Reader.Read())
{
string[] row= new string[Reader.FieldCount];
int k = 0;
for (int i = 0; i < Reader.FieldCount; i++)
{
row[k]= Reader.GetValue(i).ToString();
k++;
}
tabela.Rows.Add(row);
}
connection.Close();
}
public void insert(string query)
{
MySqlCommand command = connection.CreateCommand();
command.CommandText = query;
connection.Open();
command.ExecuteNonQuery();
connection.Close();
}
}
}
Przykład zastosowania:
mysql b1 = new mysql("localhost", "baza", "root", "haslo");
b1.select("Select * from artykul",dataGridView1, "id kategoria tytul tekst data_dodania autor"); // Kolumny do tabelki oddzielone spacjami.
Klasa działa, ale w momencie wklejania kodu zauważyłem, że nie mam obsługi błędów, czyli pierwsza poprawka gotowa.