using System; using System.Collections.Generic; using System.Linq; using System.Text; using MySql.Data.MySqlClient; namespace Kelsier { class Database { public MySqlConnection dbh { get; private set; } private string dbinfo; /// /// Construct a Database, using the MySQL connector string. /// /// Connector string public Database(string dbinfo) { this.dbinfo = dbinfo; dbh = new MySqlConnection(this.dbinfo); dbh.Open(); } public Database(Database copy) { this.dbinfo = copy.dbinfo; dbh = new MySqlConnection(this.dbinfo); dbh.Open(); } ~Database() { dbh.Close(); } public int execute(string query) { MySqlCommand cmdo = new MySqlCommand(query, dbh); return cmdo.ExecuteNonQuery(); } public int execute(string query, object[] keys) { MySqlCommand cmdo = new MySqlCommand(); cmdo.Connection = dbh; cmdo.CommandText = query; cmdo.Prepare(); for (int i = 0; i < keys.Length; i += 2) { cmdo.Parameters.AddWithValue(keys[i].ToString(), keys[i + 1]); } return cmdo.ExecuteNonQuery(); } public object queryScalar(string query) { MySqlCommand cmdo = new MySqlCommand(query, dbh); return cmdo.ExecuteScalar(); } public object queryScalar(string query, object[] keys) { MySqlCommand cmdo = new MySqlCommand(); cmdo.Connection = dbh; cmdo.CommandText = query; cmdo.Prepare(); for (int i = 0; i < keys.Length; i += 2) { cmdo.Parameters.AddWithValue(keys[i].ToString(), keys[i + 1]); } return cmdo.ExecuteScalar(); } public MySqlDataReader queryReader(string query) { MySqlCommand cmdo = new MySqlCommand(query, dbh); return cmdo.ExecuteReader(); } public MySqlDataReader queryReader(string query, object[] keys) { if (keys.Length % 2 != 0) { throw new PlaceholdersException(); } MySqlCommand cmdo = new MySqlCommand(); cmdo.Connection = dbh; cmdo.CommandText = query; cmdo.Prepare(); for (int i = 0; i < keys.Length; i += 2) { cmdo.Parameters.AddWithValue(keys[i].ToString(), keys[i + 1]); } return cmdo.ExecuteReader(); } } class PlaceholdersException : Exception { } }