1、什么是JDBC?
JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发者能够编写数据库的程序。简单地说,JDBC 可做三件事:与数据库建立连接、发送 操作数据库的语句并处理结果。 2、JDBC有什么用呢? 我们用JAVA就能连接到数据库;创建SQL或者MYSQL语句;执行SQL或MYSQL的查询数据库;查看和修改结果记录。 二、连接常用的接口 提供的接口包括:JAVA API:提供对JDBC的管理链接;JAVA Driver API:支持JDBC管理到驱动器连接。 1、DriverManager :这个类管理数据库驱动程序的列表。内容是否符合从Java应用程序使用的通信子协议正确的数据 库驱动程序的连接请求。识别JDBC在一定子协议的第一个驱动器被用来建立数据库连接。 2、Driver :此接口处理与数据库服务器通信。很少直接与驱动程序对象。相反,使用DriverManager中的对象,它管理 此类型的对象。它也抽象的与驱动程序对象工作相关的详细信息。 3、Connection :此接口与接触数据库的所有方法。连接对象表示通信上下文,即,与数据库中的所有的通信是通过唯一的连接对象。 4、Statement :可以使用这个接口创建的对象的SQL语句提交到数据库。一些派生的接口接受除执行存储过程的参数。 5、ResultSet :这些对象保存从数据库后,执行使用Statement对象的SQL查询中检索数据。它作为一个迭代器,让你可以通过移动它的数据。
2、达梦JDBC驱动包
在部署完数据库软件后,在$DM_HOME/drivers/jdbc下有连接达梦的JDBC 驱动 jar
如下图所示:
注意
使用DmJdbcDriver16.jar 对应 JDK 6
使用 DmJdbcDriver17.jar 对应 JDK 7
使用 DmJdbcDriver18.jar 对应 JDK 8
使用 请根据开发环境选择合适的 DM JDBC 驱动包
3、确定JDK版本
通过第二步可以发现,达梦的JDBC驱动包的不同版本有着不同的JDK环境,如果不对应的话可能将会报错,从下图可以看出,我的JDK环境是1.8,所以我选择DmJdbcDriver18.jar驱动jar包
4、JDBC连接与操作达梦数据集群实战
4.1、环境准备
本次我采用的eclipse开发工具,步骤是:建立工程->导入驱动包->敲连接代码->测试
4.1.1、创建java工程
4.1.2、点击【结束】
4.1.3、加载驱动包
在eclipse工具上:窗口-.>首选上->java->用户库->new
4.2、连接集群测试
package java_jdbc; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class jdbc_conn { static Connection con = null; static String cname = "dm.jdbc.driver.DmDriver"; static String url = "jdbc:dm://AA?AA=(192.168.100.1:32141,192.168.100.2:32142)&LOGIN_MODE=(1)"; static String userid = "DMDATA"; static String pwd = "xxx"; public static void main(String[] args) { try { Class.forName(cname); con = DriverManager.getConnection(url, userid, pwd); con.setAutoCommit(true); System.out.println("[SUCCESS]conn database"); } catch (Exception e) { System.out.println("[FAIL]conn database:" + e.getMessage()); } } public void disConn(Connection con) throws SQLException { if (con != null) { con.close(); } } }
-----------------------------//JDBC连接结果如下图//------------------------------
4.3、操作集群测试
4.3.1、主库为我虚拟机上的192.168.100.1,备库为192.168.100.2/192.168.100.3,对达梦集群进行增、删、改、查操作
package java_jdbc; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class jdbc_insert { // 定义 DM JDBC 驱动串 static String jdbcString = "dm.jdbc.driver.DmDriver"; // 定义 DM URL 连接串 static String urlString = "jdbc:dm://AA?AA=(192.168.100.1:32141,192.168.100.2:32142,192.168.100.3:32143)&LOGIN_MODE=(1)"; // 定义连接用户名 static String userName = "DMDATA"; // 定义连接用户口令 static String password = "xxx"; // 定义连接对象 static Connection conn = null; // 定义 SQL 语句执行对象 static Statement state = null; // 定义结果集对象 static ResultSet rs = null; public static void main(String[] args) { try { //1.加载 JDBC 驱动程序 System.out.println("Loading JDBC Driver..."); Class.forName(jdbcString); //2.连接 DM 数据库 System.out.println("Connecting to DM Server..."); conn = DriverManager.getConnection(urlString, userName, password); //3.通过连接对象创建 java.sql.Statement 对象 state = conn.createStatement(); //------------------------------------------------------------------------------ //基础操作:此处对应的操作代码为示例库中 DMUSER 模式中的 //PRODUCT_CATEGORY 表 //增加 //定义增加的 SQL 这里由于此表中的结构为主键,自增,只需插入 name 列的值 String sql_insert = "insert into DMUSER.PRODUCT_CATEGORY"+ "(name)values('田田')"; //执行添加的 SQL 语句 state.execute(sql_insert); //删除 //定义删除的 SQL 语句 String sql_delete = "delete from DMUSER.PRODUCT_CATEGORY "+ "where name = '厨艺'"; //执行删除的 SQL 语句 state.execute(sql_delete); //修改 String sql_update = "update DMUSER.PRODUCT_CATEGORY set "+ "name = '钢铁' where name = '塑料'"; //查询表中数据 //定义查询 SQL String sql_selectAll = "select * from v$INSTANCE"; //执行查询的 SQL 语句 rs = state.executeQuery(sql_selectAll); displayResultSet(rs);
state.executeUpdate(sql_update); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } finally { try { //关闭资源 rs.close(); state.close(); conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } //显示结果集 public static void displayResultSet(ResultSet rs) throws SQLException{ while (rs.next()) { int i=1; Object id = rs.getObject(i++); Object name = rs.getObject(i++); System.out.println(id+" "+name); } } }
-----------------------------//JDBC操作结果如下图//------------------------------
4.3.2、切换集群主库为192.168.100.2/192.168.100.3,再次对数据库集群进行增、删、改、查操作
-----------------------------//JDBC操作结果如下图//------------------------------
5、总结
达梦数据库集群解决单点故障,提升了服务的持续性、高效性,当集群主库发生故障时,达梦将自动切换备库接管,JDBC在集群连接时需要注意配置连接主机的ip,避免使用单节点连接
-----------------------------//JDBC连接到此结束//------------------------------
更多内容,请访问达梦社区地址: https:eco.dameng.com