android上的SQLite插件只能工作一次

时间:2014-04-28 04:53:40

标签: sqlite delphi delphi-xe5

我在Delphi上遇到问题,我创建了一个简单的应用程序来测试RadStudio的移动能力,我创建了一个简单的应用程序,将一些数据放入某些输入,然后在单击按钮时将其添加到数据库。我跟着this Embarcadero tutorial作为起点

问题是我只添加了一个条目,然后不再添加条目或者不刷新列表。下面是一些代码:

创建表:

procedure TTabbedForm.logAfterConnect(Sender: TObject);
 begin
  log.ExecuteDirect('CREATE TABLE IF NOT EXISTS lista (id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,idCons INTEGER,nome TEXT,kms INTEGER,kmsAlarme INTEGER,quantidade INTEGER,quantidadeAlarme INTEGER,data INTEGER,dataAlarme INTEGER,alarmeMsg TEXT)');
 end;

添加按钮代码:

procedure TTabbedForm.btnGravarClick(Sender: TObject);
begin
  try
    SQLQueryInsert.ParamByName('idCons').AsInteger := PopupBoxTipo.ItemIndex;
    SQLQueryInsert.ParamByName('nome').AsString := PopupBoxTipo.Text;
    SQLQueryInsert.ParamByName('kms').AsInteger := StrToInt(kmsEdit.Text);
    SQLQueryInsert.ParamByName('quantidade').AsInteger := StrToInt(qtdEdit.Text);
    SQLQueryInsert.ParamByName('data').AsInteger := DateTimeToUnix(dtaEvento.Date);
    SQLQueryInsert.ExecSQL();
    lista.Refresh;
    LinkFillControlToField1.BindList.FillList;
  except
    on e: Exception do
    begin
      ShowMessage(e.Message);
    end;
  end;
end;

如果您需要更多代码段,请询问!

预先感谢您的回复!

1 个答案:

答案 0 :(得分:0)

尝试这种方法对我有用

procedure TData.InsertItem(someObject: TSomeObjectClass);
var
  qry: TFDQuery;
begin
  qry := CreateQry( 'insert into SomeObject(id, description, something)'+
  ' values (:id, :description, :something);', false);
  qry.Params.ParamByName('id').AsInteger := someObject.id;
  qry.Params.ParamByName('description').asstring := someObject.description;
  qry.Params.ParamByName('something').asstring := someObject.something;
  qry.Prepare;
  qry.execsql;
  qry.Free;
end;

我已将参数放入参数中,但您也可以将要插入的数据单独插入