mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-04-10 10:28:21 +02:00
LCL-Android-Example: Now creating tables works.
git-svn-id: trunk@39431 -
This commit is contained in:
parent
c05d327706
commit
8713e20438
@ -2,16 +2,16 @@ object formSqlite: TformSqlite
|
||||
Left = 119
|
||||
Height = 240
|
||||
Top = 244
|
||||
Width = 320
|
||||
Width = 257
|
||||
Caption = 'formSqlite'
|
||||
ClientHeight = 240
|
||||
ClientWidth = 320
|
||||
ClientWidth = 257
|
||||
LCLVersion = '1.1'
|
||||
object Button1: TButton
|
||||
Left = 8
|
||||
Height = 25
|
||||
Top = 8
|
||||
Width = 75
|
||||
Top = 24
|
||||
Width = 112
|
||||
Caption = 'Connect'
|
||||
OnClick = Button1Click
|
||||
TabOrder = 0
|
||||
@ -19,8 +19,9 @@ object formSqlite: TformSqlite
|
||||
object DBEdit1: TDBEdit
|
||||
Left = 8
|
||||
Height = 23
|
||||
Top = 104
|
||||
Top = 88
|
||||
Width = 80
|
||||
DataField = 'FirstFieldStr'
|
||||
DataSource = SqliteDatasource
|
||||
CharCase = ecNormal
|
||||
MaxLength = 0
|
||||
@ -29,7 +30,7 @@ object formSqlite: TformSqlite
|
||||
object DBNavigator1: TDBNavigator
|
||||
Left = 8
|
||||
Height = 25
|
||||
Top = 64
|
||||
Top = 56
|
||||
Width = 241
|
||||
BevelOuter = bvNone
|
||||
ChildSizing.EnlargeHorizontal = crsScaleChilds
|
||||
@ -44,8 +45,17 @@ object formSqlite: TformSqlite
|
||||
Options = []
|
||||
TabOrder = 2
|
||||
end
|
||||
object btnCreateDB: TButton
|
||||
Left = 136
|
||||
Height = 25
|
||||
Top = 24
|
||||
Width = 113
|
||||
Caption = 'Create DB'
|
||||
OnClick = btnCreateDBClick
|
||||
TabOrder = 3
|
||||
end
|
||||
object SqliteDatasource: TDatasource
|
||||
left = 144
|
||||
top = 16
|
||||
left = 136
|
||||
top = 88
|
||||
end
|
||||
end
|
||||
|
@ -14,9 +14,11 @@ type
|
||||
|
||||
TformSqlite = class(TForm)
|
||||
Button1: TButton;
|
||||
btnCreateDB: TButton;
|
||||
SqliteDatasource: TDatasource;
|
||||
DBEdit1: TDBEdit;
|
||||
DBNavigator1: TDBNavigator;
|
||||
procedure btnCreateDBClick(Sender: TObject);
|
||||
procedure Button1Click(Sender: TObject);
|
||||
private
|
||||
{ private declarations }
|
||||
@ -45,12 +47,30 @@ var
|
||||
begin
|
||||
{$ifdef CPUARM}
|
||||
sqlitedb := TSqliteJNIDataset.Create(Self);
|
||||
//SqliteDatasource.DataSet := sqlitedb;
|
||||
sqlitedb.FileName := '/sdcard/database.db';
|
||||
sqlitedb.TableName := 'TestTable';
|
||||
sqlitedb.FieldDefs.Add('FirstFieldStr', ftString);
|
||||
sqlitedb.FieldDefs.Add('SecondFieldInt', ftInteger);
|
||||
sqlitedb.Open();
|
||||
SqliteDatasource.DataSet := sqlitedb;
|
||||
{$endif}
|
||||
end;
|
||||
|
||||
procedure TformSqlite.btnCreateDBClick(Sender: TObject);
|
||||
{$ifdef CPUARM}
|
||||
var
|
||||
sqlitedb: TSqliteJNIDataset;
|
||||
{$endif}
|
||||
begin
|
||||
{$ifdef CPUARM}
|
||||
sqlitedb := TSqliteJNIDataset.Create(Self);
|
||||
//SqliteDatasource.DataSet := sqlitedb;
|
||||
sqlitedb.FileName := '/sdcard/database.db';
|
||||
sqlitedb.TableName := 'TestTable';
|
||||
sqlitedb.FieldDefs.Add('FirstFieldStr', ftString);
|
||||
sqlitedb.FieldDefs.Add('SecondFieldInt', ftInteger);
|
||||
sqlitedb.CreateTable();
|
||||
sqlitedb.Free;
|
||||
{$endif}
|
||||
end;
|
||||
|
||||
|
@ -161,16 +161,17 @@ var
|
||||
lJavaString: JString;
|
||||
begin
|
||||
DebugLn('[TSqliteJNIDataset.SqliteExec] ' + StrPas(ASQL));
|
||||
{// void execSQL(String sql)
|
||||
|
||||
// void execSQL(String sql)
|
||||
// preparations
|
||||
lJavaString :=javaEnvRef^^.NewStringUTF(javaEnvRef, ASQL);
|
||||
lParams[0].l := lJavaString;
|
||||
|
||||
// Call the method
|
||||
javaEnvRef^^.CallVoidMethodA(javaEnvRef, AndroidDB, lExecSQLMethod, @lParams[0]);
|
||||
javaEnvRef^^.CallVoidMethodA(javaEnvRef, AndroidDB, FSqliteDatabase_execSQL, @lParams[0]);
|
||||
|
||||
// clean up
|
||||
javaEnvRef^^.DeleteLocalRef(javaEnvRef, lJavaString);}
|
||||
javaEnvRef^^.DeleteLocalRef(javaEnvRef, lJavaString);
|
||||
end;
|
||||
|
||||
procedure TSqliteJNIDataset.InternalCloseHandle;
|
||||
@ -225,20 +226,6 @@ begin
|
||||
FAutoIncFieldNo := -1;
|
||||
FieldDefs.Clear;
|
||||
|
||||
// Create the table, if necessary
|
||||
//lParams[0].l := lJavaString;
|
||||
//lJavaString := javaEnvRef^^.CallVoidMethodA(javaEnvRef, AndroidDB, FSqliteDatabase_execSQL, @lParams[0]);
|
||||
{db.execSQL("CREATE TABLE IF NOT EXISTS "
|
||||
+ DATABASE_TABLE_USER
|
||||
+ " (userID INT PRIMARY KEY, name VARCHAR(40),"
|
||||
+ " birthdate DATETIME,"
|
||||
+ " weight INT(3), heightInches INT, "
|
||||
+ " smoking BOOLEAN DEFAULT 'FALSE',"
|
||||
+ " school BOOLEAN DEFAULT 'FALSE', "
|
||||
+ " reading BOOLEAN DEFAULT 'FALSE',"
|
||||
+ " religion BOOLEAN DEFAULT 'FALSE',"
|
||||
+ " dating BOOLEAN DEFAULT 'FALSE');");}
|
||||
|
||||
// Cursor c = db.query(tableName, null, null, null, null, null, null);
|
||||
// public Cursor query (String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy, String limit)
|
||||
lParams[0].l :=javaEnvRef^^.NewStringUTF(javaEnvRef, PChar(TableName));
|
||||
@ -357,9 +344,23 @@ end;
|
||||
|
||||
procedure TSqliteJNIDataset.ExecuteDirect(const ASQL: String);
|
||||
var
|
||||
vm: Pointer;
|
||||
// array for the parameters
|
||||
lParams: array[0..2] of JValue;
|
||||
lJavaString: JString;
|
||||
begin
|
||||
DebugLn('[TSqliteJNIDataset.ExecuteDirect]');
|
||||
DebugLn('[TSqliteJNIDataset.ExecuteDirect] ' + ASQL);
|
||||
|
||||
// void execSQL(String sql)
|
||||
// preparations
|
||||
lJavaString :=javaEnvRef^^.NewStringUTF(javaEnvRef, PChar(ASQL));
|
||||
lParams[0].l := lJavaString;
|
||||
|
||||
// Call the method
|
||||
javaEnvRef^^.CallVoidMethodA(javaEnvRef, AndroidDB, FSqliteDatabase_execSQL, @lParams[0]);
|
||||
|
||||
// clean up
|
||||
javaEnvRef^^.DeleteLocalRef(javaEnvRef, lJavaString);
|
||||
|
||||
{FReturnCode := sqlite3_prepare(FSqliteHandle, Pchar(ASQL), -1, @vm, nil);
|
||||
if FReturnCode <> SQLITE_OK then
|
||||
DatabaseError(ReturnString, Self);
|
||||
|
Loading…
Reference in New Issue
Block a user