protected override async Task <bool> IsTableExist(DbConnection connection, DataTable.Define define) { MySqlCommand exist = new MySqlCommand(string.Format( "SELECT count(TABLE_NAME) as result FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = '{0}' AND TABLE_NAME = '{1}';", database, NameMapping(define)), (MySqlConnection)connection); try { using (var reader = Token == null ? await exist.ExecuteReaderAsync() : await exist.ExecuteReaderAsync(Token.Value)) { if (Token == null ? await reader.ReadAsync() : await reader.ReadAsync(Token.Value)) { return(reader.GetInt32(0) != 0); } return(false); } } finally { exist.Dispose(); } }
protected override void InsertOrUpdate( StringBuilder builder, Parameters parameters, DataTable.Define define, DataTable.Reader reader) { using (Buffer columns = Acquire(), values = Acquire()) { int index = 0; for (int i = 0; i < define.Columns.Count; ++i) { DataTable.Column column = define.Columns[i]; switch (column.type) { case DataTable.Type.Bool: { bool?result = null; if (!reader.Get(i, ref result)) { continue; } if (index != 0) { values.buffer.Append(", "); } if (result == null) { values.buffer.Append("NULL"); } else { ToString(result.Value, values.buffer); } } break; case DataTable.Type.Int: { int?result = null; if (!reader.Get(i, ref result)) { continue; } if (index != 0) { values.buffer.Append(", "); } if (result == null) { values.buffer.Append("NULL"); } else { ToString(result.Value, values.buffer); } } break; case DataTable.Type.UInt: { uint?result = null; if (!reader.Get(i, ref result)) { continue; } if (index != 0) { values.buffer.Append(", "); } if (result == null) { values.buffer.Append("NULL"); } else { ToString(result.Value, values.buffer); } } break; case DataTable.Type.Long: { long?result = null; if (!reader.Get(i, ref result)) { continue; } if (index != 0) { values.buffer.Append(", "); } if (result == null) { values.buffer.Append("NULL"); } else { ToString(result.Value, values.buffer); } } break; case DataTable.Type.ULong: { ulong?result = null; if (!reader.Get(i, ref result)) { continue; } if (index != 0) { values.buffer.Append(", "); } if (result == null) { values.buffer.Append("NULL"); } else { ToString(result.Value, values.buffer); } } break; case DataTable.Type.Double: { double?result = null; if (!reader.Get(i, ref result)) { continue; } if (index != 0) { values.buffer.Append(", "); } if (result == null) { values.buffer.Append("NULL"); } else { ToString(result.Value, values.buffer); } } break; case DataTable.Type.String: { string result = null; if (!reader.Get(i, ref result) || result == null) { continue; } if (index != 0) { values.buffer.Append(", "); } if (result == null) { values.buffer.Append("NULL"); } else { ToString(result, values.buffer); } } break; case DataTable.Type.DateTime: { DateTime?result = null; if (!reader.Get(i, ref result)) { continue; } if (index != 0) { values.buffer.Append(", "); } if (result == null) { values.buffer.Append("NULL"); } else { ToString(result.Value, values.buffer); } } break; case DataTable.Type.Bytes: { byte[] result = null; if (!reader.Get(i, ref result) || result == null) { continue; } if (index != 0) { values.buffer.Append(", "); } if (result == null) { values.buffer.Append("NULL"); } else { int count = parameters.Count; values.buffer.Append(Placeholder(count)); parameters.Add(count, result); } } break; } if (index != 0) { columns.buffer.Append(", "); } columns.buffer.Append(EscapeColumn(column)); ++index; } builder.AppendFormat("REPLACE INTO {0} ({1}) VALUES ({2});", EscapeTable(NameMapping(define)), columns.buffer.ToString(), values.buffer.ToString()); } }