1. 程式人生 > 實用技巧 >delphi使用ODAC控制元件TOraQuery操作表資料

delphi使用ODAC控制元件TOraQuery操作表資料

使用TOraQuery控制元件操作資料修改

指定資料修改更新的目標表

查詢中包含多個表關聯,對其中一個表資料進行修改更新,需要設定目標表名

property UpdatingTable: string;  //資料修改更新的表名

程式碼

  OraQuery1.SQL.Text := 'SELECT Usert.userno, Usert.username, Dept.deptno, Dept.deptName ' +
                     ' FROM Usert, Dept WHERE Usert.deptno = Dept.deptno ';
  OraQuery1.UpdatingTable :
= 'Dept'; OraQuery1.Open; OraQuery1.Edit; OraQuery1.FieldByName('deptName').AsString := 'NewDept'; OraQuery1.Post;

備註

如果未設定UpdatingTable屬性,則預設查詢中使用的第一個表為更新目標。

主鍵欄位

更新表時,根據主鍵欄位生成更新的WHERE條件

property KeyFields: string;
  //表Dept 主鍵deptno

  //設定了主鍵,生成的WHERE條件中會包含設定的欄位
  OraQuery1.Close;
  OraQuery1.SQL.Text :
= 'SELECT deptName FROM Dept WHERE deptno = 1'; OraQuery1.KeyFields := 'deptno'; OraQuery1.Open; //會生成DELETE FROM Dept WHERE deptno = 1的語句 OraQuery1.Delete; //如果查詢的語句中包含主鍵,生成的WHERE條件中會包含主鍵 OraQuery1.Close; OraQuery1.SQL.Text := 'SELECT * FROM Dept WHERE deptno = 2'; OraQuery1.Open; //會生成DELETE FROM Dept WHERE deptno = 2的語句
OraQuery1.Delete; //如果查詢的語句中不包含主鍵,生成的WHERE條件中會包含所有查詢的欄位 OraQuery1.Close; OraQuery1.SQL.Text := 'SELECT deptName, address FROM Dept WHERE deptno = 3'; OraQuery1.Open; //會生成DELETE FROM Dept WHERE deptName = 'work' AND address = 'floor' 的語句 OraQuery1.Delete;

備註

多個主鍵時,用分號“;”隔開

插入時序列

插入資料時,根據設定的序列,自動更新主鍵

property KeySequence: string;

程式碼

  OraQuery1.Close;
  OraQuery1.SQL.Text := 'SELECT * FROM Dept';
  OraQuery1.KeyFields := 'deptno';
  OraQuery1.KeySequence := 'DEPT_SEQ';
  OraQuery1.Open;
  OraQuery1.Append;
  OraQuery1.FieldByName('deptName').AsString := '新科室';
  OraQuery1.Post;
  {會生成SQL
  begin
    SELECT DEPT_SEQ.NEXTVAL INTO :DEPTNO FROM Dual;
    INSERT INTO DEPT(DEPTNO, DEPTNAME)
    VALUES(:DEPTNO, :DNAME);
  end;
  }

備註

必須設定KeyFields屬性才起作用