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连接到此结束//------------------------------