2013-10-07 40 views
1

我想在Delphi的SQLite表中插入整數值。
在表empusergroup_id是整數並且label,description是字符串數據類型。
我的代碼如下:如何在Delphi中將整數值插入到SQLite表中

var 
    gid: Integer; 
    sdescription,ldescription: String; 
begin 
    sdescription := RzEdit1.Text; 
    ldescription := RzMemo1.Text; 
    gid := Integer(RzComboBox1.Items.Objects[RzComboBox1.Items.IndexOf(gname)]); 

    try 
    SQLConnection1.Connected := true; 
    SQLMonitor1.Active := True; 
    sSql := 'INSERT INTO emp(usergroup_id, label, description) VALUES (gid,''' + sdescription + ''',''' + ldescription + ''')'; 
    SQLConnection1.ExecuteDirect(sSql); 

    except 
    on E: EDatabaseError do 
     ShowMessage('Exception raised with message' + E.Message); 
    end; 
end; 

這是給我一個錯誤Unknown column gid
當我試圖像這樣有固定的整數值,而不是變量它的工作原理:

sSql := 'INSERT INTO emp(usergroup_id, label, description) VALUES (1,''' + sdescription + ''',''' + ldescription + ''')'; 

它插入值成功進入表。
如何使用上述查詢將整數值gid插入到數據庫中。什麼是適當的格式?

回答

6

您的gid成爲SQL語句的一部分(因此錯誤:Unknown column gid)。
您需要使用德爾福gid變量來構造SQL語句(就像你用sdescriptionldescription):

sSql := 'INSERT INTO emp(usergroup_id, label, description) VALUES (' + InttoStr(gid) + ', ''' + sdescription + ''',''' + ldescription + ''')'; 

如果你要使用參數你不會有這樣的凌亂的查詢/代碼(這也是受到SQL注入等。)例如:

qry := TSQLQuery.Create(nil); // or what ever TQuery component you use in your framework 
try 
    qry.SQLConnection := SQLConnection1; 
    qry.SQL.Text := 'INSERT INTO emp(usergroup_id, label, description) VALUES (:usergroup_id, :label, :description)'; 
    qry.Params.ParamByName('usergroup_id').Value := gid; 
    qry.Params.ParamByName('label').Value := sdescription; 
    qry.Params.ParamByName('description').Value := ldescription; 
    qry.ExecSQL; 
finally 
    qry.Free; 
end; 
+0

紅利代碼及詳細的解答幫助,但是越來越像參數錯誤usergroup_id沒有發現,相同的機智h標籤和說明。我正在使用'TSQLQuery'後代的TQuery和修改的代碼如下'qry.Params.ParamByName('usergroup_id')。Value:= gid;' –

+4

一如往常,參數爲+1;) – whosrdaddy

相關問題