栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

java访问DB2 (一)

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java访问DB2 (一)

本文章分两个部分:
1、启DB2服务,便于后续的连接测试
2、java访问DB2

1、启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 unwrap(Class 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 tables = listTables(dataSource);
        Collections.sort(tables);
        System.out.println("所有表:" + tables);
    }
        // 根据DataSource 来列出所有表
	public List listTables(DataSource dataSource) {
        try (Connection conn = dataSource.getConnection()) {
            List 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的依赖:


        
            commons-dbutils
            commons-dbutils
            1.6
        
        
            com.google.guava
            guava
            23.0
        
        
        
            org.apache.commons
            commons-lang3
            3.4
        

		
        
            com.ibm.db2
            jcc
            11.5.0.0
        
    
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/705437.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号