2013-09-23 79 views
0

我想插入一些文本到sqlite數據庫。如何將字符串插入sQlite.sdb(FireDac)?

我正在使用FireDac連接和FireDac查詢(FDQuery1)連接到sqLite數據庫。 這裏是代碼。

FDQuery1.SQL.Text := 'select * from Invoice where Name = :Name'; 
FDQuery1.ParamByName('Name').AsString := '123'; 
FDQuery1.Open; 
LinkListControlToField1.BindLink.FillList 

我好像在數據庫中插入了一條新記錄,但所有字段都爲空。 可能是什麼問題?

我現在用的

NEW_NAME:='dfddf'; 

    SQL :='INSERT INTO INVOICE (Name) VALUES (:NEW_NAME)'; 
    fdquery1.Close; 
    fdquery1.SQL.Text:= SQL; 
    FdQuery1.Open(); 
    FDQuery1.Insert; 
    //Fdquery1.ParamByName('New_Name').AsString := NEW_NAME; 
    //fdquery1.SQL.Text:='INSERT INTO INVOICE (Name) VALUES (:NEW_NAME)'; 
    fdquery1.FieldByName('Name').AsString := quotedstr(NEW_NAME); 
    //fdquery1.ExecSQL(); 
    fdquery1.Post; 

我得到eerror消息。 FireDac,Phys,Sqlite - 308無法打開/定義命令,因爲它不返回結果集。提示使用執行? ExecSql metnod用於非Select命令。

正如您從註釋代碼中看到的,我正在嘗試使用ExecSql,但發生同樣的錯誤。

+3

'選擇' 語句......選擇數據從數據庫中。他們不會*插入*數據。 –

+0

看看這裏,爲不同的方式:http://stackoverflow.com/questions/18822687/best-way-to-insert-data-using-dephi-in-sql-server-2008 – bummi

+0

代碼應該看起來像這個:1. INSERT INTO .... 2.發佈 - 提交事務。 – Arkady

回答

3

雖然SELECT SQL語句不能將數據插入表,記錄可以插入/通過連接TDataSet的後裔附加通過SELECT sql語句添加到表中。

例如:

FDQuery1.SQL.Text := 'select * from Invoice'; 
FDQuery1.Open; 

NEW_NAME:='dfddf'; 
FDQuery1.Append; // or FDQuery1.Insert; 
FDQuery1.FieldByName('Name').AsString := NEW_NAME; 
// set other column values as needed 
FDQuery1.Post; 

如果您更喜歡使用INSERT:

FDQuery1.SQL.Text := 'INSERT INTO INVOICE (Name) VALUES (:NEW_NAME)'; 

NEW_NAME := 'dfddf'; 
FDQuery1.ParamByName('NEW_NAME').AsString := NEW_NAME; 
// you will have to define parameters for each column 
FDQuery1.ExecSQL; 
0

將FDQuery1.Open替換爲FDQuery1.ExecSQL;

但是你statment「選擇* ...」不插入數據庫中任何記錄......