delphi使用ODAC控制元件TOraQuery操作表資料
阿新 • • 發佈:2020-12-20
使用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屬性才起作用