using System; using System.Collections.Generic; using System.Linq; using System.Text; using MySql.Data.MySqlClient; namespace ParticleFramework.Storage { class MySQL : Database { private MySqlConnection connection; public Boolean connect(string username, string password, string database, string host) { try { connection = new MySqlConnection(buildConnectionString(username, password, database, host)); Console.WriteLine("Database connected. Running test query..."); getString("SHOW TABLES FROM `" + database + "`"); Log.Info("Test query succeeded. Database initialized."); closeClient(); return true; } catch (Exception e) { Log.Error("MySQL Connect: " + e.Message); return false; } } public string getString(string query) { try { string resultStr = getCommand(query).ExecuteScalar().ToString(); closeClient(); return resultStr; } catch (Exception e) { Log.Error("MySQL getString: " + e.Message); return ""; } } public MySqlCommand getCommand(string query) { try { if (connection.State != System.Data.ConnectionState.Closed) { connection.Close(); } MySqlCommand command = newCommand(); command.CommandText = query; connection.Open(); return command; } catch (Exception e) { Log.Error("MySQL getCommand: " + e.Message); return null; } } public void noCommand(string query) { try { if (connection.State != System.Data.ConnectionState.Closed) { connection.Close(); } MySqlCommand command = newCommand(); command.CommandText = query; connection.Open(); command.ExecuteNonQuery(); connection.Close(); } catch (Exception e) { Log.Error("MySQL noCommand: " + e.Message); } } public void closeClient() { try { if (connection.State == System.Data.ConnectionState.Open) { connection.Close(); } } catch (Exception e) { Log.Error("MySQL closeClient: " + e.Message); } } public MySqlCommand newCommand() { try { return connection.CreateCommand(); } catch (Exception e) { Log.Error("MySQL newCommand: " + e.Message); return null; } } public string buildConnectionString(string username, string password, string database, string host) { return "Database=" + database + ";Data Source=" + host + ";User Id=" + username + ";Password=" + password; } } }