Java 操作多类型数据库下的兼容性验证

  • 第一章:数据库测试
  • ①【 oracle 数据库不支持分号】ORA-00933: SQL 命令未正确结束
  • ② 【sqlserver 数据库不支持 commit】COMMIT TRANSACTION 请求没有对应的 BEGIN TRANSACTION
  • ③ 【DB2 数据库不支持分号】SQLSTATE=42601, SQLERRMC=;;de = '报表合并体系1';END-OF-STATEMENT
  • ④ 【kingbase 人大金仓数据库没问题】
  • ⑤ 【DM 达梦数据库没问题】
  • ⑥ 【PG、瀚高数据库没问题】
  • ⑦ 【polardb 数据库没问题】
  • 第二章:测试环境
  • ① 测试 sql 语句
  • ② 测试代码块
  • ③ 测试驱动和 JDK 版本

第一章:数据库测试

①【 oracle 数据库不支持分号】ORA-00933: SQL 命令未正确结束


报错:OriginalSql = delete from org_reportcombinestru where code = '报表合并体系2';, Error Msg = ORA-00933: SQL 命令未正确结束

java.sql.SQLSyntaxErrorException: ORA-00933: SQL 命令未正确结束at oracle.jdbc.driver.T4CTTIoer11.processError(T4CTTIoer11.java:509)at oracle.jdbc.driver.T4CTTIoer11.processError(T4CTTIoer11.java:461)at oracle.jdbc.driver.T4C8Oall.processError(T4C8Oall.java:1104)at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:550)at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:268)at oracle.jdbc.driver.T4C8Oall.doOALL(T4C8Oall.java:655)at oracle.jdbc.driver.T4CStatement.doOall8(T4CStatement.java:229)at oracle.jdbc.driver.T4CStatement.doOall8(T4CStatement.java:41)at oracle.jdbc.driver.T4CStatement.executeForRows(T4CStatement.java:928)at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1205)at oracle.jdbc.driver.OracleStatement.executeUpdateInternal(OracleStatement.java:1747)at oracle.jdbc.driver.OracleStatement.executeLargeUpdate(OracleStatement.java:1712)at oracle.jdbc.driver.OracleStatement.executeUpdate(OracleStatement.java:1699)at oracle.jdbc.driver.OracleStatementWrapper.executeUpdate(OracleStatementWrapper.java:285)at com.dbmanage.db.DBUpdate.getRs(DBUpdate.java:21)at com.dbmanage.db.DBMain.update_sql(DBMain.java:57)at com.dbmanage.db.ReadFile.getFileContent(ReadFile.java:28)at com.dbmanage.db.ReadClipboard.lostOwnership(ReadClipboard.java:87)at sun.awt.datatransfer.SunClipboard.lostOwnershipNow(SunClipboard.java:313)at sun.awt.datatransfer.SunClipboard.lambda$lostOwnershipLater$0(SunClipboard.java:283)at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)at java.awt.EventQueue.access$500(EventQueue.java:97)at java.awt.EventQueue$3.run(EventQueue.java:709)at java.awt.EventQueue$3.run(EventQueue.java:703)at java.security.AccessController.doPrivileged(Native Method)at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205)at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
Caused by: Error : 933, Position : 68, Sql = delete from org_reportcombinestru where code = '报表合并体系1';, OriginalSql = delete from org_reportcombinestru where code = '报表合并体系1';, Error Msg = ORA-00933: SQL 命令未正确结束at oracle.jdbc.driver.T4CTTIoer11.processError(T4CTTIoer11.java:513)... 33 more

② 【sqlserver 数据库不支持 commit】COMMIT TRANSACTION 请求没有对应的 BEGIN TRANSACTION

sqlservser 数据库测试

报错:com.microsoft.sqlserver.jdbc.SQLServerException: COMMIT TRANSACTION 请求没有对应的 BEGIN TRANSACTION

com.microsoft.sqlserver.jdbc.SQLServerException: COMMIT TRANSACTION 请求没有对应的 BEGIN TRANSACTION。at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:254)at com.microsoft.sqlserver.jdbc.SQLServerStatement.getNextResult(SQLServerStatement.java:1608)at com.microsoft.sqlserver.jdbc.SQLServerStatement.doExecuteStatement(SQLServerStatement.java:859)at com.microsoft.sqlserver.jdbc.SQLServerStatement$StmtExecCmd.doExecute(SQLServerStatement.java:759)at com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:7240)at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:2869)at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeCommand(SQLServerStatement.java:243)at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeStatement(SQLServerStatement.java:218)at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeUpdate(SQLServerStatement.java:706)at com.dbmanage.db.DBUpdate.getRs(DBUpdate.java:21)at com.dbmanage.db.DBMain.update_sql(DBMain.java:87)at com.dbmanage.db.ReadFile.getFileContent(ReadFile.java:28)at com.dbmanage.db.ReadClipboard.lostOwnership(ReadClipboard.java:87)at sun.awt.datatransfer.SunClipboard.lostOwnershipNow(SunClipboard.java:313)at sun.awt.datatransfer.SunClipboard.lambda$lostOwnershipLater$0(SunClipboard.java:283)at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)at java.awt.EventQueue.access$500(EventQueue.java:97)at java.awt.EventQueue$3.run(EventQueue.java:709)at java.awt.EventQueue$3.run(EventQueue.java:703)at java.security.AccessController.doPrivileged(Native Method)at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205)at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

③ 【DB2 数据库不支持分号】SQLSTATE=42601, SQLERRMC=;;de = ‘报表合并体系1’;END-OF-STATEMENT

db2 数据库测试

报错:com.ibm.db2.jcc.am.SqlSyntaxErrorException: DB2 SQL Error: SQLCODE=-104, SQLSTATE=42601, SQLERRMC=;;de = '报表合并体系1';END-OF-STATEMENT, DRIVER=4.19.49

com.ibm.db2.jcc.am.SqlSyntaxErrorException: DB2 SQL Error: SQLCODE=-104, SQLSTATE=42601, SQLERRMC=;;de = '报表合并体系1';END-OF-STATEMENT, DRIVER=4.19.49at com.ibm.db2.jcc.am.kd.a(Unknown Source)at com.ibm.db2.jcc.am.kd.a(Unknown Source)at com.ibm.db2.jcc.am.kd.a(Unknown Source)at com.ibm.db2.jcc.am.fp.c(Unknown Source)at com.ibm.db2.jcc.am.fp.d(Unknown Source)at com.ibm.db2.jcc.am.fp.b(Unknown Source)at com.ibm.db2.jcc.t4.bb.i(Unknown Source)at com.ibm.db2.jcc.t4.bb.c(Unknown Source)at com.ibm.db2.jcc.t4.p.b(Unknown Source)at com.ibm.db2.jcc.t4.vb.h(Unknown Source)at com.ibm.db2.jcc.am.fp.jb(Unknown Source)at com.ibm.db2.jcc.am.fp.a(Unknown Source)at com.ibm.db2.jcc.am.fp.c(Unknown Source)at com.ibm.db2.jcc.am.fp.executeUpdate(Unknown Source)at com.dbmanage.db.DBUpdate.getRs(DBUpdate.java:21)at com.dbmanage.db.DBMain.update_sql(DBMain.java:88)at com.dbmanage.db.ReadFile.getFileContent(ReadFile.java:28)at com.dbmanage.db.ReadClipboard.lostOwnership(ReadClipboard.java:87)at sun.awt.datatransfer.SunClipboard.lostOwnershipNow(SunClipboard.java:313)at sun.awt.datatransfer.SunClipboard.lambda$lostOwnershipLater$0(SunClipboard.java:283)at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)at java.awt.EventQueue.access$500(EventQueue.java:97)at java.awt.EventQueue$3.run(EventQueue.java:709)at java.awt.EventQueue$3.run(EventQueue.java:703)at java.security.AccessController.doPrivileged(Native Method)at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205)at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

④ 【kingbase 人大金仓数据库没问题】

⑤ 【DM 达梦数据库没问题】

⑥ 【PG、瀚高数据库没问题】

⑦ 【polardb 数据库没问题】

第二章:测试环境

① 测试 sql 语句

形式如下面的语句以及在此基础上的嵌套 sql 语句:

insert into org_xxx (a, b, c, ...) values (a1, b1, c1, ...);
commit;
delete from org_xxx where code = 'xxx';
commit;
update org_xxx set name = "xxx" where code = 'xxx';
commit;

② 测试代码块

外部调用下面的代码来执行。

import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement;public class DBUpdate {public static int getRs(Connection conn, String sql) {/*作用:插入、更新、删除数据库返回:影响的行数:0代表无影响*/Statement st = null;int rs = 0;try {// statement对象用于执行sql语句st = conn.createStatement();// 执行sql语句,成功返回修改行数,不成功返回0rs = st.executeUpdate(sql);}catch(SQLException e){e.printStackTrace();}catch (Exception e){e.printStackTrace();}return rs;}
}

③ 测试驱动和 JDK 版本

由于有些驱动没有现成的数据库,未进行测试,如:mysql、高斯。

喜欢的点个赞❤吧!

Java 技术篇 - java同时连接多种数据库执行sql语句的兼容性验证,数据库类型包括:oracle、sqlserver、DB2、人大金仓、达梦、PG、瀚高、polardb相关推荐

  1. DBeaver连接(人大金仓/达梦)数据库 ,达梦、人大金仓数据库可视化工具

    1. 下载安装DBeaver DBeaver下载地址 DBeaver 支持多平台,选择自己的操作系统 2. 使用DBeaver连接人大金仓数据库 2.1 数据库 -> 驱动管理器 2.2 新建驱 ...

  2. Python 技术篇-操作oracle数据库执行SQL语句报错,提示ORA-00911: 无效字符解决方法

    cursor.execute("select name from v$datafile;") 执行 sql 语句提示无效字符. 原因就是我加入了 ; 号. 改成 cursor.ex ...

  3. Asp.Net访问Oracle 数据库 执行SQL语句和调用存储过程

    Web服务器的配置: 1.安装Oracle 客户端 参考 Oracle 9i & PLSQL 全简体中文版数据库安装过程(图解),在选择安装的时候仅安装客户端即可 2.为安装客户端的服务器配置 ...

  4. Python连接MySQL数据库执行sql语句时的参数问题

    由于工作需要,今天写了一个Python小脚本,其中需要连接MySQL数据库,在执行sql命令时需要传递参数,结果出问题了.在网上查了一下,发现有以下几种方式传递参数: 一.直接把sql查询语句完整写入 ...

  5. python调用mysql数据库sql语句过长有问题吗_Python 连接Mysql数据库执行sql语句

    #-*- coding: utf-8 -*- ''' ====================================================================== 描述 ...

  6. 达梦数据库执行sql语句时报错:表【xxx】中不能同时包含聚集KEY和大字段

    最近在部署测试搭配达梦数据库的应用,使用sql语句创建表并插入数据时,有出现如下错误:表[xxx]中不能同时包含聚集KEY和大字段,如下图所示: 问题原因:达梦数据库建表时默认将主键设置为聚集索引,而 ...

  7. 使用Python批量修改数据库执行Sql文件

    由于上篇文章中批量修改了文件,有的时候数据库也需要批量修改一下,之前的做法是使用宝塔的phpMyAdmin导出一个已经修改好了的sql文件,然后依次去其他数据库里导入,效率不说极低,也算低了,且都是些 ...

  8. python数据库操作批量sql执行_使用Python批量修改数据库执行Sql文件

    由于上篇文章中批量修改了文件,有的时候数据库也需要批量修改一下,之前的做法是使用宝塔的phpMyAdmin导出一个已经修改好了的sql文件,然后依次去其他数据库里导入,效率不说极低,也算低了,且都是些 ...

  9. python数据库操作批量sql执行_利用Python如何批量修改数据库执行Sql文件

    利用Python如何批量修改数据库执行Sql文件 来源:中文源码网    浏览: 次    日期:2018年9月2日 [下载文档:  利用Python如何批量修改数据库执行Sql文件.txt ] (友 ...

最新文章

  1. 12th,Jan 研究生创新项目申报成功
  2. 每日命令:(13)more
  3. SVN 常用操作命令 使用笔记
  4. msm(CentOS 6)及jvm虚拟机性能监控(04)_recv
  5. 容灾系统的云中嬗变-【软件和信息服务】2013.12
  6. python关键词提取源码_Python 结巴分词 关键词抽取分析
  7. 软件工程-团队作业1
  8. 厦门大学计算机学硕复试,【图片】一战厦大计算机上岸,经验帖。慢更【考研吧】_百度贴吧...
  9. 蘑菇街移动端混合开发体系的研发与实践
  10. html5 本地mysql_html5本地数据库(一)
  11. 从音箱入门到高手必看知识(一)—— 音箱初级知识
  12. c++ 链表快速查找
  13. JavaScript 05
  14. 解决QQ空间说说自动被发广告信息办法:取消第三方授权
  15. 读书笔记(宏微观经济学)
  16. MATLAB 将txt文本转化为tif图片格式
  17. 汽车模复杂曲面分型面的几种创建技巧
  18. 怎样恢复计算机的开机桌面,电脑系统崩溃如何找回桌面文件?
  19. firebase-admin的Java集成到服务器
  20. 简单研究Unity中的万向锁和欧拉角以及四元数

热门文章

  1. 通过poi操作ppt中的图片
  2. log4net使用详解
  3. poj 3580 splay
  4. 9岁印度女孩成为最年轻微软认证专家
  5. 修改Linux内核的printk缓冲区(log缓冲区)大小
  6. LCD 常用的客观效果指标和测试方法
  7. CTO俱乐部下午茶:技术团队管理中的那些事儿
  8. 介绍一款facebook信息收集工具FBI
  9. 趣谈NAT和防火墙的对话+防火墙静态PAT的应用
  10. 赛门铁克公布Q3财报 亏损68亿美元