public void Ctor_sets_message_and_errorCode() { var ex = new SqliteException("test", 1); Assert.Equal("test", ex.Message); Assert.Equal(1, ex.SqliteErrorCode); }
public virtual Stream GetStream(int ordinal) { if (ordinal < 0 || ordinal >= FieldCount) { throw new ArgumentOutOfRangeException(nameof(ordinal), ordinal, message: null); } var blobDatabaseName = sqlite3_column_database_name(Handle, ordinal).utf8_to_string(); var blobTableName = sqlite3_column_table_name(Handle, ordinal).utf8_to_string(); var rowidOrdinal = -1; for (var i = 0; i < FieldCount; i++) { if (i == ordinal) { continue; } var databaseName = sqlite3_column_database_name(Handle, i).utf8_to_string(); if (databaseName != blobDatabaseName) { continue; } var tableName = sqlite3_column_table_name(Handle, i).utf8_to_string(); if (tableName != blobTableName) { continue; } var columnName = sqlite3_column_origin_name(Handle, i).utf8_to_string(); if (columnName == "rowid") { rowidOrdinal = i; break; } var rc = sqlite3_table_column_metadata( _connection.Handle, databaseName, tableName, columnName, out var dataType, out var collSeq, out var notNull, out var primaryKey, out var autoInc); SqliteException.ThrowExceptionForRC(rc, _connection.Handle); if (string.Equals(dataType, "INTEGER", StringComparison.OrdinalIgnoreCase) && primaryKey != 0) { rowidOrdinal = i; break; } } if (rowidOrdinal < 0) { return(new MemoryStream(GetCachedBlob(ordinal), false)); } var blobColumnName = sqlite3_column_origin_name(Handle, ordinal).utf8_to_string(); var rowid = GetInt32(rowidOrdinal); return(new SqliteBlob(_connection, blobTableName, blobColumnName, rowid, readOnly: true)); }
/// <summary>Enables extension loading on the connection.</summary> /// <param name="enable">true to enable; false to disable</param> /// <seealso href="http://sqlite.org/loadext.html">Run-Time Loadable Extensions</seealso> public virtual void EnableExtensions(bool enable = true) { if (this._db == null || this._db.ptr == IntPtr.Zero) throw new InvalidOperationException("CallRequiresOpenConnection"+((object)nameof(EnableExtensions))); SqliteException.ThrowExceptionForRC(raw.sqlite3_enable_load_extension(this._db, enable ? 1 : 0), this._db); }
public virtual Stream GetStream(int ordinal, bool writable) { if (ordinal < 0 || ordinal >= FieldCount) { throw new ArgumentOutOfRangeException(nameof(ordinal), ordinal, message: null); } var blobDatabaseName = raw.sqlite3_column_database_name(_stmt, ordinal); var blobTableName = raw.sqlite3_column_table_name(_stmt, ordinal); var rowidOrdinal = -1; for (var i = 0; i < FieldCount; i++) { if (i == ordinal) { continue; } var databaseName = raw.sqlite3_column_database_name(_stmt, i); if (databaseName != blobDatabaseName) { continue; } var tableName = raw.sqlite3_column_table_name(_stmt, i); if (tableName != blobTableName) { continue; } var columnName = raw.sqlite3_column_origin_name(_stmt, i); if ((columnName == "rowid") || (columnName == "_rowid_") || (columnName == "oid")) { rowidOrdinal = i; break; } var rc = raw.sqlite3_table_column_metadata( _connection.Handle, databaseName, tableName, columnName, out var dataType, out var collSeq, out var notNull, out var primaryKey, out var autoInc); SqliteException.ThrowExceptionForRC(rc, _connection.Handle); if ((dataType == "INTEGER") && (primaryKey != 0)) { rowidOrdinal = i; break; } } if (rowidOrdinal < 0) { if (writable) { throw new InvalidOperationException(Resources.WritableStreamNotSupported); } return(new MemoryStream(GetCachedBlob(ordinal), false)); } var blobColumnName = raw.sqlite3_column_origin_name(_stmt, ordinal); var rowid = GetInt32(rowidOrdinal); return(new SqliteBlob(_connection, blobTableName, blobColumnName, rowid, writable)); }
public virtual Stream GetStream(int ordinal) { if (ordinal < 0 || ordinal >= FieldCount) { throw new ArgumentOutOfRangeException(nameof(ordinal), ordinal, message: null); } var blobDatabaseName = sqlite3_column_database_name(Handle, ordinal).utf8_to_string(); var blobTableName = sqlite3_column_table_name(Handle, ordinal).utf8_to_string(); if (!_rowidOrdinal.HasValue) { _rowidOrdinal = -1; var pkColumns = -1L; for (var i = 0; i < FieldCount; i++) { if (i == ordinal) { continue; } var databaseName = sqlite3_column_database_name(Handle, i).utf8_to_string(); if (databaseName != blobDatabaseName) { continue; } var tableName = sqlite3_column_table_name(Handle, i).utf8_to_string(); if (tableName != blobTableName) { continue; } var columnName = sqlite3_column_origin_name(Handle, i).utf8_to_string(); if (columnName == "rowid") { _rowidOrdinal = i; break; } var rc = sqlite3_table_column_metadata( _connection.Handle, databaseName, tableName, columnName, out var dataType, out var collSeq, out var notNull, out var primaryKey, out var autoInc); SqliteException.ThrowExceptionForRC(rc, _connection.Handle); if (string.Equals(dataType, "INTEGER", StringComparison.OrdinalIgnoreCase) && primaryKey != 0) { if (pkColumns < 0L) { using (var command = _connection.CreateCommand()) { command.CommandText = "SELECT COUNT(*) FROM pragma_table_info($table) WHERE pk != 0;"; command.Parameters.AddWithValue("$table", tableName); pkColumns = (long)command.ExecuteScalar() !; } } if (pkColumns == 1L) { _rowidOrdinal = i; break; } } } Debug.Assert(_rowidOrdinal.HasValue); } if (_rowidOrdinal.Value < 0) { return(new MemoryStream(GetCachedBlob(ordinal), false)); } var blobColumnName = sqlite3_column_origin_name(Handle, ordinal).utf8_to_string(); var rowid = GetInt64(_rowidOrdinal.Value); return(new SqliteBlob(_connection, blobDatabaseName, blobTableName, blobColumnName, rowid, readOnly: true)); }
public void ThrowExceptionForRC_does_nothing_when_non_error(int rc) { SqliteException.ThrowExceptionForRC(rc, null); }