delphi-adoquery查詢、插入、刪除、修改
//查詢記錄
procedure tform1.button1click(sender: tobject);
begin
adoquery.close;
adoquery.sql.clear;
adoquery.sql.add('select * from yourtable where 查詢條件');
adoquery.open;
//插入記錄
procedure tform1.button2click(sender: tobject);
begin
adoquery.close;
adoquery.sql.clear;
adoquery.sql.text:='insert into yourtable(欄位1,欄位2) values(:欄位1,:欄位2)';
// adoquery.sql.add('insert into yourtable values(:欄位1)');
adoquery.parameters.parambyname('欄位1').value:=trim(edit1.text);
adoquery.parameters.parambyname('欄位2').value:=trim(edit2.text);
adoquery.execsql;
end;
//刪除記錄
procedure tform1.button3click(sender: tobject);
begin
adoquery.close;
adoquery.sql.clear;
adoquery.sql.text:='delete from yourtable where 欄位3=:欄位3';
//這裡沒有新增where的條件判斷,實際使用時,注意新增判斷
// adoquery.sql.add('delete from new_table where 欄位3=:欄位3');
adoquery.parameters.parambyname('欄位3').value:=trim(edit3.text);
adoquery.execsql;
//刪除記錄也可用deleterecords()函式
procedure deleterecords(affectrecords: taffectrecords = arall);
這個函式有乙個引數:affectrecords可以取如下的值:
1、arcurrent :刪除當前記錄
2、arfiltered :刪除符合filter過濾後的所有記錄(如果你使用filter過濾的話)
3、arall :刪除所有記錄
4、arallchapters :delete affects all chapters(ado chapters)
//修改記錄
procedure tform1.button4click(sender: tobject);
begin
adoquery.close;
adoquery.sql.clear;
adoquery.sql.text:='update yourtable set 欄位4=:欄位4';
//這裡沒有新增where的條件判斷,實際使用時,注意新增判斷
// adoquery.sql.add('update yourtable set 欄位4=:欄位4');
adoquery.parameters.parambyname('欄位4').value:=trim(edit4.text);
adoquery.execsql;
//即時更新插入、刪除、修改後的記錄
在上面插入、刪除、修改的語句後新增如下**即可:
adoquery.close;
adoquery.sql.add('select * from yourtable where 查詢條件');
adoquery.open;
//使用adoquery時注意:
1、如果你需要更改資料,query.requestlive必須為true
2、如果有輸入引數的時候,容易出錯,通常的錯法是這樣:
比如:「where abc = : abc」
改正如下:「where abc=:abc」就是說=:前後都不能留空格。
3、adoquery.open與adoquery.execsql 有不同之處。
adoquery.open一般用在查詢,select時候;而adoquery.execsql用在insert,delete,update等。
//adoquery 的post屬性 -------------
adoquery的post和updatebatch
post是確認當前的修改,而updatebatch是把已經確認但是沒有存檔的資料寫入資料庫
當cursortype是ctkeyset或者ctstatic,並且locktype是ltbatchoptimistic的時候,資料dataset是用批量更新的更新方式。這時,每條記錄修改之後,用post確認當前修改,但是確認後的資料卻並沒有立即寫入資料庫,而是儲存於快取之中。
當呼叫updatebatch的時候,這些快取中的修改才寫入資料庫。
如果不是使用批量更新的方式的時候,post的時候,確認的修改直接寫入資料庫。
insert是在當前記錄下插入資料(簡稱前插)
Delphi ADOQuery處理多條SQL語句
delphi pascal code var sqlstr string begin sqlstr begin sqlstr sqlstr update table1 set col1 test where 1 2 sqlstr sqlstr update table1 set col1 test2...
Delphi ADOQuery查詢使用者是否存在
procedure tform1.bt findclick sender tobject var i,count integer result boolean begin adoquery1.close adoquery1.sql.clear adoquery1.sql.add select fro...
delphi adoquery 判斷字段是否存在
使用adoquery資料集運算元據庫,一般情況下使用adoquery.fieldbyname columnname asstring來訪問資料,如果columnname不存在,系統會報錯columnname not found,如何提前判斷columnname是否存在呢?1.使用fieldlist....