泛微OAe9-后端二開常見數據庫操作
文章目錄
- 泛微OAe9-后端二開常見數據庫操作
- 一、RecordSet
- 1 RecordSet 操作OA本身的表
- 2 RecordSet 操作OA 本身的存儲過程
- 二、RecordSetTrans
- 三、RecordSetDataSource
- 四、原生 jdbc
一、RecordSet
RecordSet 適用于操作 OA 自己的庫。OA 數據庫可查看配置文件:/WEB-INF/prop/weaver.properties
RecordSet 特點:
- 1、不帶事務,參數可以進行預編譯,安全性高。
- 2、通過連接池操作數據庫,性能高,斷網重連。
- 3、不會拋出異常,需要去日志文件中查看 log文件。
1 RecordSet 操作OA本身的表
代碼演示:
RecordSet rs = new RecordSet();
rs.execute("insert into test_xizhilang(name,age)values('1','12')"); //新增數據
rs.executeSql("insert into test_xizhilang(name,age)values('1','2')");
rs.execute("update test_xizhilang set name='張三' where id=1"); //修改數據
//刪除數據
rs.execute("delete test_xizhilang where id=1");
//查詢數據
rs.execute("select * from hrmresource ");
while(rs.next()){String id=rs.getString("id");//===rs.getString("id");String loginid=rs.getString("loginid");String lastname=rs.getString("lastname");
}
// 數據庫操作完成
對于預編譯,參數可以直接寫在后面,安全性高,代碼演示;
RecordSet rs = new RecordSet();
rs.executeQuery("select * from hrmresource where id=?", "49");
if(rs.next()){System.out.println(rs.getString("lastname"));
}
rs.executeUpdate("insert into test_xizhilang(name,age)values(?,?)", "11","22");
2 RecordSet 操作OA 本身的存儲過程
RecordSet 操作存儲過程特點:
- 1、 Util.getSeparator();分隔傳個存儲過程的多個參數。
- 2、泛微API要求OA存儲過程必須帶有固定的參數。
- 3、不會拋出異常,需要去日志文件中查看。
RecordSet rs = new RecordSet();
char flag = Util.getSeparator();
String ProcPara = "王五" + flag + "18"; //拼接2個參數
rs.executeProc("存儲過程的名稱", ProcPara);
if(rs.next()){//接收存儲過程的返回值System.out.println("接收的參數="+rs.getString(1));
}
二、RecordSetTrans
RecordSetTrans 也是用于操作 OA 本身的數據庫。OA 數據庫可查看配置文件:/WEB-INF/prop/weaver.properties
RecordSetTrans 特點:
- 1、支持事物處理,支持原子性操作。也是 RecordSetTrans 最大的特點
- 2、不會拋出異常,需要去日志文件中查看。
代碼演示:
RecordSetTrans rst = new RecordSetTrans();
try {rst.setAutoCommit(false); //開啟事務rst.executeSql("delete from test_xizhilang where id=5");rst.executeSql("delete from test_xizhilang where id=4");String s = null;s.toCharArray();rst.commit(); // 提交事務
} catch (Exception e) {e.printStackTrace();rst.rollback(); // 執行失敗,回滾數據
}
三、RecordSetDataSource
RecordSetDataSource 用于操作OA集成的第三方系統的數據庫:后端 - > 集成中心 -> 數據源設置。RecordSetDataSource也可以用于操作OA本身的數據庫,RecordSetDataSource rds = new RecordSetDataSource(),括號內不傳參默認就是OA本身的數據庫。
RecordSetDataSource特點:
- 1、直接操作第三方數據,不支持事務;
- 2、不會拋出異常,需要去日志文件中查看;
代碼演示:
String sql = "select id, lastname, loginid, sex from hrmresource";
RecordSetDataSource rs2 = new RecordSetDataSource("數據源名稱(建議英文)");
rs2.execute(sql);
while(rs2.next()){//下標從1開始String hehe = rs2.getString(4);System.out.println("hehe=" + hehe);
}
rs2.getString():獲取查詢的數據,有兩種方式:
- 1、rs2.getString(“列名”):獲取指定的列。
- 2、rs2.getString(數字):數字下標從1開始,獲取指定下標的列。如上面代碼中,rs2.getString(4) 獲取 sex 的值。
數據源名稱,建議英文,不要用中文。
四、原生 jdbc
操作OA本身的數據庫,事務操作有 RecordSetTrans,如果要操作第三方系統的庫,也需要事務操作,可采用原生 jdbc 的方法。
weaver.interfaces.datasource.DataSource ds = (weaver.interfaces.datasource.DataSource)
StaticObj.getServiceByFullname(("datasource.數據源名稱"), weaver.interfaces.datasource.DataSource.class);
java.sql.Connection conn = ds.getConnection();