internal static object Do(string sql, bool createDB, object arg, ReaderCallback callback, params object[] args) { IDatabaseBackend db = Backend; Exception e = null; for (int i = 0; i < 10; i++) { try { if (callback != null) { arg = db.Iterate(sql, args, arg, callback); } else { db.Execute(sql, args, createDB); } return(arg); } catch (Exception ex) { e = ex; // try yet again } } Logger.LogError("Error executing SQL statement: " + sql, e); return(arg); }
public SqlTransaction() { IDatabaseBackend db = Database.Backend; conn = db.CreateConnection(); conn.Open(); if (db.MultipleSchema) { conn.ChangeDatabase(Server.Config.MySQLDatabaseName); } transaction = conn.BeginTransaction(); }
public bool Execute(string sql, params object[] args) { IDatabaseBackend db = Database.Backend; try { using (IDbCommand cmd = db.CreateCommand(sql, conn)) { cmd.Transaction = transaction; db.FillParams(cmd, args); cmd.ExecuteNonQuery(); return(true); } } catch (Exception ex) { Logger.LogError("Error executing SQL transaction: " + sql, ex); return(false); } }
internal static void FillParams(IDbCommand cmd, object[] parameters) { if (parameters == null || parameters.Length == 0) { return; } IDatabaseBackend db = Database.Backend; string[] names = GetNames(parameters.Length); for (int i = 0; i < parameters.Length; i++) { IDbDataParameter arg = db.CreateParameter(); arg.ParameterName = names[i]; arg.Value = parameters[i]; cmd.Parameters.Add(arg); } }
public bool Execute(string sql, params object[] args) { IDatabaseBackend db = Database.Backend; try { using (IDbCommand cmd = db.CreateCommand(sql, conn)) { cmd.Transaction = transaction; SqlQuery.FillParams(cmd, args); cmd.ExecuteNonQuery(); return(true); } } catch (Exception e) { System.IO.File.AppendAllText("MySQL_error.log", DateTime.Now + " " + sql + "\r\n"); Logger.LogError(e); return(false); } }
/// <summary> Executes an SQL command that does not return any results. </summary> public static void Execute(string sql, object[] parameters, bool createDB) { IDatabaseBackend db = Database.Backend; using (IDbConnection conn = db.CreateConnection()) { conn.Open(); if (!createDB && db.MultipleSchema) { conn.ChangeDatabase(Server.Config.MySQLDatabaseName); } using (IDbCommand cmd = db.CreateCommand(sql, conn)) { FillParams(cmd, parameters); cmd.ExecuteNonQuery(); } conn.Close(); } }
/// <summary> Excecutes an SQL query, invoking a callback on the returned rows one by one. </summary> public static object Iterate(string sql, object[] parameters, object arg, ReaderCallback callback) { IDatabaseBackend db = Database.Backend; using (IDbConnection conn = db.CreateConnection()) { conn.Open(); if (db.MultipleSchema) { conn.ChangeDatabase(Server.Config.MySQLDatabaseName); } using (IDbCommand cmd = db.CreateCommand(sql, conn)) { FillParams(cmd, parameters); using (IDataReader reader = cmd.ExecuteReader()) { while (reader.Read()) { arg = callback(reader, arg); } } } conn.Close(); } return(arg); }