/// <summary> Sqlite 3 column type. </summary> /// <exception cref="ArgumentNullException"> Thrown when one or more required arguments are null. </exception> /// <param name="stmt"> The statement. </param> /// <param name="index"> Zero-based index of the. </param> /// <returns> A SqliteColumnType. </returns> internal SqliteColumnType sqlite3_column_type(SqliteStatementHandle stmt, int index) { if (stmt == null) { throw new ArgumentNullException(nameof(stmt)); } stmt.CheckMaintenanceMode(); return((SqliteColumnType)DbProviderOperations.sqlite3_column_type(stmt.Statement, index)); }
/// <summary> Sqlite 3 reset. </summary> /// <exception cref="ArgumentNullException"> Thrown when one or more required arguments are null. </exception> /// <param name="stmt"> The statement. </param> /// <returns> A SqliteResultCode. </returns> internal SqliteResultCode sqlite3_reset(SqliteStatementHandle stmt) { if (stmt == null) { throw new ArgumentNullException(nameof(stmt)); } stmt.CheckMaintenanceMode(); return((SqliteResultCode)DbProviderOperations.sqlite3_reset(stmt.Statement)); }
/// <summary> Sqlite 3 column count. </summary> /// <exception cref="ArgumentNullException"> Thrown when one or more required arguments are null. </exception> /// <param name="stmt"> The statement. </param> /// <returns> An int. </returns> internal int sqlite3_column_count(SqliteStatementHandle stmt) { if (stmt == null) { throw new ArgumentNullException(nameof(stmt)); } stmt.CheckMaintenanceMode(); return(DbProviderOperations.sqlite3_column_count(stmt.Statement)); }
/// <summary> Sqlite 3 column BLOB. </summary> /// <exception cref="ArgumentNullException"> Thrown when one or more required arguments are null. </exception> /// <param name="stmt"> The statement. </param> /// <param name="index"> Zero-based index of the. </param> /// <returns> A byte[]. </returns> internal byte[] sqlite3_column_blob(SqliteStatementHandle stmt, int index) { if (stmt == null) { throw new ArgumentNullException(nameof(stmt)); } stmt.CheckMaintenanceMode(); return(DbProviderOperations.sqlite3_column_blob(stmt.Statement, index)); }
/// <summary> Sqlite 3 bind text. </summary> /// <exception cref="ArgumentNullException"> Thrown when one or more required arguments are null. </exception> /// <param name="stmt"> The statement. </param> /// <param name="index"> Zero-based index of the. </param> /// <param name="value"> The value. </param> /// <returns> A SqliteResultCode. </returns> internal SqliteResultCode sqlite3_bind_text(SqliteStatementHandle stmt, int index, string value) { if (stmt == null) { throw new ArgumentNullException(nameof(stmt)); } stmt.CheckMaintenanceMode(); return((SqliteResultCode)DbProviderOperations.sqlite3_bind_text(stmt.Statement, index, value)); }
/// <summary> Sqlite 3 bind parameter index. </summary> /// <exception cref="ArgumentNullException"> Thrown when one or more required arguments are null. </exception> /// <param name="stmt"> The statement. </param> /// <param name="name"> The name. </param> /// <returns> An int. </returns> internal int sqlite3_bind_parameter_index(SqliteStatementHandle stmt, string name) { if (stmt == null) { throw new ArgumentNullException(nameof(stmt)); } stmt.CheckMaintenanceMode(); return(DbProviderOperations.sqlite3_bind_parameter_index(stmt.Statement, name)); }
/// <summary> Gets. </summary> /// <exception cref="ObjectDisposedException"> Thrown when a supplied object has been disposed. </exception> /// <exception cref="ArgumentOutOfRangeException"> Thrown when one or more arguments are outside /// the required range. </exception> /// <exception cref="SqliteException"> Thrown when a Sqlite error condition occurs. </exception> /// <param name="index"> Zero-based index of the. </param> /// <param name="cancellationToken"> The cancellation token. </param> /// <returns> A SqliteStatementHandle. </returns> public SqliteStatementHandle Get(int index, CancellationToken cancellationToken) { if (_statements == null) { throw new ObjectDisposedException(GetType().Name); } if (index < 0 || index > _statements.Count) { throw new ArgumentOutOfRangeException(nameof(index)); } if (index < _statements.Count) { return(_statements[index]); } if (_statements.Count > 0 && index == _statements.Count) { //statements are all done return(null); } Random random = null; SqliteResultCode resultCode; do { var statement = new SqliteStatementHandle(_database, _forMaintenance); resultCode = statement.PrepareStatement(_commandText); switch (resultCode) { case SqliteResultCode.Ok: _statements.Add(statement); break; case SqliteResultCode.Busy: case SqliteResultCode.Locked: case SqliteResultCode.CantOpen: if (cancellationToken.IsCancellationRequested) { return(null); } if (random == null) { random = new Random(); } Thread.Sleep(random.Next(1, 150)); break; default: throw new SqliteException(resultCode, _database); } } while (!resultCode.IsSuccessCode()); return(_statements[index]); }
/// <summary> Sqlite 3 step return rowid. </summary> /// <exception cref="ArgumentNullException"> Thrown when one or more required arguments are null. </exception> /// <param name="db"> The database. </param> /// <param name="stmt"> The statement. </param> /// <param name="code"> [out] The code. </param> /// <returns> A long. </returns> internal long sqlite3_step_return_rowid(SqliteDatabaseHandle db, SqliteStatementHandle stmt, out SqliteResultCode code) { if (db == null) { throw new ArgumentNullException(nameof(db)); } if (stmt == null) { throw new ArgumentNullException(nameof(stmt)); } lock (_stepLocker) { stmt.CheckMaintenanceMode(); code = (SqliteResultCode)DbProviderOperations.sqlite3_step(stmt.Statement); return(code.IsSuccessCode() ? DbProviderOperations.sqlite3_last_insert_rowid(stmt.ForMaintenance ? db.MaintenanceDb : db.Db) : -1); } }