对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;
这是两个部分的源代码,是哪里出错了吗?

解决方案 »

  1.   

    悲剧了。为什么要使用SQLite数据库?难道是为了和手机数据同步?
      

  2.   

    因为SQLite数据库简单啊
      

  3.   


    procedure TfrmAbout.btnVersionClick(Sender: TObject);
    var
      SqliteDB:TSQLiteDatabase;
    begin
      SqliteDB:=TSQLiteDatabase.Create('');
      showmessage('Sqlite dll version:'+SqliteDb.version);
      SqliteDB.Free;
    end;
      

  4.   


    好像是定义了TSQLiteDatabase并没有创建的原因吧。
      

  5.   


    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;
      

  6.   


    你发的这个我看过,那个“TSQLiteDatabase.Create”总是报错,说里面参数过多
      

  7.   


    你发的这个我看过,那个“TSQLiteDatabase.Create”总是报错,说里面参数过多
    有没有单步调试看一下是哪里的错误。