Lazarus+KOL for wince 下使用Tsqlite3dataset控件操作SQLite3要注意的事项:
1)使用KOL-CE时,不能使用sqlite3dataset可视控件,只能用代码创建:
- var sqlite3dataset1 :Tsqlite3dataset;
- begin
- sqlite3dataset1:=tsqlite3dataset.Create(nil);
- ..
- End;
2)必须将数据库的文件名及路径用UTF8Encode转为UTF8否则含中文时会出错,例如:
Sqlite3Dataset1.FileName:= UTF8Encode((ExtractFilePath(ParamStr(0))+'myTest.db'));
3)读取含中文内容时,要用PWideChar(UTF8Decode(要取的字段)),例如:
editbox2.text:=PWideChar(UTF8Decode(Sqlite3Dataset1.FieldByName('uname').AsString));
- sqlite3dataset1:=tsqlite3dataset.Create(nil);
- Sqlite3Dataset1.FileName:= UTF8Encode((ExtractFilePath(ParamStr(0))+'myTest.db'));//必须将文件名及路径转为UTF8否则含中文时会出错
- Sqlite3Dataset1.TableName:='Demo';
- Sqlite3Dataset1.SQL:='select * from demo';
- Sqlite3Dataset1.Active:=true;
- editbox1.text:=Sqlite3Dataset1.FieldByName('uid').AsString;
- editbox2.text:=PWideChar(UTF8Decode(Sqlite3Dataset1.FieldByName('uname').AsString));
- Sqlite3Dataset1.First;
- i:=0;
- while not Sqlite3Dataset1.EOF do
- begin
- ListView1.LVItemAdd('');
- ListView1.LVItems[i,0] :=(Sqlite3Dataset1.FieldByName('uid').AsString);
- ListView1.LVItems[i,1] :=(PWideChar(UTF8Decode(Sqlite3Dataset1.FieldByName('uname').AsString)));
- inc(i);
- Sqlite3Dataset1.Next;
- end;
- Sqlite3Dataset1.First;
评论