mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-18 18:59: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
|
Left = 119
|
||||||
Height = 240
|
Height = 240
|
||||||
Top = 244
|
Top = 244
|
||||||
Width = 320
|
Width = 257
|
||||||
Caption = 'formSqlite'
|
Caption = 'formSqlite'
|
||||||
ClientHeight = 240
|
ClientHeight = 240
|
||||||
ClientWidth = 320
|
ClientWidth = 257
|
||||||
LCLVersion = '1.1'
|
LCLVersion = '1.1'
|
||||||
object Button1: TButton
|
object Button1: TButton
|
||||||
Left = 8
|
Left = 8
|
||||||
Height = 25
|
Height = 25
|
||||||
Top = 8
|
Top = 24
|
||||||
Width = 75
|
Width = 112
|
||||||
Caption = 'Connect'
|
Caption = 'Connect'
|
||||||
OnClick = Button1Click
|
OnClick = Button1Click
|
||||||
TabOrder = 0
|
TabOrder = 0
|
||||||
@ -19,8 +19,9 @@ object formSqlite: TformSqlite
|
|||||||
object DBEdit1: TDBEdit
|
object DBEdit1: TDBEdit
|
||||||
Left = 8
|
Left = 8
|
||||||
Height = 23
|
Height = 23
|
||||||
Top = 104
|
Top = 88
|
||||||
Width = 80
|
Width = 80
|
||||||
|
DataField = 'FirstFieldStr'
|
||||||
DataSource = SqliteDatasource
|
DataSource = SqliteDatasource
|
||||||
CharCase = ecNormal
|
CharCase = ecNormal
|
||||||
MaxLength = 0
|
MaxLength = 0
|
||||||
@ -29,7 +30,7 @@ object formSqlite: TformSqlite
|
|||||||
object DBNavigator1: TDBNavigator
|
object DBNavigator1: TDBNavigator
|
||||||
Left = 8
|
Left = 8
|
||||||
Height = 25
|
Height = 25
|
||||||
Top = 64
|
Top = 56
|
||||||
Width = 241
|
Width = 241
|
||||||
BevelOuter = bvNone
|
BevelOuter = bvNone
|
||||||
ChildSizing.EnlargeHorizontal = crsScaleChilds
|
ChildSizing.EnlargeHorizontal = crsScaleChilds
|
||||||
@ -44,8 +45,17 @@ object formSqlite: TformSqlite
|
|||||||
Options = []
|
Options = []
|
||||||
TabOrder = 2
|
TabOrder = 2
|
||||||
end
|
end
|
||||||
|
object btnCreateDB: TButton
|
||||||
|
Left = 136
|
||||||
|
Height = 25
|
||||||
|
Top = 24
|
||||||
|
Width = 113
|
||||||
|
Caption = 'Create DB'
|
||||||
|
OnClick = btnCreateDBClick
|
||||||
|
TabOrder = 3
|
||||||
|
end
|
||||||
object SqliteDatasource: TDatasource
|
object SqliteDatasource: TDatasource
|
||||||
left = 144
|
left = 136
|
||||||
top = 16
|
top = 88
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -14,9 +14,11 @@ type
|
|||||||
|
|
||||||
TformSqlite = class(TForm)
|
TformSqlite = class(TForm)
|
||||||
Button1: TButton;
|
Button1: TButton;
|
||||||
|
btnCreateDB: TButton;
|
||||||
SqliteDatasource: TDatasource;
|
SqliteDatasource: TDatasource;
|
||||||
DBEdit1: TDBEdit;
|
DBEdit1: TDBEdit;
|
||||||
DBNavigator1: TDBNavigator;
|
DBNavigator1: TDBNavigator;
|
||||||
|
procedure btnCreateDBClick(Sender: TObject);
|
||||||
procedure Button1Click(Sender: TObject);
|
procedure Button1Click(Sender: TObject);
|
||||||
private
|
private
|
||||||
{ private declarations }
|
{ private declarations }
|
||||||
@ -45,12 +47,30 @@ var
|
|||||||
begin
|
begin
|
||||||
{$ifdef CPUARM}
|
{$ifdef CPUARM}
|
||||||
sqlitedb := TSqliteJNIDataset.Create(Self);
|
sqlitedb := TSqliteJNIDataset.Create(Self);
|
||||||
//SqliteDatasource.DataSet := sqlitedb;
|
|
||||||
sqlitedb.FileName := '/sdcard/database.db';
|
sqlitedb.FileName := '/sdcard/database.db';
|
||||||
sqlitedb.TableName := 'TestTable';
|
sqlitedb.TableName := 'TestTable';
|
||||||
sqlitedb.FieldDefs.Add('FirstFieldStr', ftString);
|
sqlitedb.FieldDefs.Add('FirstFieldStr', ftString);
|
||||||
sqlitedb.FieldDefs.Add('SecondFieldInt', ftInteger);
|
sqlitedb.FieldDefs.Add('SecondFieldInt', ftInteger);
|
||||||
sqlitedb.Open();
|
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}
|
{$endif}
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
@ -161,16 +161,17 @@ var
|
|||||||
lJavaString: JString;
|
lJavaString: JString;
|
||||||
begin
|
begin
|
||||||
DebugLn('[TSqliteJNIDataset.SqliteExec] ' + StrPas(ASQL));
|
DebugLn('[TSqliteJNIDataset.SqliteExec] ' + StrPas(ASQL));
|
||||||
{// void execSQL(String sql)
|
|
||||||
|
// void execSQL(String sql)
|
||||||
// preparations
|
// preparations
|
||||||
lJavaString :=javaEnvRef^^.NewStringUTF(javaEnvRef, ASQL);
|
lJavaString :=javaEnvRef^^.NewStringUTF(javaEnvRef, ASQL);
|
||||||
lParams[0].l := lJavaString;
|
lParams[0].l := lJavaString;
|
||||||
|
|
||||||
// Call the method
|
// Call the method
|
||||||
javaEnvRef^^.CallVoidMethodA(javaEnvRef, AndroidDB, lExecSQLMethod, @lParams[0]);
|
javaEnvRef^^.CallVoidMethodA(javaEnvRef, AndroidDB, FSqliteDatabase_execSQL, @lParams[0]);
|
||||||
|
|
||||||
// clean up
|
// clean up
|
||||||
javaEnvRef^^.DeleteLocalRef(javaEnvRef, lJavaString);}
|
javaEnvRef^^.DeleteLocalRef(javaEnvRef, lJavaString);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TSqliteJNIDataset.InternalCloseHandle;
|
procedure TSqliteJNIDataset.InternalCloseHandle;
|
||||||
@ -225,20 +226,6 @@ begin
|
|||||||
FAutoIncFieldNo := -1;
|
FAutoIncFieldNo := -1;
|
||||||
FieldDefs.Clear;
|
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);
|
// 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)
|
// 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));
|
lParams[0].l :=javaEnvRef^^.NewStringUTF(javaEnvRef, PChar(TableName));
|
||||||
@ -357,9 +344,23 @@ end;
|
|||||||
|
|
||||||
procedure TSqliteJNIDataset.ExecuteDirect(const ASQL: String);
|
procedure TSqliteJNIDataset.ExecuteDirect(const ASQL: String);
|
||||||
var
|
var
|
||||||
vm: Pointer;
|
// array for the parameters
|
||||||
|
lParams: array[0..2] of JValue;
|
||||||
|
lJavaString: JString;
|
||||||
begin
|
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);
|
{FReturnCode := sqlite3_prepare(FSqliteHandle, Pchar(ASQL), -1, @vm, nil);
|
||||||
if FReturnCode <> SQLITE_OK then
|
if FReturnCode <> SQLITE_OK then
|
||||||
DatabaseError(ReturnString, Self);
|
DatabaseError(ReturnString, Self);
|
||||||
|
Loading…
Reference in New Issue
Block a user