using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace MySql_Connector
{
public partial class Form1 : Form
{
static Connection connection = new Connection(); //Declaração da variável aqui, para poder ser usada nos outros métodos
Action action = new Action(ref connection); //Toda vez que algum parâmetro de connection mudar, action também será alterado
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
try
{
//Conecta sem nessecidade de um Banco de Dados
connection.Server = "localhost";
connection.Id = "user"; //Voce deve colocar seu usário
connection.Password = "password"; //Voce deve colocar sua senha
connection.Connect(); //Está conectado apenas ao MySql, sem Banco de Dados definido
updateDatabases(); //Atualiza a ComboBox para ver os Bancos de Dados existentes
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
throw;
}
}
public void button7_Click(object sender, EventArgs e)
{
//Cria um DB e reconecta com ele
action.CreateDatabase("Banco");
connection.Database = "Banco"; //Todas as ações usarão esse DB
connection.Connect();
//Cria uma Tabela
connection.Table = "Tabela"; //Todas as ações usarão essa Tabela
string[] colunas = new string[1];
colunas[0] = "nome";
//action.CreateTable(colunas);
//Insere uma linha
string[] linha = new string[1];
linha[0] = "matheus";
action.InsertRow(linha);
//Remove uma linha
action.RemoveRow(1);
//Atualiza uma lista
action.UpdateRow(3, linha);
//Acha o Id a partir de algum campo
DataTable table = action.GetRows("nome", "lucas");
int id = Convert.ToInt32(table.Rows[0][0].ToString());
MessageBox.Show("OK");
}
void updateDatabases()
{
cbDatabases.Items.Clear();
cbDatabases.Items.AddRange(action.GetDatabases());
}
void updateTables()
{
cbTables.Items.Clear();
cbTables.Items.AddRange(action.GetTables());
}
private void cbDatabases_SelectedIndexChanged(object sender, EventArgs e)
{
connection.Database = cbDatabases.SelectedItem.ToString();
updateTables();
}
private void cbTables_SelectedIndexChanged(object sender, EventArgs e)
{
connection.Table = cbTables.SelectedItem.ToString();
dgv.DataSource = action.GetRows();
}
private void btnDatabase_Click(object sender, EventArgs e)
{
//Cria um banco de dados
action.CreateDatabase(txtDatabase.Text);
connection.Database = txtDatabase.Text;
txtDatabase.Clear();
updateDatabases();
MessageBox.Show("Banco de dados criado com sucesso!", "Banco de Dados");
}
private void btnTable_Click(object sender, EventArgs e)
{
//Cria uma tabela
string colunasLinha = txtColunas.Text;
string[] colunas = colunasLinha.Split('|'); //Divide a string em um vetor de strings com cada coluna
// Não esqueça de usar aspas simples no caractere pois ele é um char e nao uma string
action.CreateTable(connection.Database, txtTable.Text, colunas);
txtTable.Clear();
txtColunas.Clear();
updateTables();
MessageBox.Show("Tabela criada com sucesso!", "Tabela");
}
private void btnInsert_Click(object sender, EventArgs e)
{
//Insere um linha ao final da tabela
string colunasLinha = txtInsert.Text;
string[] colunas = colunasLinha.Split('|');
action.InsertRow(colunas);
txtInsert.Clear();
updateTables();
MessageBox.Show("Linha inserida com sucesso!", "Inserir linha");
}
private void btnRemove_Click(object sender, EventArgs e)
{
//Remove uma linha de determinada Id
action.RemoveRow(Convert.ToInt32(txtRemove.Text));
txtRemove.Clear();
updateTables();
MessageBox.Show("Linha removida com sucesso!", "Remover linha");
}
private void btnUpdate_Click(object sender, EventArgs e)
{
//Atualiza um linha de determinada Id com valores inseridos,
//é nescessário inserir todos os valores, mesmo que alguns continuem iguais
string colunasLinha = txtValores.Text;
string[] colunas = colunasLinha.Split('|');
action.UpdateRow(Convert.ToInt32(txtId.Text) , colunas);
txtValores.Clear();
txtId.Clear();
updateTables();
MessageBox.Show("Linha atualizada com sucesso!", "Atualizar linha");
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using MySql.Data.MySqlClient;
namespace MySql_Connector
{
class Connection
{
static string server;
static string id;
static string password;
static string database = "";
static string table = "";
static MySqlConnection sqlConnection;
public Connection() {}
public string Server
{
get { return server; }
set { server = value; }
}
public string Id
{
get { return id; }
set { id = value; }
}
public string Password
{
get { return password; }
set { password = value; }
}
public string Database
{
get { return database; }
set { database = value; }
}
public string Table
{
get { return table; }
set { table = value; }
}
public MySqlConnection SQLConnection
{
get { return sqlConnection; }
//set { sqlConnection = value; }
}
public void LoadFromFile()
{
//le os dados de um arquivo
}
public void Connect()
{
if (database == "")
{
sqlConnection = new MySqlConnection("server=" + server + ";uid=" + id + ";pwd=" + password);
}
else
{
sqlConnection = new MySqlConnection("server=" + server + ";database=" + database + ";uid=" + id + ";pwd=" + password);
}
sqlConnection.Open();
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using MySql.Data.MySqlClient;
using System.Data;
using System.Windows.Forms;
namespace MySql_Connector
{
class Action
{
public Connection myConnection;
public Action(ref Connection connection)
{
myConnection = connection; // Passa connection para myConnection
// A idéia é quando algum atributo de connection mudar, o atributo de myConnection mudar também
}
private DataTable MySqlGetCommand(string SQLStatement)
{
DataTable dataTable = new DataTable();
if (myConnection.SQLConnection.State == ConnectionState.Open)
{
MySqlCommand cmd = myConnection.SQLConnection.CreateCommand();
cmd.CommandText = SQLStatement;
MySqlDataAdapter Adapter;
Adapter = new MySqlDataAdapter(cmd);
Adapter.Fill(dataTable);
for (int i = 0; i < dataTable.Columns.Count; i++)
{
dataTable.Columns[i].ColumnName = FixString(dataTable.Columns[i].ColumnName);
}
}
return dataTable;
}
private string FixString(string input)
{
string output = "";
output = Encoding.UTF8.GetString(Encoding.GetEncoding("latin1").GetBytes(input));
return output;
}
private void MySqlSetCommand(string SQLStatement)
{
MySqlCommand cmd = myConnection.SQLConnection.CreateCommand();
cmd.CommandText = SQLStatement;
cmd.CommandType = CommandType.Text;
cmd.Connection = myConnection.SQLConnection;
cmd.ExecuteNonQuery();
}
public void CreateDatabase(string databaseName)
{
MySqlSetCommand("create database if not exists `" + databaseName + "`");
}
public void CreateTable(string database, string table, string[] columns)
{
string values = "";
for (int i = 0; i <= columns.Length - 1; i++)
{
values += ", `" + columns[i] + "` text not null";
}
MySqlSetCommand("create table if not exists `" + database + "`.`" + table +
"` (`Id` int not null auto_increment" + values + ", primary key (`Id`)) " +
" default character set latin1 collate latin1_general_cs");
}
public void InsertRow(string[] cells)
{
string values = "";
for (int i = 0; i <= cells.Length - 1; i++)
{
values += ", '" + cells[i] + "'";
}
MySqlSetCommand("insert into `" + myConnection.Database + "`.`" + myConnection.Table + "`" +
" values ('' "+ values +")");
}
public void RemoveRow(int id)
{
MySqlSetCommand("delete from `" + myConnection.Database + "`.`" + myConnection.Table + "` where Id='" + id + "'");
}
public void UpdateRow(int id, string[] cells)
{
string values = "";
for (int i = 0; i <= cells.Length - 1; i++)
{
values += ", '" + cells[i] + "'";
}
MySqlSetCommand("replace into `" + myConnection.Database + "`.`" + myConnection.Table + "`" +
" values ('" + id + "' " + values + ")");
}
public DataTable GetRows(string columnName = "", string value = "")
{
DataTable table = new DataTable();
if (columnName == "" && value == "")
{
table = MySqlGetCommand("select * from `" + myConnection.Database + "`.`" + myConnection.Table + "` where 1");
}
else
{
table = MySqlGetCommand("select * from `" + myConnection.Database + "`.`" + myConnection.Table + "` where " + columnName + "='" + value + "'");
}
return table;
}
public string[] GetDatabases()
{
DataTable table = MySqlGetCommand("show databases");
string[] answer = new string[table.Rows.Count];
for (int i = 0; i < table.Rows.Count; i++)
{
answer[i] = table.Rows[i][0].ToString();
}
return answer;
}
public string[] GetTables()
{
DataTable table = MySqlGetCommand("show tables from `" + myConnection.Database + "`");
string[] answer = new string[table.Rows.Count];
for (int i = 0; i < table.Rows.Count; i++)
{
answer[i] = table.Rows[i][0].ToString();
}
return answer;
}
}
}