2014-04-28 30 views
0

我在Delphi上遇到了一個問題,我創建了一個簡單的應用程序來測試RadStudio的移動功能,我創建了一個簡單的應用程序,將一些數據放入一些輸入然後將其添加到數據庫當按鈕被點擊時。我跟着this Embarcadero tutorial作爲起點在Android上的SQLite插入只能工作一次

問題是我只添加一個條目,然後沒有更多的條目被添加或列表不刷新。下面的一些代碼:

創建表:

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; 

如果你需要更多的代碼片斷,請諮詢!

在此先感謝您的回覆!

+0

你檢查的的Id插入與已經存在的數據不衝突? – Remi

+0

@RemiArts,表是空的......第一個插入的作品,但只有第一個... –

+0

是的,但你不是試圖再次放入相同的數據?如果主鍵相同,則不能插入 – Remi

回答

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; 

我已經把和對象的參數,但你也可以把你要插入的數據seperatly

+0

Thx的幫助,我正在使用另一個組件,但與TFDQuery我得到它的工作。對不起,花了這麼長時間,但只有今天我可以再次與該項目工作......再次感謝您的幫助雷米! –