I strongly recommend that you check out my new and improved library here: http://code.google.com/p/mysql-helper-library
as it contains many fixes and functions not found in the code below.
namespace MySQL { public class Transcation : IDisposable { private string connectionString = null; private MySqlConnection mysqlConnection = null; private MySqlCommand mysqlCommand = null; private MySqlTransaction mysqlTransaction = null; public Transcation(string server, string username, string password, uint port = 3306, bool isTransaction = true, uint connectionTimeout = 5000, uint defaultCommandTimeout = 5000) { connectionString = "Data Source=" + server + ";" + "Port=" + port + ";User ID=" + username + ";Password=" + password + ";Allow User Variables=True;Connect Timeout=" + connectionTimeout.ToString() + ";"; connectionString += ";Default Command Timeout=" + defaultCommandTimeout.ToString() + ";Allow Zero Datetime=True"; mysqlConnection = new MySqlConnection(connectionString); mysqlConnection.Open(); if (isTransaction) mysqlTransaction = mysqlConnection.BeginTransaction(); mysqlCommand = mysqlConnection.CreateCommand(); mysqlCommand.Connection = mysqlConnection; } // Dispose public void Dispose() { if (mysqlTransaction != null) mysqlTransaction.Dispose(); if (mysqlCommand != null) mysqlCommand.Dispose(); if (mysqlConnection != null) { mysqlConnection.Close(); mysqlConnection.Dispose(); } } // Commit transaction public void Commit() { mysqlTransaction.Commit(); } // Rollback transaction public void Rollback() { mysqlTransaction.Rollback(); } // Add data to table public long AddRow(string database, string table, string[] columns, object[] values, string binary_column = null, byte[] binary_data = null, string updateWhere = null) { string valuetags = ""; if (columns.Length != values.Length) throw new Exception("Columns and value count does not match"); if (binary_column != null) valuetags += "@bin,"; for (int i = 0; i < columns.Length; i++) { if (i != 0) valuetags += ","; valuetags += "@p" + i.ToString(); } if (updateWhere == null) { mysqlCommand.CommandText = "insert into `" + database + "`.`" + table + "` " + (binary_column != null ? "(`" + binary_column + "`,`" : "(`") + string.Join("`,`", columns) + "`) values (" + valuetags + ")"; if (binary_data != null) mysqlCommand.Parameters.AddWithValue("@bin", binary_data); for (int i = 0; i < columns.Length; i++) mysqlCommand.Parameters.AddWithValue("@p" + i.ToString(), values[i]); } else { mysqlCommand.CommandText = string.Empty; for (int i = 0; i < columns.Length; i++) { mysqlCommand.CommandText += "update `" + database + "`.`" + table + "` SET `" + columns[i] + "`=@p" + i.ToString() + "x" + " WHERE " + updateWhere + " LIMIT 1;"; mysqlCommand.Parameters.AddWithValue("@p" + i.ToString() + "x", values[i]); } } mysqlCommand.ExecuteNonQuery(); mysqlCommand.Parameters.Clear(); return mysqlCommand.LastInsertedId; } // Add data using Column & Data class public long AddRow(string database, string table, List listColData, string updateWhere = null) { return AddRow(database, table, listColData.Select(n => n.columnName).ToArray(), listColData.Select(n => n.dataValue).ToArray(), updateWhere: updateWhere); } // Sends a query to the database public void SendQuery(string query) { mysqlCommand.CommandText = query; mysqlCommand.ExecuteNonQuery(); } // Returns object public object GetObject(string query) { mysqlCommand.CommandText = query; return mysqlCommand.ExecuteScalar(); } // Returns signed integer public int GetInt(string query) { return int.Parse(GetObject(query).ToString()); } // Returns unsigned integer public uint GetUint(string query) { return uint.Parse(GetObject(query).ToString()); } // Returns string public string GetString(string query) { return GetObject(query).ToString(); } // Returns datatable public DataTable GetTable(string query) { using (DataSet ds = new DataSet()) { using (MySqlDataAdapter _adapter = new MySqlDataAdapter(query, mysqlConnection)) _adapter.Fill(ds, "map"); return ds.Tables[0]; } } public void BulkSend(string database, string table, string column, List