Esempio n. 1
0
        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();
            }
        }
Esempio n. 2
0
        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());
            }
        }