泛微OAe9-后端二开常见数据库操作
泛微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();