2010-02-26 21 views
4

我使用TAdoTable部件試圖,將數據插入數據庫[德爾福]

  • 在形式創建我請.Append(),並在按鈕i調用.POST()

但它會加載整個桌子!我不需要它來加載任何東西,只需要在這個表中插入一行。

我想知道是否有將數據插入到數據庫使用ADO的,我使用帶有TAdoCommand的「手動」的做法已經嘗試過「好辦法」,但它不正確我看來

  • 我使用Format()生成INSERT查詢並且所有字符串字段都使用QuotedStr()轉義

在此先感謝!

Arthur。

回答

6

可以使用TADODataset(或TADOQuery )。

我做的方式,有時是通過設置在CommandText從表中返回0的記錄,即SELECT TOP 0 * FROM [table],然後用.Append.Post

但就個人而言,我更喜歡寫SQL,如用TADOCommand

+0

這就是我一直在尋找的。 「手動」安裝13個字段的插件並不美觀。 – arthurprs 2010-02-27 00:13:27

+0

而不是「select top 0」,你也可以使用where子句,比如「select * from Table where PrimaryKeyField = 0」。只要確保使用表 – 2010-02-27 06:13:11

+2

中不存在的值或使用WHERE 1 = 2' – 2010-03-01 08:23:06

6

如果您不需要顯示錶格的數據,請使用TADOQuery對象。

基本上是:

  • 使用TADOQuery.SQL.Text設置SQL命令
  • 使用TADOQuery.ExecSQL方法火SQL命令
2

您也可以使用TADOCommand組件,並讓它執行特定的SQL命令。如果您發現自己一遍又一遍地執行相同的命令(如插入到表中),請考慮使用參數,而不是直接更改每次調用的SQL。參數很容易使用,只需在您的sql中放置一個:PARAMNAME,然後使用您用於設置值的ado組件上的參數對象。例如:

假設TAdoCommand部件的CommandText含「INSERT INTO TABLENAME (FIELD1) VALUES (:FIELDVALUE1)

AdoCommand1.Parameters.ParamByName('FIELDVALUE1').Value := 'TEST' 
AdoCommand1.Execute; 

當執行上面的SQL,然後將字符串「TEST」將被寫入到FIELD1。

1
var 
    CountVar: Integer; 

begin 

    TADOConnection1.Execute(ASQLInsertStatement, CountVar, [adExecuteNoRecords]); 

end;