コード例 #1
0
        public SqliteStatement(ISqlite3 sqlite3, IntPtr database, string sql)
        {
            _database = database;
            _sqlite3  = sqlite3;
            Sql       = sql;

            var result = _sqlite3.PrepareV2(
                _database,
                sql,
                -1,
                out _statement,
                IntPtr.Zero);

            try
            {
                ThrowOnError(result);
            }
            catch
            {
                if (_statement.IsValid())
                {
                    _sqlite3.Finalize(_statement);
                }

                throw;
            }
        }
コード例 #2
0
 public SqliteReader(
     ISqlite3 sqlite3,
     IntPtr database,
     IntPtr statement,
     bool ownsStatement)
 {
     _sqlite3       = sqlite3;
     _database      = database;
     _statement     = statement;
     _ownsStatement = ownsStatement;
 }
コード例 #3
0
 public static void ThrowOnError(
     this ISqlite3 sqlite3,
     IntPtr database,
     int result)
 {
     if (result != SqliteResult.Ok)
     {
         throw new SqliteException(
                   sqlite3.Errmsg(database) ?? string.Empty,
                   sqlite3.GetError(result));
     }
 }
コード例 #4
0
        private SqliteDatabase(ISqlite3 sqlite3, string path, SqliteOpen flags)
        {
            _sqlite3 = sqlite3;
            var result = _sqlite3.OpenV2(path, out _database, (int)flags, null);

            if (result != SqliteResult.Ok)
            {
                var message = $"Unable to open " + path + ".";

                if (_database.IsValid())
                {
                    var errorMessage = _sqlite3.Errmsg(_database);
                    _sqlite3.Close(_database);
                }

                throw new SqliteException(message, sqlite3.GetError(result));
            }

            Path = path;
        }
コード例 #5
0
 public static SqliteDatabase Open(ISqlite3 sqlite3, string path) => new SqliteDatabase(sqlite3, path, SqliteOpen.ReadWrite);
コード例 #6
0
 public static SqliteDatabase OpenRead(ISqlite3 sqlite3, string path) => new SqliteDatabase(sqlite3, path, SqliteOpen.ReadOnly);
コード例 #7
0
 public static KeyValuePair <int, string> GetError(this ISqlite3 sqlite3, int errorCode)
 {
     return(KeyValuePair.Create(errorCode, sqlite3.Errstr(errorCode) ?? string.Empty));
 }