public void BindProperty(SqliteStatement statement, int index, byte[] value) { statement.BindBlob(index, value); }
public void BindProperty(SqliteStatement statement, int index, ulong value) { var n = unchecked ((long)value); statement.BindInt64(index, n); }
public async Task General() { const int recordCount = 10; using (var dbGenerator = new DbGenerator(DbFilename)) { var dbInterface = new SqliteInterface(dbGenerator.CreateDb()); const string insertSql = "INSERT INTO Frog (Name, DateOfBirth) VALUES (@Name, @DateOfBirth);" + "SELECT last_insert_rowid();"; const string readSingleSql = "SELECT * FROM Frog WHERE Id = @Id"; const string readAllSql = "SELECT * FROM Frog"; const string updateSql = "UPDATE Frog SET Name = @NewName WHERE Id BETWEEN @FromId AND @ToId"; var ids = new List <long>(); for (long i = 1; i <= recordCount; i++) { var nameParam = new SqliteParameter("@Name", $"Kermit{i}"); var dateOfBirthParam = new SqliteParameter("@DateOfBirth", DateTime.Today.AddDays(-i)); var statement = new SqliteStatement(insertSql, nameParam, dateOfBirthParam); var id = await dbInterface.ExecuteScalarAsync(statement).ConfigureAwait(false); // it's a new DB so should be the case, depending on this for following tests Assert.Equal(i, id); ids.Add((long)id); } Assert.Equal(recordCount, ids.Count); foreach (var id in ids) { var idParam = new SqliteParameter("@Id", id); var statement = new SqliteStatement(readSingleSql, idParam); using (var reader = await dbInterface.GetReaderAsync(statement).ConfigureAwait(false)) { Assert.True(await reader.ReadAsync().ConfigureAwait(false)); Assert.Equal(id, reader["Id"]); Assert.Equal($"Kermit{id}", reader["Name"]); Assert.Equal(DateTime.Today.AddDays(-id), Convert.ToDateTime(reader["DateOfBirth"])); } } var updateStatement = new SqliteStatement(updateSql, new SqliteParameter("@NewName", "Frank"), new SqliteParameter("@FromId", 5), new SqliteParameter("@ToId", 8)); var affected = await dbInterface.ExecuteNonQueryAsync(updateStatement).ConfigureAwait(false); Assert.Equal(4, affected); var readAllStatement = new SqliteStatement(readAllSql); using (var reader = await dbInterface.GetReaderAsync(readAllStatement).ConfigureAwait(false)) { var count = 0; while (await reader.ReadAsync().ConfigureAwait(false)) { count++; var id = (long)reader["Id"]; if (id >= 5 && id <= 8) { Assert.Equal("Frank", reader["Name"]); } else { Assert.Equal($"Kermit{id}", reader["Name"]); } } Assert.Equal(recordCount, count); } } }
internal override int GetCursorForTable(SqliteStatement stmt, int database, int rootPage) { throw new NotImplementedException(); }
internal override long GetRowIdForCursor(SqliteStatement stmt, int cursor) { throw new NotImplementedException(); }
internal override void Bind_Double(SqliteStatement stmt, int index, double value) { this._bindValue(stmt, index, value); }
internal override string ColumnTableName(SqliteStatement stmt, int index) { throw new NotImplementedException(); }
internal override int ColumnCount(SqliteStatement stmt) { lock (dbLock) { return(stmt._sqlite_stmt.ColumnCount); } }
internal override string ColumnName(SqliteStatement stmt, int index) { lock (dbLock) { return(stmt._sqlite_stmt.ColumnName(index)); } }
internal override void Bind_DateTime(SqliteStatement stmt, int index, DateTime dt) { this._bindValue(stmt, index, dt.ToString()); }
internal override int Bind_ParamCount(SqliteStatement stmt) { return(stmt.ParamList.Count); }
internal override void Bind_Blob(SqliteStatement stmt, int index, byte[] blobData) { this._bindValue(stmt, index, blobData); }
internal override void Bind_Text(SqliteStatement stmt, int index, string value) { this._bindValue(stmt, index, value); }
internal override void Bind_Int64(SqliteStatement stmt, int index, long value) { this._bindValue(stmt, index, value); }
public void BindProperty(SqliteStatement statement, int index, ushort value) { statement.BindInt64(index, value); }
internal override int ColumnIndex(SqliteStatement stmt, string columnName) { throw new NotImplementedException(); }
public void BindProperty(SqliteStatement statement, int index, float value) { statement.BindFloat64(index, value); }
public void BindProperty(SqliteStatement statement, int index, string value) { statement.BindText(index, value); }