using System; using System.Collections; using System.Collections.Generic; using System.Data; using System.Globalization; using System.Linq; using System.Security.Cryptography; using System.Security.Cryptography.X509Certificates; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using System.Xml.Linq; using Google.Protobuf.WellKnownTypes; using MySql.Data.MySqlClient; using Mysql_example.Database.Schema; using MySqlX.XDevAPI.Common; using MySqlX.XDevAPI.Relational; using static System.ComponentModel.Design.ObjectSelectorEditor; using static System.Runtime.InteropServices.JavaScript.JSType; using static Mysql_example.Database.DBConnectGeneral; namespace Mysql_example.Database { class DBConnectGeneral { public MySqlConnection connection; private string server; private string database; private string uid; private string password; public DBConnectGeneral() { this.server = Config.DBHost; this.database= Config.DBName; this.uid= Config.DBUser; this.password = Config.DBPass; Initialize(); } //Connection Handeling private void Initialize() { string connectionPayload = $"SERVER={server};DATABASE={database};UID={uid};PASSWORD={password};"; connection = new MySqlConnection(connectionPayload); } public bool OpenConnection() { try { connection.Open(); return true; } catch (MySqlException exception) { switch (exception.Number) { case 0: MessageBox.Show("Cannot connect to server. Contact administrator"); break; case 1045: MessageBox.Show("Invalid username/password, please try again"); break; default: MessageBox.Show($"Error: {exception.Message}"); break; } return false; } } public bool CloseConnection() { try { connection.Close(); return true; } catch (MySqlException exception) { MessageBox.Show(exception.Message); return false; } } // Getting Information public List [] Select(string table, List fields) { string querry = "SELECT "; foreach (string field in fields) { querry += $"`{field}`, "; } querry = querry.Substring(0, querry.Length - 2); querry += $" FROM `{table}`"; List[] response = new List[fields.Count]; for (int i = 0; i < fields.Count; i++) { response[i] = new List(); } if(this.OpenConnection()) { MySqlCommand selectCmd = new MySqlCommand(querry, connection); MySqlDataReader dataReader= selectCmd.ExecuteReader(); while (dataReader.Read()) { for (int i = 0; i < fields.Count; i++) { response[i].Add(dataReader[fields[i]] + ""); } } dataReader.Close(); CloseConnection(); } return response; } public List[] Select(string table, List fields, string selector) { string querry = "SELECT "; foreach (string field in fields) { querry += $"`{field}`, "; } querry = querry.Substring(0, querry.Length - 2); querry += $" FROM `{table}` WHERE {selector}"; List[] response = new List[fields.Count]; for (int i = 0; i < fields.Count; i++) { response[i] = new List(); } if (this.OpenConnection()) { MySqlCommand selectCmd = new MySqlCommand(querry, connection); MySqlDataReader dataReader = selectCmd.ExecuteReader(); while (dataReader.Read()) { for (int i = 0; i < fields.Count; i++) { response[i].Add(dataReader[fields[i]] + ""); } } dataReader.Close(); CloseConnection(); } return response; } // Modifying Information public int Update(string table, List fields, List values, string selector) { string querry = $"UPDATE `{table}` SET "; if (fields.Count != values.Count) throw new Exception("Count of Fields and Values to Update doesnt match"); for(int i = 0; i < fields.Count;i++) { string value = values[i] != null ? "'" + values[i].ToString() + "'" : "NULL"; querry += $"`{fields[i]}`= {value},"; } querry = querry.Remove(querry.Length -1); querry += $" WHERE {selector};"; if (this.OpenConnection()) { MySqlCommand updateCommand = new MySqlCommand(); updateCommand.CommandText = querry; updateCommand.Connection = connection; try { int affected = updateCommand.ExecuteNonQuery(); return affected; } catch(Exception ex) { MessageBox.Show(ex.Message, "There Was an Error Trying to Update."); } finally { CloseConnection(); } } return 0; } public UInt64 Insert(string table, List fields, List values) { if (fields.Count != values.Count) throw new Exception("Count of Fields and Values to Update doesnt match"); string querry = $"INSERT INTO `{table}` ("; for (int i = 0; i < fields.Count; i++) { querry += $"`{fields[i]}`,"; } querry = querry.Remove(querry.Length - 1); querry += $") VALUES ("; for (int i = 0; i < values.Count; i++) { string value = values[i] != null ? "'" + values[i].ToString() + "'" : "NULL"; querry += $"{value},"; } querry = querry.Remove(querry.Length - 1); querry += ");"; if (this.OpenConnection()) { MySqlCommand insertCommand = new MySqlCommand(); insertCommand.CommandText = querry; insertCommand.Connection = connection; try { insertCommand.ExecuteNonQuery(); return insertCommand.LastInsertedId < 0 ? 0 : (UInt64)insertCommand.LastInsertedId; } catch (Exception ex) { MessageBox.Show(ex.Message, "There Was an Error Trying to Insert."); } finally { CloseConnection(); } } return 0; } public void Delete(string table, string selector) { string querry = $"DELETE FROM `{table}` WHERE {selector};"; if (this.OpenConnection()) { MySqlCommand deleteCommand = new MySqlCommand(); deleteCommand.CommandText = querry; deleteCommand.Connection = connection; deleteCommand.ExecuteNonQuery(); CloseConnection(); } } } }