コード例 #1
0
        public MultiValueDictionary(SQLiteConnection connection,
                                    string name,
                                    string tableName,
                                    ISQLiteSerializer <TKey> keySerializer,
                                    ISQLiteSerializer <TValue> valueSerializer,
                                    bool isReadOnly)
            : base(connection, name, tableName, valueSerializer, isReadOnly)
        {
            _connection      = connection;
            _tableName       = tableName;
            _keySerializer   = keySerializer;
            _valueSerializer = valueSerializer;

            CreateObjectTableIfNecessary();

            _existsQuery    = string.Format("SELECT EXISTS(SELECT * FROM {0} WHERE key = @key)", _tableName);
            _existsRowQuery = string.Format("SELECT EXISTS(SELECT * FROM {0} WHERE rowid = @rowid)", tableName);
            _putQuery       = string.Format("INSERT INTO {0} (key, value) VALUES (@key, @value)", _tableName);
            _getAllKeys     = string.Format("SELECT key FROM {0}", _tableName);
            _getAll         = string.Format("SELECT key, value FROM {0}", _tableName);
            _getByKey       = string.Format("SELECT value FROM {0} where key = @key", _tableName);
            _getByRowId     = string.Format("SELECT value FROM {0} WHERE rowid = @rowid", tableName);
            _removeRowQuery = string.Format("DELETE FROM {0} WHERE rowid = @rowid", _tableName);
            _removeQuery    = string.Format("DELETE FROM {0} WHERE key = @key", _tableName);
        }
コード例 #2
0
        public Point2DCollection(SQLiteConnection connection,
                                 string name,
                                 string tableName,
                                 ISQLiteSerializer <TValue> valueSerializer,
                                 bool isReadOnly)
            : base(connection, name, tableName, valueSerializer, isReadOnly)
        {
            _connection      = connection;
            _tableName       = tableName;
            _valueSerializer = valueSerializer;

            _getAllQuery                = string.Format("SELECT x, y, value FROM {0}", tableName);
            _getAllKeysQuery            = string.Format("SELECT x, y FROM {0}", tableName);
            _existsKeyQuery             = string.Format("SELECT EXISTS(SELECT * FROM {0} WHERE x = @x AND y = @y)", tableName);
            _existsRowQuery             = string.Format("SELECT EXISTS(SELECT * FROM {0} WHERE rowid = @rowid)", tableName);
            _getByRowId                 = string.Format("SELECT value FROM {0} WHERE rowid = @rowid", tableName);
            _getByExactCoordinatesQuery = string.Format("SELECT value FROM {0} WHERE x = @x AND y = @y", tableName);
            _getKeysWithinQuery         = string.Format("SELECT x, y FROM {0} WHERE x >= @minX AND x <= @maxX AND y >= @minY AND y <= @maxY", tableName);
            _getValuesWithinQuery       = string.Format("SELECT value FROM {0} WHERE x >= @minX AND x <= @maxX AND y >= @minY AND y <= @maxY", tableName);
            _getWithinQuery             = string.Format("SELECT x, y, value FROM {0} WHERE x >= @minX AND x <= @maxX AND y >= @minY AND y <= @maxY", tableName);
            _putQuery          = string.Format("INSERT INTO {0} (x, y, value) VALUES (@x, @y, @value)", tableName);
            _removeQuery       = string.Format("DELETE FROM {0} WHERE x = @x AND y = @y", tableName);
            _removeRowQuery    = string.Format("DELETE FROM {0} WHERE rowid = @rowid", tableName);
            _removeWithinQuery = string.Format("DELETE FROM {0} WHERE x >= @minX AND x <= @maxX AND y >= @minY AND y <= @maxY", tableName);

            CreateObjectTableIfNecessary();
        }
コード例 #3
0
        public IntervalCollection(SQLiteConnection connection,
                                  string name,
                                  string tableName,
                                  ISQLiteSerializer <TKey> keySerializer,
                                  ISQLiteSerializer <TValue> valueSerializer,
                                  bool isReadOnly)
            : base(connection, name, tableName, valueSerializer, isReadOnly)
        {
            _connection      = connection;
            _tableName       = tableName;
            _keySerializer   = keySerializer;
            _valueSerializer = valueSerializer;

            CreateObjectTableIfNecessary();

            using (var command = _connection.CreateCommand())
            {
                command.CommandText = string.Format("SELECT MAX(id) FROM {0}", _tableName);
                var value = command.ExecuteScalar();
                if (!Convert.IsDBNull(value))
                {
                    _lastId = Convert.ToInt64(value);
                }
            }
        }
コード例 #4
0
        public HashSet(SQLiteConnection connection, string name, string tableName, ISQLiteSerializer <T> serializer, bool isReadOnly)
            : base(connection, name, tableName, serializer, isReadOnly)
        {
            _connection = connection;
            _tableName  = tableName;
            _serializer = serializer;

            CreateTableIfNecessary(connection, serializer, tableName);
        }
コード例 #5
0
        private void CreateTableIfNecessary(SQLiteConnection connection, ISQLiteSerializer <T> serializer, string tableName)
        {
            using (var command = connection.CreateCommand())
            {
                command.CommandText =
                    string.Format("CREATE TABLE IF NOT EXISTS {0} (value {1} PRIMARY KEY NOT NULL)",
                                  tableName,
                                  SQLiteHelper.GetAffinity(serializer.DatabaseType));

                command.ExecuteNonQuery();
            }
        }
コード例 #6
0
        public Bag(SQLiteConnection connection,
                   string name,
                   string tableName,
                   ISQLiteSerializer <T> serializer,
                   bool isReadOnly)
            : base(connection, name, tableName, serializer, isReadOnly)
        {
            _connection = connection;
            _serializer = serializer;
            _tableName  = tableName;

            CreateTableIfNecessary(connection, serializer, tableName);

            _put = string.Format("INSERT INTO {0} (value) VALUES (@value)", tableName);
        }
コード例 #7
0
        public OrderedCollection(SQLiteConnection connection,
                                 string name,
                                 string tableName,
                                 ISQLiteSerializer <TKey> keySerializer,
                                 ISQLiteSerializer <TValue> valueSerializer,
                                 bool isReadOnly)
            : base(connection, name, tableName, valueSerializer, isReadOnly)
        {
            _connection      = connection;
            _tableName       = tableName;
            _keySerializer   = keySerializer;
            _valueSerializer = valueSerializer;

            CreateObjectTableIfNecessary();
        }
コード例 #8
0
        public Queue(SQLiteConnection connection,
                     string name,
                     string tableName,
                     ISQLiteSerializer <T> serializer,
                     bool isReadOnly)
            : base(connection, name, tableName, serializer, isReadOnly)
        {
            _connection = connection;
            _serializer = serializer;

            CreateTableIfNecessary(connection, serializer, tableName);

            _put     = string.Format("INSERT INTO {0} (value) VALUES (@value)", tableName);
            _tryPeek = string.Format("SELECT id, value FROM {0} LIMIT 0, 1", tableName);
            _remove  = string.Format("DELETE FROM {0} WHERE id = @id", tableName);
        }
コード例 #9
0
        public Dictionary(SQLiteConnection connection,
                          string name,
                          string tableName,
                          ISQLiteSerializer <TKey> keySerializer,
                          ISQLiteSerializer <TValue> valueSerializer,
                          bool isReadOnly)
            : base(connection, name, tableName, valueSerializer, isReadOnly)
        {
            _connection      = connection;
            _tableName       = tableName;
            _keySerializer   = keySerializer;
            _valueSerializer = valueSerializer;

            CreateObjectTableIfNecessary();

            _getAllQuery      = string.Format("SELECT key, value FROM {0}", tableName);
            _getAllKeysQuery  = string.Format("SELECT key FROM {0}", tableName);
            _getManyQuery     = string.Format("SELECT key, value FROM {0} WHERE key = @key", tableName);
            _getQuery         = string.Format("SELECT key, value FROM {0} WHERE key = @key", tableName);
            _deleteQuery      = string.Format("DELETE FROM {0} WHERE key = @key", _tableName);
            _existsQuery      = string.Format("SELECT EXISTS(SELECT * FROM {0} WHERE key = @key)", _tableName);
            _putQuery         = string.Format("INSERT OR REPLACE INTO {0} (key, value) VALUES (@key, @value)", tableName);
            _putOrIgnoreQuery = string.Format("INSERT OR IGNORE INTO {0} (key, value) VALUES (@key, @value)", tableName);
        }