zoukankan      html  css  js  c++  java
  • 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属性才起作用

  • 相关阅读:
    设置 添加 erlang 代码路径 工作路径
    [转]inline,__inline,__forceinline 关于函数内联及相关关键字的详细说明
    [转]Delphi 2010 3513正式版破解
    IBM developerWorks 文章转载系列(二)
    Cassandra和HBase主要设计思路对比
    Storm : Twitter的实时数据处理工具(转载)
    Oracle NoSQL Database (转载)
    MapReduce Hold不住? (转载)
    [InfoQ]Twitter Storm:开源实时Hadoop (转载)
    数据分析与处理之一(大规模数据分析架构)
  • 原文地址:https://www.cnblogs.com/txgh/p/14163414.html
Copyright © 2011-2022 走看看