-
Notifications
You must be signed in to change notification settings - Fork 5
TSQLite3ResultRow
- About
- Create
- ColumnCount
- ColumnName
- GetColumnType
- GetDoubleValue
- GetIntegerValue
- GetInt64Value
- GetStringValue
- GetBlobValue
- IsNull
TSQLite3ResultRow class encapsulates the SQLite3 result concrete row.
uses
sqlite3.result_row;
type
TSQLite3ResultRow = class
A new database result row can be created by call its constructor.
constructor Create (AErrorsStack : PSQL3LiteErrorsStack; AStatementHandle :
psqlite3_stmt);
uses
libpassqlite, sqlite3.errors_stack, utils.api.cstring, sqlite3.connection,
sqlite3.result_row;
var
errors : TSQLite3ErrorsStack;
handle : psqlite3;
statementHandle : psqlite3_stmt;
query : API.PAnsiStringWrapper;
connection : TSQLite3DatabaseConnection;
row : TSQLite3Result;
begin
errors := TSQLite3ErrorsStack.Create;
connection := TSQLite3DatabaseConnection.Create(@errors, @handle, 'database',
[SQLITE_OPEN_CREATE, SQLITE_OPEN_READWRITE]);
query := API.CString.Create('SELECT * FROM sqlite_master;').ToUniquePAnsiChar;
if sqlite3_prepare_v3(handle, query.Value, query.Length,
SQLITE_PREPARE_NORMALIZE, @statementHandle, nil) <> SQLITE_OK then
{ Oops! Something wrong. }
{ Run sql query and get row. }
while sqlite3_step(statementHandle) = SQLITE_ROW do
begin
row := TSQLite3ResultRow.Create(@errors, statementHandle);
end;
FreeAndNil(res);
FreeAndNil(query);
FreeAndNil(connection);
FreeAndNil(errors);
end;
Return the number of columns in the result set.
function ColumnCount : Integer;
uses
libpassqlite, sqlite3.errors_stack, utils.api.cstring, sqlite3.connection,
sqlite3.result_row;
var
errors : TSQLite3ErrorsStack;
handle : psqlite3;
statementHandle : psqlite3_stmt;
query : API.PAnsiStringWrapper;
connection : TSQLite3DatabaseConnection;
row : TSQLite3Result;
begin
errors := TSQLite3ErrorsStack.Create;
connection := TSQLite3DatabaseConnection.Create(@errors, @handle, 'database',
[SQLITE_OPEN_CREATE, SQLITE_OPEN_READWRITE]);
query := API.CString.Create('SELECT * FROM sqlite_master;').ToUniquePAnsiChar;
if sqlite3_prepare_v3(handle, query.Value, query.Length,
SQLITE_PREPARE_NORMALIZE, @statementHandle, nil) <> SQLITE_OK then
{ Oops! Something wrong. }
{ Run sql query and get row. }
while sqlite3_step(statementHandle) = SQLITE_ROW do
begin
row := TSQLite3ResultRow.Create(@errors, statementHandle);
writeln(row.ColumnCount);
row := row.NextRow;
end;
FreeAndNil(res);
FreeAndNil(query);
FreeAndNil(connection);
FreeAndNil(errors);
end;
Return the name assigned to a particular column in the result set.
function ColumnName (AIndex : Integer) : String;
uses
libpassqlite, sqlite3.errors_stack, utils.api.cstring, sqlite3.connection,
sqlite3.result_row;
var
errors : TSQLite3ErrorsStack;
handle : psqlite3;
statementHandle : psqlite3_stmt;
query : API.PAnsiStringWrapper;
connection : TSQLite3DatabaseConnection;
row : TSQLite3Result;
begin
errors := TSQLite3ErrorsStack.Create;
connection := TSQLite3DatabaseConnection.Create(@errors, @handle, 'database',
[SQLITE_OPEN_CREATE, SQLITE_OPEN_READWRITE]);
query := API.CString.Create('SELECT * FROM sqlite_master;').ToUniquePAnsiChar;
if sqlite3_prepare_v3(handle, query.Value, query.Length,
SQLITE_PREPARE_NORMALIZE, @statementHandle, nil) <> SQLITE_OK then
{ Oops! Something wrong. }
{ Run sql query and get row. }
while sqlite3_step(statementHandle) = SQLITE_ROW do
begin
row := TSQLite3ResultRow.Create(@errors, statementHandle);
writeln(row.ColumnName(0));
row := row.NextRow;
end;
FreeAndNil(res);
FreeAndNil(query);
FreeAndNil(connection);
FreeAndNil(errors);
end;
Returns the datatype for the initial data type of the result column.
function GetColumnType (AIndex : Integer) : TDataType;
uses
libpassqlite, sqlite3.errors_stack, utils.api.cstring, sqlite3.connection,
sqlite3.result_row;
var
errors : TSQLite3ErrorsStack;
handle : psqlite3;
statementHandle : psqlite3_stmt;
query : API.PAnsiStringWrapper;
connection : TSQLite3DatabaseConnection;
row : TSQLite3Result;
begin
errors := TSQLite3ErrorsStack.Create;
connection := TSQLite3DatabaseConnection.Create(@errors, @handle, 'database',
[SQLITE_OPEN_CREATE, SQLITE_OPEN_READWRITE]);
query := API.CString.Create('SELECT * FROM sqlite_master;').ToUniquePAnsiChar;
if sqlite3_prepare_v3(handle, query.Value, query.Length,
SQLITE_PREPARE_NORMALIZE, @statementHandle, nil) <> SQLITE_OK then
{ Oops! Something wrong. }
{ Run sql query and get row. }
while sqlite3_step(statementHandle) = SQLITE_ROW do
begin
row := TSQLite3ResultRow.Create(@errors, statementHandle);
if row.GetColumnType(0) = SQLITE_INTEGER then
;
row := row.NextRow;
end;
FreeAndNil(res);
FreeAndNil(query);
FreeAndNil(connection);
FreeAndNil(errors);
end;
Fundamental database column data types.
TDataType = (
SQLITE_INTEGER,
SQLITE_FLOAT,
SQLITE_BLOB,
SQLITE_NULL,
SQLITE_TEXT
);
Return double type value from column of the current result row of a query.
function GetDoubleValue (AColumnIndex : Integer) : Double;
function GetDoubleValue (AColumnName : String) : Double;
uses
libpassqlite, sqlite3.errors_stack, utils.api.cstring, sqlite3.connection,
sqlite3.result_row;
var
errors : TSQLite3ErrorsStack;
handle : psqlite3;
statementHandle : psqlite3_stmt;
query : API.PAnsiStringWrapper;
connection : TSQLite3DatabaseConnection;
row : TSQLite3Result;
begin
errors := TSQLite3ErrorsStack.Create;
connection := TSQLite3DatabaseConnection.Create(@errors, @handle, 'database',
[SQLITE_OPEN_CREATE, SQLITE_OPEN_READWRITE]);
query := API.CString.Create('SELECT * FROM sqlite_master;').ToUniquePAnsiChar;
if sqlite3_prepare_v3(handle, query.Value, query.Length,
SQLITE_PREPARE_NORMALIZE, @statementHandle, nil) <> SQLITE_OK then
{ Oops! Something wrong. }
{ Run sql query and get row. }
while sqlite3_step(statementHandle) = SQLITE_ROW do
begin
row := TSQLite3ResultRow.Create(@errors, statementHandle);
writeln(row.GetDoubleValue(0));
row := row.NextRow;
end;
FreeAndNil(res);
FreeAndNil(query);
FreeAndNil(connection);
FreeAndNil(errors);
end;
Return integer type value from column of the current result row of a query.
function GetIntegerValue (AColumnIndex : Integer) : Integer;
function GetIntegerValue (AColumnName : String) : Integer;
uses
libpassqlite, sqlite3.errors_stack, utils.api.cstring, sqlite3.connection,
sqlite3.result_row;
var
errors : TSQLite3ErrorsStack;
handle : psqlite3;
statementHandle : psqlite3_stmt;
query : API.PAnsiStringWrapper;
connection : TSQLite3DatabaseConnection;
row : TSQLite3Result;
begin
errors := TSQLite3ErrorsStack.Create;
connection := TSQLite3DatabaseConnection.Create(@errors, @handle, 'database',
[SQLITE_OPEN_CREATE, SQLITE_OPEN_READWRITE]);
query := API.CString.Create('SELECT * FROM sqlite_master;').ToUniquePAnsiChar;
if sqlite3_prepare_v3(handle, query.Value, query.Length,
SQLITE_PREPARE_NORMALIZE, @statementHandle, nil) <> SQLITE_OK then
{ Oops! Something wrong. }
{ Run sql query and get row. }
while sqlite3_step(statementHandle) = SQLITE_ROW do
begin
row := TSQLite3ResultRow.Create(@errors, statementHandle);
writeln(row.GetIntegerValue(0));
row := row.NextRow;
end;
FreeAndNil(res);
FreeAndNil(query);
FreeAndNil(connection);
FreeAndNil(errors);
end;
Return int64 type value from column of the current result row of a query.
function GetInt64Value (AColumnIndex : Integer) : Int64;
function GetInt64Value (AColumnName : String) : Int64;
uses
libpassqlite, sqlite3.errors_stack, utils.api.cstring, sqlite3.connection,
sqlite3.result_row;
var
errors : TSQLite3ErrorsStack;
handle : psqlite3;
statementHandle : psqlite3_stmt;
query : API.PAnsiStringWrapper;
connection : TSQLite3DatabaseConnection;
row : TSQLite3Result;
begin
errors := TSQLite3ErrorsStack.Create;
connection := TSQLite3DatabaseConnection.Create(@errors, @handle, 'database',
[SQLITE_OPEN_CREATE, SQLITE_OPEN_READWRITE]);
query := API.CString.Create('SELECT * FROM sqlite_master;').ToUniquePAnsiChar;
if sqlite3_prepare_v3(handle, query.Value, query.Length,
SQLITE_PREPARE_NORMALIZE, @statementHandle, nil) <> SQLITE_OK then
{ Oops! Something wrong. }
{ Run sql query and get row. }
while sqlite3_step(statementHandle) = SQLITE_ROW do
begin
row := TSQLite3ResultRow.Create(@errors, statementHandle);
writeln(row.GetInt64Value(0));
row := row.NextRow;
end;
FreeAndNil(res);
FreeAndNil(query);
FreeAndNil(connection);
FreeAndNil(errors);
end;
Return string type value from column of the current result row of a query.
function GetStringValue (AColumnIndex : Integer) : String;
function GetStringValue (AColumnName : String) : String;
uses
libpassqlite, sqlite3.errors_stack, utils.api.cstring, sqlite3.connection,
sqlite3.result_row;
var
errors : TSQLite3ErrorsStack;
handle : psqlite3;
statementHandle : psqlite3_stmt;
query : API.PAnsiStringWrapper;
connection : TSQLite3DatabaseConnection;
row : TSQLite3Result;
begin
errors := TSQLite3ErrorsStack.Create;
connection := TSQLite3DatabaseConnection.Create(@errors, @handle, 'database',
[SQLITE_OPEN_CREATE, SQLITE_OPEN_READWRITE]);
query := API.CString.Create('SELECT * FROM sqlite_master;').ToUniquePAnsiChar;
if sqlite3_prepare_v3(handle, query.Value, query.Length,
SQLITE_PREPARE_NORMALIZE, @statementHandle, nil) <> SQLITE_OK then
{ Oops! Something wrong. }
{ Run sql query and get row. }
while sqlite3_step(statementHandle) = SQLITE_ROW do
begin
row := TSQLite3ResultRow.Create(@errors, statementHandle);
writeln(row.GetStringValue(0));
row := row.NextRow;
end;
FreeAndNil(res);
FreeAndNil(query);
FreeAndNil(connection);
FreeAndNil(errors);
end;
Return binary blob type value from column of the current result row of a query.
function GetBlobValue (AColumnIndex : Integer) : TBlobBuffer;
function GetBlobValue (AColumnName : String) : TBlobBuffer;
uses
libpassqlite, sqlite3.errors_stack, utils.api.cstring, sqlite3.connection,
sqlite3.result_row;
var
errors : TSQLite3ErrorsStack;
handle : psqlite3;
statementHandle : psqlite3_stmt;
query : API.PAnsiStringWrapper;
connection : TSQLite3DatabaseConnection;
row : TSQLite3Result;
begin
errors := TSQLite3ErrorsStack.Create;
connection := TSQLite3DatabaseConnection.Create(@errors, @handle, 'database',
[SQLITE_OPEN_CREATE, SQLITE_OPEN_READWRITE]);
query := API.CString.Create('SELECT * FROM sqlite_master;').ToUniquePAnsiChar;
if sqlite3_prepare_v3(handle, query.Value, query.Length,
SQLITE_PREPARE_NORMALIZE, @statementHandle, nil) <> SQLITE_OK then
{ Oops! Something wrong. }
{ Run sql query and get row. }
while sqlite3_step(statementHandle) = SQLITE_ROW do
begin
row := TSQLite3ResultRow.Create(@errors, statementHandle);
row.GetBlobValue(0);
row := row.NextRow;
end;
FreeAndNil(res);
FreeAndNil(query);
FreeAndNil(connection);
FreeAndNil(errors);
end;
Binary blob data wrapper.
uses
sqlite3.result_row;
type
TSQLite3ResultRow = class
type
TBlobBuffer = class
end;
Returns the length of the valid data in the buffer.
function GetBufferDataSize : Int64;
uses
libpassqlite, sqlite3.errors_stack, utils.api.cstring, sqlite3.connection,
sqlite3.result_row;
var
errors : TSQLite3ErrorsStack;
handle : psqlite3;
statementHandle : psqlite3_stmt;
query : API.PAnsiStringWrapper;
connection : TSQLite3DatabaseConnection;
row : TSQLite3Result;
begin
errors := TSQLite3ErrorsStack.Create;
connection := TSQLite3DatabaseConnection.Create(@errors, @handle, 'database',
[SQLITE_OPEN_CREATE, SQLITE_OPEN_READWRITE]);
query := API.CString.Create('SELECT * FROM sqlite_master;').ToUniquePAnsiChar;
if sqlite3_prepare_v3(handle, query.Value, query.Length,
SQLITE_PREPARE_NORMALIZE, @statementHandle, nil) <> SQLITE_OK then
{ Oops! Something wrong. }
{ Run sql query and get row. }
while sqlite3_step(statementHandle) = SQLITE_ROW do
begin
row := TSQLite3ResultRow.Create(@errors, statementHandle);
writeln(row.GetBlobValue(0).GetBufferDataSize);
row := row.NextRow;
end;
FreeAndNil(res);
FreeAndNil(query);
FreeAndNil(connection);
FreeAndNil(errors);
end;
Return a pointer to the data in the buffer.
function GetBufferData : Pointer;
uses
libpassqlite, sqlite3.errors_stack, utils.api.cstring, sqlite3.connection,
sqlite3.result_row;
var
errors : TSQLite3ErrorsStack;
handle : psqlite3;
statementHandle : psqlite3_stmt;
query : API.PAnsiStringWrapper;
connection : TSQLite3DatabaseConnection;
row : TSQLite3Result;
begin
errors := TSQLite3ErrorsStack.Create;
connection := TSQLite3DatabaseConnection.Create(@errors, @handle, 'database',
[SQLITE_OPEN_CREATE, SQLITE_OPEN_READWRITE]);
query := API.CString.Create('SELECT * FROM sqlite_master;').ToUniquePAnsiChar;
if sqlite3_prepare_v3(handle, query.Value, query.Length,
SQLITE_PREPARE_NORMALIZE, @statementHandle, nil) <> SQLITE_OK then
{ Oops! Something wrong. }
{ Run sql query and get row. }
while sqlite3_step(statementHandle) = SQLITE_ROW do
begin
row := TSQLite3ResultRow.Create(@errors, statementHandle);
row.GetBlobValue(0).GetBufferData;
row := row.NextRow;
end;
FreeAndNil(res);
FreeAndNil(query);
FreeAndNil(connection);
FreeAndNil(errors);
end;
Return concrete data byte.
function GetBufferByte (AOffset : Int64) : Byte;
uses
libpassqlite, sqlite3.errors_stack, utils.api.cstring, sqlite3.connection,
sqlite3.result_row;
var
errors : TSQLite3ErrorsStack;
handle : psqlite3;
statementHandle : psqlite3_stmt;
query : API.PAnsiStringWrapper;
connection : TSQLite3DatabaseConnection;
row : TSQLite3Result;
begin
errors := TSQLite3ErrorsStack.Create;
connection := TSQLite3DatabaseConnection.Create(@errors, @handle, 'database',
[SQLITE_OPEN_CREATE, SQLITE_OPEN_READWRITE]);
query := API.CString.Create('SELECT * FROM sqlite_master;').ToUniquePAnsiChar;
if sqlite3_prepare_v3(handle, query.Value, query.Length,
SQLITE_PREPARE_NORMALIZE, @statementHandle, nil) <> SQLITE_OK then
{ Oops! Something wrong. }
{ Run sql query and get row. }
while sqlite3_step(statementHandle) = SQLITE_ROW do
begin
row := TSQLite3ResultRow.Create(@errors, statementHandle);
writeln(row.GetBlobValue(0).GetBufferByte(0));
row := row.NextRow;
end;
FreeAndNil(res);
FreeAndNil(query);
FreeAndNil(connection);
FreeAndNil(errors);
end;
Return buffer bytes range.
function GetBufferBytesRange (AOffset : Int64; ASize : Int64) :
TByteArray;
uses
libpassqlite, sqlite3.errors_stack, utils.api.cstring, sqlite3.connection,
sqlite3.result_row;
var
errors : TSQLite3ErrorsStack;
handle : psqlite3;
statementHandle : psqlite3_stmt;
query : API.PAnsiStringWrapper;
connection : TSQLite3DatabaseConnection;
row : TSQLite3Result;
begin
errors := TSQLite3ErrorsStack.Create;
connection := TSQLite3DatabaseConnection.Create(@errors, @handle, 'database',
[SQLITE_OPEN_CREATE, SQLITE_OPEN_READWRITE]);
query := API.CString.Create('SELECT * FROM sqlite_master;').ToUniquePAnsiChar;
if sqlite3_prepare_v3(handle, query.Value, query.Length,
SQLITE_PREPARE_NORMALIZE, @statementHandle, nil) <> SQLITE_OK then
{ Oops! Something wrong. }
{ Run sql query and get row. }
while sqlite3_step(statementHandle) = SQLITE_ROW do
begin
row := TSQLite3ResultRow.Create(@errors, statementHandle);
row.GetBlobValue(0).GetBufferByteRange(0, 255);
row := row.NextRow;
end;
FreeAndNil(res);
FreeAndNil(query);
FreeAndNil(connection);
FreeAndNil(errors);
end;
Returns true if the buffer contains no data.
function IsEmpty : Boolean;
uses
libpassqlite, sqlite3.errors_stack, utils.api.cstring, sqlite3.connection,
sqlite3.result_row;
var
errors : TSQLite3ErrorsStack;
handle : psqlite3;
statementHandle : psqlite3_stmt;
query : API.PAnsiStringWrapper;
connection : TSQLite3DatabaseConnection;
row : TSQLite3Result;
begin
errors := TSQLite3ErrorsStack.Create;
connection := TSQLite3DatabaseConnection.Create(@errors, @handle, 'database',
[SQLITE_OPEN_CREATE, SQLITE_OPEN_READWRITE]);
query := API.CString.Create('SELECT * FROM sqlite_master;').ToUniquePAnsiChar;
if sqlite3_prepare_v3(handle, query.Value, query.Length,
SQLITE_PREPARE_NORMALIZE, @statementHandle, nil) <> SQLITE_OK then
{ Oops! Something wrong. }
{ Run sql query and get row. }
while sqlite3_step(statementHandle) = SQLITE_ROW do
begin
row := TSQLite3ResultRow.Create(@errors, statementHandle);
if row.GetBlobValue(0).IsEmpty then
;
row := row.NextRow;
end;
FreeAndNil(res);
FreeAndNil(query);
FreeAndNil(connection);
FreeAndNil(errors);
end;
Check if column values is null.
function IsNull (AColumnIndex : Integer) : Boolean;
function IsNull (AColumnName : String) : Boolean;
uses
libpassqlite, sqlite3.errors_stack, utils.api.cstring, sqlite3.connection,
sqlite3.result_row;
var
errors : TSQLite3ErrorsStack;
handle : psqlite3;
statementHandle : psqlite3_stmt;
query : API.PAnsiStringWrapper;
connection : TSQLite3DatabaseConnection;
row : TSQLite3Result;
begin
errors := TSQLite3ErrorsStack.Create;
connection := TSQLite3DatabaseConnection.Create(@errors, @handle, 'database',
[SQLITE_OPEN_CREATE, SQLITE_OPEN_READWRITE]);
query := API.CString.Create('SELECT * FROM sqlite_master;').ToUniquePAnsiChar;
if sqlite3_prepare_v3(handle, query.Value, query.Length,
SQLITE_PREPARE_NORMALIZE, @statementHandle, nil) <> SQLITE_OK then
{ Oops! Something wrong. }
{ Run sql query and get row. }
while sqlite3_step(statementHandle) = SQLITE_ROW do
begin
row := TSQLite3ResultRow.Create(@errors, statementHandle);
if row.IsNull(0) then
;
row := row.NextRow;
end;
FreeAndNil(res);
FreeAndNil(query);
FreeAndNil(connection);
FreeAndNil(errors);
end;