-
2021-03-09 17:05:51
【IT168 技术】之前我们介绍过:DB2数据库创建触发器的实现过程和DB2数据库调用存储过程的方法及实例,本文我们来介绍一下DB2数据库Java编程时的一些步骤,接下来就让我们来一起了解一下这一过程。
Java数据库链接(JDBC)
DB2的Java 支持包括JDBC,一个以供应商为中心的动态SQL接口,它通过标准的Java方法提供对应用程序的数据存取。JDBC与DB2 CLI相似之处在于您不必预编译或联编JDBC 程序。使用 JDBC 编写的应用程序只使用动态SQL。
JDBC编程步骤:
1.建立与数据库的连接:
Class.forName("Com.ibm.db2.jdbc.net.DB2Driver");
connection con=DriverManager.getConnection(url);
2.创建Statement对象:
Statement stmt=con.createStatement();
3.执行查询语句:
ResultSet rs=stmt.execQuery("SQL语句");
4.获取和设置选项:
ResultSetMetaData rsmd=rs.getMetaData();
int numCols=rsmd.getColumnCount()获取结果集总列数;
rsmd.getColumnLabel(i))获取记录值;
setMaxRows :设置结果集能容纳的最多行数.
setQueryTimeout:设置一个语句执行等待的时间.
setEscapeProcessing:通知驱动程序如何处理转义字符.
5.关闭Statement
stmt.clost();
调用层接口(CLI)
CLI不是一种新的查询语言,它只不过是应用程序可利用SQL语句去提交事务处理的一种简单接口,对数据库的查询和修改,仍要使用SQL语言编写,包括CLI函数的调用。
调用层接口(CLI)为DB2所提供的处理动态SQL语句的两种机制之一,即在应用程序首次运行时,动态SQL语句提交给数据库系统,CLI依赖一组函数调用,可嵌入主语言中。
关于DB2数据库JDBC编程步骤的知识就介绍到这里了,希望您有所收获!
更多相关内容 -
Java连接DB2
2019-03-21 02:01:32NULL 博文链接:https://stevenjohn.iteye.com/blog/968849 -
java访问DB2 (一)
2022-01-17 11:41:082、java访问DB2 1、启DB2服务 网上查了一些DB2的安装,很复杂,直接去docker hub上看看有没有镜像,发现真就镜像,那么有镜像就好说了直接拉取镜像run起来就行了。 前置条件:安装好docker环境 接下来: docker hub...本文章分两个部分:
1、启DB2服务,便于后续的连接测试
2、java访问DB21、启DB2服务
网上查了一些DB2的安装,很复杂,直接去docker hub上看看有没有镜像,发现真就镜像,那么有镜像就好说了直接拉取镜像run起来就行了。
前置条件:安装好docker环境接下来:
docker hub上DB2镜像
它给出了quick start:
直接run:docker run -d -p 50000:50000 --name my-db2 --privileged=true -e DB2INST1_PASSWORD=password -e DBNAME=testdb -e LICENSE=accept ibmcom/db2
镜像对外端口号为50000,到时访问这个端口号就行了。
docker ps
可以看到服务起来了。(如果没有起来,查一下是不是端口号被占用了)
这部分可以参考这篇博客
2、java连接DB2// java 连接类 public class SingleConnectionDataSource implements DataSource { private JdbcProperty jdbcProperty; public SingleConnectionDataSource(JdbcProperty jdbcProperty) { this.jdbcProperty = jdbcProperty; } @Override public Connection getConnection() throws SQLException { try { Class.forName(jdbcProperty.getDriverName()); } catch (ClassNotFoundException e) { throw new RuntimeException("Failed to load jdbc drive class " + jdbcProperty.getDriverName()); } Connection con; try { con = DriverManager.getConnection(jdbcProperty.getUrl(), jdbcProperty.getUserName(), jdbcProperty.getPassword()); } catch (SQLException e) { throw new RuntimeException("Failed to create connection " + e.getMessage()); } return con; } @Override public Connection getConnection(String username, String password) throws SQLException { throw new UnsupportedOperationException(); } @Override public <T> T unwrap(Class<T> iface) throws SQLException { throw new UnsupportedOperationException(); } @Override public boolean isWrapperFor(Class<?> iface) throws SQLException { throw new UnsupportedOperationException(); } @Override public PrintWriter getLogWriter() throws SQLException { throw new UnsupportedOperationException(); } @Override public void setLogWriter(PrintWriter out) throws SQLException { throw new UnsupportedOperationException(); } @Override public void setLoginTimeout(int seconds) throws SQLException { throw new UnsupportedOperationException(); } @Override public int getLoginTimeout() throws SQLException { throw new UnsupportedOperationException(); } @Override public java.util.logging.Logger getParentLogger() throws SQLFeatureNotSupportedException { throw new UnsupportedOperationException(); } public JdbcProperty getJdbcProperty() { return jdbcProperty; } }
主类:
public class db2TestMain { public static void main(String[] args) { // jdbc连接都是连接到 数据库级别 String url = "jdbc:db2://127.0.0.1:50000/testdb"; String username = "db2inst1"; String password = "password"; // 注意要连接db2的 property要有schema, schema是大写的 JdbcProperty jdbcProperty = new JdbcProperty.Builder(url, username, password) .driverName("com.ibm.db2.jcc.DB2Driver") .schema("DB2INST1").build(); SingleConnectionDataSource dataSource = new SingleConnectionDataSource(jdbcProperty); List<String> tables = listTables(dataSource); Collections.sort(tables); System.out.println("所有表:" + tables); } // 根据DataSource 来列出所有表 public List<String> listTables(DataSource dataSource) { try (Connection conn = dataSource.getConnection()) { List<String> tables = Lists.newArrayList(); DatabaseMetaData metaData = conn.getMetaData(); String schemaPattern = null; String schema = ((SingleConnectionDataSource) dataSource) .getJdbcProperty().getSchema(); if (StringUtils.isNotBlank(schema)) { schemaPattern = schema; } ResultSet rs = metaData.getTables(null, schemaPattern, "%", null); while (rs.next()) { tables.add(rs.getString("TABLE_NAME")); } return tables; } catch (SQLException e) { throw new RuntimeException("SQL_EXECUTION_ERROR"+ " list tables"); } } }
一些maven依赖,主要是db2的依赖:
<dependencies> <dependency> <groupId>commons-dbutils</groupId> <artifactId>commons-dbutils</artifactId> <version>1.6</version> </dependency> <dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> <version>23.0</version> </dependency> <!-- https://mvnrepository.com/artifact/org.apache.commons/commons-lang3 --> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> <version>3.4</version> </dependency> <!-- db2依赖 --> <dependency> <groupId>com.ibm.db2</groupId> <artifactId>jcc</artifactId> <version>11.5.0.0</version> </dependency> </dependencies>
-
Java连接DB2数据源的例子.rar
2019-07-10 12:28:55Java连接DB2数据源的例子,演示Java加载驱动程序,执行此例子需要调用newInstance() 注意JDK 1.1.1以下版本 在 OS/2上不具备Class.forName() 方法 执行静态初始化,可以忽略调用. -
详述 DB2 分页查询及 Java 实现的示例
2020-08-29 10:24:35本篇文章主要介绍了详述 DB2 分页查询及 Java 实现的示例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 -
db2中用java方法
2019-03-12 11:24:53db2中用java方法来加解密数据入库; -
db2java 驱动jar包
2018-03-02 15:37:03db2 的db2java 驱动jar包 -
java连接db2实例
2013-08-09 21:14:07java 连接db2 实例 包括jar包 都在里面 -
Java中查询db2的clob列的问题
2021-03-04 09:05:02在java中使用下面代码查询db2的clob列(conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY))在java中使用下面代码查询db2的clob列(conn.createStatement(ResultSet.TYPE_SCROLL_...在java中使用下面代码查询db2的clob列(conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY))
在java中使用下面代码查询db2的clob列
(conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY)).executeQuery(sql)
时会报以下错误:
DB2 SQL error: SQLCODE: -270, SQLSTATE: 42997, SQLERRMC: 63
而sql语句在db2中直接执行是不会报错的。
在db2中直接执行是没有使用scrollable cursor游标的,,那解决的方法既是:
将createStatement中的参数去掉,直接用下面的代码:
createStatement().executeQuery(sql)
这样就可以了,不会报错的了
本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉
本文系统来源:php中文网
-
java连接DB2jdbc所有驱动
2013-08-22 09:50:45java连接DB2jdbc所有驱动 -
通过JDBC通过java连接DB2数据库
2015-12-29 17:25:09本文档为作者在实践过程中的总结,大神可以绕道,如果是初学者可以阅读,非常详细。 -
DB2 中读取clob类型
2021-04-23 12:11:32读取clob类型的xml数据:export to xml.del of del lobfile xml modified by lobsinfile select requested_elements_clob from req.access_req_v where request_id in (14, 15);写入clob类型的xml数据:import from ...读取clob类型的xml数据:
export to xml.del of del lobfile xml modified by lobsinfile select requested_elements_clob from req.access_req_v where request_id in (14, 15);
写入clob类型的xml数据:
import from '/home/team1adm/autoDBA/importXMLCLOB_FIW.del' of del lobs from '/home/team1adm/autoDBA' modified by lobsinfile insert_update into req.access_req_xml_clob;
importXMLCLOB_FIW.del:
2056579, "2056579.req.0.35192/"
2056588, "2056588.req.0.48122/"
Big file out:
INSERT INTO REQ.ACCESS_REQ (app_code, serial, cc, userid, request_id, top_level_element, USERID_TYPE, REQ_SERIAL, REQ_CC, SYSTEM, request_type, status, status_updated_by, referred_request_id, timestamp, status_updated_date, business_justification, REQUESTED_ELEMENTS) VALUES ('FIW_LR', '908749', 'JPG', 'J908749', 2056579, 'Geo_Country_LC_LD', 'HYPERION', 'C-3M2F', '897', '', 'MIGRATED', 'GRANTED', 'oneteam@us.ibm.com', 0, CURRENT TIMESTAMP, CURRENT TIMESTAMP, 'MIGRATED USER', null);
INSERT INTO REQ.ACCESS_REQ (app_code, serial, cc, userid, request_id, top_level_element, USERID_TYPE, REQ_SERIAL, REQ_CC, SYSTEM, request_type, status, status_updated_by, referred_request_id, timestamp, status_updated_date, business_justification, REQUESTED_ELEMENTS) VALUES ('FIW_LR', '8A0735', '897', 'GMEGHAN', 2056588, 'Geo_Country_LC_LD', 'HYPERION', 'C-3M2F', '897', '', 'MIGRATED', 'GRANTED', 'oneteam@us.ibm.com', 0, CURRENT TIMESTAMP, CURRENT TIMESTAMP, 'MIGRATED USER', null);
import from 'D:\tmp\FIW\xxx\importXMLCLOB_FIWLR.del' of del lobs from 'D:\tmp\FIW\xxx' modified by lobsinfile insert into req.access_req_xml_clob;
-
db2jcc_license_cu/db2java/db2jcc
2018-06-14 11:56:01db2jcc_license_cu.jar包/ db2java.jar包/ db2jcc.jar包 -
Java连接db2 数据库jar包 db2jcc.jar db2jcc_license_cu.jar
2021-11-18 15:09:39Java连接db2 数据库jar包 db2jcc.jar db2jcc_license_cu.jar -
Java连接DB2数据库之实战演示
2021-02-26 20:56:28此文章主要讲述的是Java连接DB2数据库的实际操作过程,如果你在实际操作中遇到Java连接DB2数据库的实际操作过程,但是你却不知道对其如何正确的解决,那么以下的文章对你而言一定是良师益友。1. 关于Connection ... -
DB2 查询数据库内表名
2021-06-28 17:42:51select * from syscat.tables where OWNER=‘DB2INST’ and TABSCHEMA=‘DB2INST’ -
java连接DB2所需的jar包
2013-07-31 15:15:21java连接DB2所需的所有的jar包,很全 -
java_connection_db2_driver.zip
2020-07-23 08:54:03javaWeb程序连接db2数据库驱动jar包 -
db2java+db2jcc+db2jcc4+license
2018-06-03 18:37:12db2java+db2jcc+db2jcc4+license 。db2数据库的驱动和license -
java实现连接db2数据库的代码实例
2021-03-16 22:07:24java实现连接db2数据库的代码实例第一种:目前ibm一直都没有提供type 1的jdbc驱动程序。第二种:类型2驱动:com.ibm.db2.jdbc.app.db2driver,该驱动也位于包db2java.zip中,jdk必须能访问db2的db2jdbc.dll等。用法... -
java 调用db2存储过程
2013-02-28 07:54:38java 调用db2存储过程,将db2数据库的存储过程描述,讲的比较清楚。 -
java调用db2存储过程例子(新手用,熟悉的就不用看了)
2019-03-05 01:06:45博文链接:https://acme1921209.iteye.com/blog/97776 -
db2java db2jcc
2016-11-01 10:13:59db2java.jar -
java连接DB2指定schema
2019-08-29 14:38:34url=“jdbc:db2://127.0.0.1:50000/dbtest:currentSchema=db2inst1;” 特别注意:currentSchema是区分大小写的,后面的分号也是必须的! 如果不添加currentSchema写sql时需要指定使用的schema select count(1) as ... -
db2java.jar
2018-01-11 18:42:08db2数据库使用的jar包,欢迎下载。 db2数据库使用的jar包,欢迎下载。 -
java连接db2jar包
2013-12-23 15:00:24java连接db2数据库使用的jar包 db2jcc.jar db2jcc_license_cu.jar 看到论坛里有,但是需要积分,我就传个不要积分的哈 -
db2的相关jar包依赖
2020-10-10 16:55:24上传的是DB2驱动文件db2java.jar、db2jcc.jar、db2jcc_license_cu.jar。压缩包中有db2java.jar、 db2jcc.jar、db2jcc_license_cu.jar -
java db2数据库驱动
2013-07-05 09:58:07java 开发连接DB2 数据库的驱动 jar包