泛微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();

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/87544.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/87544.shtml
英文地址,请注明出处:http://en.pswp.cn/diannao/87544.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【数据分析八:hypothesis testing】假设检验

本节我们讲述假设检验和抽样方法 有关假设检验的详细内容,可以参考我以往的博客 概率论与数理统计总复习_概率论与数理统计复习-CSDN博客文章浏览阅读1.5k次,点赞33次,收藏23次。中科大使用的教辅《概率论和数理统计》,带大家复…

AI免费工具:promptpilot、今天学点啥、中英文翻译

promptpilot 激发模型潜能,轻松优化 Prompt https://promptpilot.volcengine.com/startup 今天学点啥 https://metaso.cn/study 能生成网页和语音播报 中英文翻译 沉浸式翻译,浏览器插件,ai翻译

计算机网络学习笔记:TCP三报文握手、四报文挥手

文章目录 前言一、TCP三报文握手二、TCP四报文挥手三、TCP保活计时器 前言 TCP通信,通常需要经历三个阶段:三报文握手->发送,接收数据->四报文挥手。 一、TCP三报文握手 三报文握手处于TCP的连接建立阶段,主要解决了以下的…

kafka部署和基本操作

一、部署kafka 解压 tar xzvf kafka_2.12-3.9.1.tgz tar -zxf kafka_2.12-3.9.1.tgz 1.修改config/server.properties # Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # …

Bootstrap 5学习教程,从入门到精通,Bootstrap 5 导航语法知识点及案例代码(17)

Bootstrap 5 导航语法知识点及案例代码 Bootstrap 5 提供了强大的导航组件,帮助开发者快速构建响应式且美观的导航栏。 一、Bootstrap 5 导航组件概述 Bootstrap 5 提供了多种导航组件,主要包括: 导航栏(Navbar)&am…

清除 docker 无用的 镜像/容器

清除 docker 无用的 镜像/容器 删除 <none> 的 docker 镜像 使用以下命令删除所有 的 Docker 镜像&#xff08;即悬空镜像 / dangling images&#xff09;&#xff1a; docker image prune -f这会自动删除所有没有 tag 的镜像&#xff08;&#xff09;&#xff0c;不会…

使用Charles抓包工具提升API调试与性能优化效率

在软件开发过程中&#xff0c;网络请求调试和性能优化往往成为开发者遇到的挑战&#xff0c;尤其是在进行API接口调试时。开发者需要确保网络请求的正确性、响应时间以及系统的整体性能。然而&#xff0c;传统的调试方法常常无法提供足够的细节来深入分析问题&#xff0c;进而影…

如何协调各项目关键节点的冲突与依赖

在多项目并行的环境下&#xff0c;关键节点间的冲突与依赖是导致项目延期、资源浪费和沟通误解的主要根源。要高效协调此类问题&#xff0c;企业应重点从建立透明的进度依赖图、使用项目管理工具对齐节点、推动跨部门协同机制入手。其中&#xff0c;通过Gantt图或关键路径法实现…

mongodb单节点改副本集模式

前一阵将三节点的副本集改成了单节点&#xff0c;但后面业务代码出现问题&#xff1a;无法使用事务&#xff0c;因为事务只有在副本集上能用&#xff0c;单节点无法使用&#xff0c;故需要改回副本集模式&#xff0c;而我目前仅有一台服务器&#xff0c;所以考虑在一台服务器上…

Android 修改了页面的xml布局,使用了databinding,这时候编译时需要用到apt吗

deepseek回答&#xff1a; 在 Android 开发中使用 DataBinding 时&#xff0c;不需要显式使用 apt&#xff08;Annotation Processing Tool&#xff09;。以下是详细说明&#xff1a; 1. DataBinding 的编译机制 DataBinding 是 Android Gradle 插件原生支持的功能&#xff…

服务器如何从http升级到https(nginx)

1.证书申请 可以到阿里云或者华为云去申请证书&#xff0c;申请完下载证书是个压缩包&#xff0c;然后解压 可以到到几个文件夹&#xff0c;找到 .Nginx 文件夹打开 会有两个文件&#xff0c;将这两个文件上传至nginx/conf/cert文件夹下&#xff08;cert需要手…

6.19_JAVA_微服务

1、跑后端的时候要把数据库跑起来&#xff0c;否则会报错。 2、predicate断言&#xff1a; 预言&#xff1a;predict 3、gateway&#xff1a;出路口 4、API&#xff1a;List.of("a", "b", "c");把abc编程一个集合。 5、 6、shortcutFieldOrd…

Linux 基础命令:`ls`、`cd`、`du` 快速入门

在 Linux 系统中&#xff0c;ls、cd 和 du 是日常操作中最常用的三个命令。掌握它们能大幅提升文件管理效率。 1. ls&#xff1a;查看目录内容 用途&#xff1a;列出当前或指定目录下的文件和子目录。 常用命令&#xff1a; ls -l # 详细列表&#xff08;权限、大…

408第一季 - 数据结构 - 散列表

散列表 概念 散列表本身就是为了查找 原始人思想 散列表思想 6%5 是 1 1%5 也是1 冲突 冲突怎么办&#xff1f; 线性探测法 就往后找&#xff0c;1跑到索引为2 然后查找&#xff0c;可以发现&#xff0c;只要没冲突就只用查找1次 然后你想找10的话&#xff0c;发现索引为0…

Spring Boot 集成 Elasticsearch(含 ElasticsearchRestTemplate 示例)

Elasticsearch 是一个基于 Lucene 的分布式搜索服务器&#xff0c;具有高效的全文检索能力。在现代应用中&#xff0c;尤其是需要强大搜索功能的系统中&#xff0c;Elasticsearch 被广泛使用。 Spring Boot 提供了对 Elasticsearch 的集成支持&#xff0c;使得开发者可以轻松地…

CMake实践:指定gcc版本编译和交叉编译

目录 1.指定gcc版本编译 1.1.通过CMake参数来实现 1.2.使用 RPATH/RUNPATH 直接指定库路径 1.3.使用符号链接和 LD_LIBRARY_PATH 1.4.使用 wrapper 脚本封装 LD_LIBRARY_PATH 2.交叉编译 2.1.基本用法 2.2.工具链文件关键配置 2.3.多平台工具链示例 2.4.注意事项 2.…

详解鸿蒙Next仓颉开发语言中的全屏模式

大家好&#xff0c;今天跟大家分享一下仓颉开发语言中的全屏模式。 和ArkTS一样&#xff0c;仓颉的新建项目默认是非全屏模式的&#xff0c;如果你的应用颜色比较丰富&#xff0c;就会发现屏幕上方和底部的留白&#xff0c;这是应用自动避让了屏幕上方摄像头区域和底部的导航条…

LoRA 浅析

1. 核心思想 LoRA 是一种参数高效的微调方法&#xff0c;旨在减少微调大型语言模型 (LLMs) 所需的计算资源和存储空间。其核心思想是&#xff1a; 冻结预训练模型权重&#xff1a; 在微调过程中&#xff0c;保持预训练 LLM 的原始权重不变。引入低秩矩阵&#xff1a; 对于 LL…

软件范式正在经历第三次革命

核心主题&#xff1a;软件范式正在经历第三次根本性革命&#xff08;软件3.0&#xff09;&#xff0c;其核心是“智能体”&#xff08;Agent&#xff09;&#xff0c;未来十年将是“智能体的十年”。 逻辑模块解析&#xff1a; 软件的三次重生革命 软件1.0&#xff1a; 传统编…

JavaScript 变量与运算符全面解析:从基础到高级应用

昨天学长说可以放缓一下学习进度,刚好最近期末复习也不是很紧张,所以来重新复习一下js的一些知识点。 一&#xff1a;变量 &#xff08;1&#xff09;变量声明 来简单看一下变量的一些知识点。首先是变量声明&#xff1a;变量声明尽量使用数组字母下划线 来举几个例子&#x…