using System; using System.Data; using System.IO; using Common.Library.SQL.Base; using MySql.Data.MySqlClient; namespace Common.Library.SQL.MySQL { public class MySQL : SQLBase { protected MySqlConnection DBConnection {get;set;} protected MySqlCommand DBCommand {get;set;} protected MySqlDataReader DBReader {get;set;} public MySQL(string server, string database, string username, string password) { DBConnectionInfo = new DBConnectionInformation() { DBHost = server, DBUserName = username, DBName = database, DBPassword = password, DBType = DBType.MYSQL }; } protected override void InitConnection() { DBConnection = new MySqlConnection(DBConnectionInfo.GetConnectionString()); DBConnection.Open(); DBCommand = DBConnection.CreateCommand(); } protected override void DisposeConnection() { if(DBConnection.State == ConnectionState.Open) { DBConnection.Close(); } } protected override int GetOrdinal(string columnName) { return DBReader.GetOrdinal(columnName); } protected override int? GetInt(int columnID) { int? rv = null; if(!DBReader.IsDBNull(columnID)) { rv = DBReader.GetInt32(columnID); } return rv; } protected override int? GetInt(string columnName) { return GetInt(GetOrdinal(columnName)); } protected override byte? GetByte(int columnID) { byte? rv = null; if(!DBReader.IsDBNull(columnID)) { rv = DBReader.GetByte(columnID); } return rv; } protected override byte? GetByte(string columnName) { return GetByte(GetOrdinal(columnName)); } protected override byte[] GetBytes(int columnID) { byte[] rv = null; if (!DBReader.IsDBNull(columnID)) { const int CHUNK_SIZE = 2 * 1024; byte[] buffer = new byte[CHUNK_SIZE]; long bytesRead; long fieldOffset = 0; using (var stream = new MemoryStream()) { while ((bytesRead = DBReader.GetBytes(columnID, fieldOffset, buffer, 0, buffer.Length)) == buffer.Length) { stream.Write(buffer, 0, (int)bytesRead); fieldOffset += bytesRead; } rv = stream.ToArray(); } } return rv; } protected override byte[] GetBytes(string columnName) { return GetBytes(GetOrdinal(columnName)); } protected override decimal? GetDecimal(int columnID) { decimal? rv = null; if(!DBReader.IsDBNull(columnID)) { rv = DBReader.GetDecimal(columnID); } return rv; } protected override decimal? GetDecimal(string columnName) { return GetDecimal(GetOrdinal(columnName)); } protected override long? GetLong(int columnID) { long? rv = null; if(!DBReader.IsDBNull(columnID)) { rv = DBReader.GetInt64(columnID); } return rv; } protected override long? GetLong(string columnName) { return GetLong(GetOrdinal(columnName)); } protected override short? GetShort(int columnID) { short? rv = null; if(!DBReader.IsDBNull(columnID)) { rv = DBReader.GetInt16(columnID); } return rv; } protected override short? GetShort(string columnName) { return GetShort(GetOrdinal(columnName)); } protected override string GetString(int columnID) { string rv = string.Empty; if(!DBReader.IsDBNull(columnID)) { rv = DBReader.GetString(columnID); } return rv; } protected override string GetString(string columnName) { return GetString(GetOrdinal(columnName)); } protected override bool? GetBool(int columnID) { bool? rv = null; if(!DBReader.IsDBNull(columnID)) { rv = DBReader.GetBoolean(columnID); } return rv; } protected override bool? GetBool(string columnName) { return GetBool(GetOrdinal(columnName)); } protected override DateTime? GetDateTime(int columnID) { DateTime? rv = null; if(!DBReader.IsDBNull(columnID)) { rv = GetDateTime(columnID); } return rv; } protected override DateTime? GetDateTime(string columnName) { return GetDateTime(GetOrdinal(columnName)); } } }