对SQLite数据库的操作,想添加数据已经打开一个.db文件后读取数据这么两个操作,编写完成没有报错,但是运行后点完按钮就有错误窗口提示这是点击插入数据以后出现的窗口
这是点击读取以后显示的窗口我对数据加密和解密的操作都是可以的,为什么插入和读取就不行呢?procedure TForm1.InsertBtnClick(Sender: TObject);
var
SqliteDB: TSQLiteDatabase;
SqliteTB: TSQLiteTable;
sSQL: String;
name:string;
homepage:string;
i: integer;begin
name := trim(nameEdt.Text);
homepage := trim(HPageEdt.Text); SqliteDB.ExecSQL('insert into user values(1,Trim(nameEdt.Text),Trim(HPageEdt.Text))'); memo.Lines.Add('成功添加数据!'#13#10);end;procedure TForm1.open_dbClick(Sender: TObject);
var
SqliteDB:TSQLiteDatabase;
SqliteTB:TSQLiteTable;
name:string;
homepage:string;
totalCount: integer;
begin
OpenDialog1.Execute; SqliteTB:=SqliteDB.GetTable('Select * from user'); SQLite3_Open('Select * from user',SqliteDB);
totalCount := 0;
if not SqliteTB.EOF then
begin
totalCount := SqliteTB.Count;
end; memo.Text:=('共: ' + inttostr(totalCount) + ' 条数据'); if not SqliteTB.EOF then
begin
SqliteTB:=SqliteDB.GetTable('Select * from user');
name:=SqliteTB.FieldAsString(SqliteTB.FieldIndex['name']);
homepage:=SqliteTB.FieldAsString(SqliteTB.FieldIndex['homepage']);
memo.Lines.Add('Name:'+name+#13+' HomePage:'+homepage);
end; SqliteTB.free;
SqliteDB.free;
SQLite3_Close(SqliteDB);
end;
这是两个部分的源代码,是哪里出错了吗?
这是点击读取以后显示的窗口我对数据加密和解密的操作都是可以的,为什么插入和读取就不行呢?procedure TForm1.InsertBtnClick(Sender: TObject);
var
SqliteDB: TSQLiteDatabase;
SqliteTB: TSQLiteTable;
sSQL: String;
name:string;
homepage:string;
i: integer;begin
name := trim(nameEdt.Text);
homepage := trim(HPageEdt.Text); SqliteDB.ExecSQL('insert into user values(1,Trim(nameEdt.Text),Trim(HPageEdt.Text))'); memo.Lines.Add('成功添加数据!'#13#10);end;procedure TForm1.open_dbClick(Sender: TObject);
var
SqliteDB:TSQLiteDatabase;
SqliteTB:TSQLiteTable;
name:string;
homepage:string;
totalCount: integer;
begin
OpenDialog1.Execute; SqliteTB:=SqliteDB.GetTable('Select * from user'); SQLite3_Open('Select * from user',SqliteDB);
totalCount := 0;
if not SqliteTB.EOF then
begin
totalCount := SqliteTB.Count;
end; memo.Text:=('共: ' + inttostr(totalCount) + ' 条数据'); if not SqliteTB.EOF then
begin
SqliteTB:=SqliteDB.GetTable('Select * from user');
name:=SqliteTB.FieldAsString(SqliteTB.FieldIndex['name']);
homepage:=SqliteTB.FieldAsString(SqliteTB.FieldIndex['homepage']);
memo.Lines.Add('Name:'+name+#13+' HomePage:'+homepage);
end; SqliteTB.free;
SqliteDB.free;
SQLite3_Close(SqliteDB);
end;
这是两个部分的源代码,是哪里出错了吗?
procedure TfrmAbout.btnVersionClick(Sender: TObject);
var
SqliteDB:TSQLiteDatabase;
begin
SqliteDB:=TSQLiteDatabase.Create('');
showmessage('Sqlite dll version:'+SqliteDb.version);
SqliteDB.Free;
end;
好像是定义了TSQLiteDatabase并没有创建的原因吧。
var
sql:string;
db:TSQLiteDatabase;try
if FileExists('test.db') then DeleteFile('test.db');
//连接数据库,如果数据库文件不存在会自动创建
db:=TSQLiteDatabase.Create('test.db','dbpassword');//使用密码创建数据库
//db:=TSQLiteDatabase.Create('test.db',Nil);//无密码创建数据库
//创建USER表
sql:='CREATE TABLE USER(ID integer PRIMARY KEY AUTOINCREMENT NOT NULL,NAME VARCHAR(50),HOMEPAGE VARCHAR(255))';
db.ExecSQL(sql);
//插入一条测试数据
sql:='INSERT INTO USER VALUES(NULL,"ekinglong","http://www.blogjava.net/ekinglong")';
db.ExecSQL(sql);
finally
db.Free;
end;var
sql:string;
db:TSQLiteDatabase;
tbl:TSQLiteTable;
name:string;
homepage:string;
begin
try
db:=TSQLiteDatabase.Create('test.db','dbpassword');
sql:='SELECT * FROM USER LIMIT 1';
tbl:=db.GetTable(sql);
if tbl.RowCount>0 then
begin
name:=tbl.FieldAsString(tbl.FieldIndex['NAME']);
homepage:=tbl.FieldAsString(tbl.FieldIndex['HOMEPAGE']);
ShowMessage('Name:'+name+#13+'HomePage:'+homepage);
end;
finally
tbl.Free;
db.Free;
end;
你发的这个我看过,那个“TSQLiteDatabase.Create”总是报错,说里面参数过多
你发的这个我看过,那个“TSQLiteDatabase.Create”总是报错,说里面参数过多
有没有单步调试看一下是哪里的错误。