public static Hashtable GetAllHash(MySqlConnection conn, MySqlTransaction trans, string table, bool cache, params WhereCol[] whereQuery) { if (cache && DSShared.DB.DBTableTypeCache.Instance.GetHash(table) != null) { return(DSShared.DB.DBTableTypeCache.Instance.GetHash(table)); } ArrayList list = GetAll(conn, trans, table, cache, whereQuery); DSShared.DB.DBTableType thisType = DSShared.DB.DBTableTypeCache.Instance.GetType(table); if (thisType.AutoNumber != null) { PropertyInfo pi = thisType.AutoNumber; Hashtable hash = new Hashtable(); foreach (MySQL_DBTable dt in list) { hash[pi.GetGetMethod().Invoke(dt, null)] = dt; } if (cache) { DSShared.DB.DBTableTypeCache.Instance.CacheHash(table, hash); } return(hash); } throw new Exception("Call GetAllHash on table: " + table + " invalid since it does not have an autonumber defined"); }
public static ArrayList GetAll(MySqlConnection conn, MySqlTransaction trans, string table, bool cache, params WhereCol[] whereQuery) { DSShared.DB.DBTableType thisTable = DSShared.DB.DBTableTypeCache.Instance.CacheTable(table); MySqlCommand comm = new MySqlCommand("SELECT * FROM " + thisTable.TableName, conn, trans); if (whereQuery != null && whereQuery.Length > 0) { bool flag = false; comm.CommandText += " WHERE "; int i = 0; foreach (WhereCol dbc in whereQuery) { if (flag) { comm.CommandText += " AND "; } else { flag = true; } string paramID = "?" + paramPrefix + (i++); comm.CommandText += dbc.Column + "=" + paramID; comm.Parameters.Add(paramID, dbc.Data); } } MySqlDataReader res = comm.ExecuteReader(); ArrayList list = new ArrayList(); Type myType = DSShared.DB.DBTableTypeCache.Instance.GetTableType(thisTable.TableName); while (res.Read()) { //if null object here, then the type does not have a default constructor defined object newObject = myType.GetConstructor(new Type[] {}).Invoke(null); foreach (PropertyInfo pi in thisTable.Columns) { if (thisTable[pi] != null) { pi.SetValue(newObject, res[thisTable[pi].ColumnName], null); } } //Console.WriteLine("Type: "+objType); list.Add(newObject); //((DBTable)newObject).FinishGet(conn2); } res.Close(); foreach (MySQL_DBTable dbt in list) { dbt.FinishGet(conn, trans); } if (cache) { DSShared.DB.DBTableTypeCache.Instance.CacheList(table, list); } if (FinishGetAll != null) { FinishGetAll(table, list); } return(list); }
public MySQL_DBTable(string tableName) { myType = DSShared.DB.DBTableTypeCache.Instance.CacheTable(tableName); }