Java JDBC连接各种数据库(包括mysql、pg、hive)

本文详细介绍了Java数据库连接(JDBC)的基本原理,包括如何通过Java语言操作数据库的四个主要步骤,提供了针对多种主流数据库的配置示例,并列举了部分数据库的jar依赖。

JDBC全称Java Database Connectivity,就是Java数据库连接,也就是说用Java语言操作数据库。

一、原理

二、步骤

1、注册驱动

2、获取连接

3、获取Statement

4、得到结果集中的数据

三、示例

String Driver="com.mysql.jdbc.Driver";    //驱动程序  
//连接的URL,db_name为数据库名  
String URL="jdbc:mysql://localhost:3306/db_name";       
String Username="username";    //用户名  
String Password="password";    //密码  
String sql = "select * from test";
Class.forName(Driver);  
Connection con=DriverManager.getConnection(URL,Username,Password);  
PreparedStatement preparedStatement = con.prepareStatement(sql);
Result rs = preparedStatement.executeQuery();
while (rs.next()) {
    String name = rs.getString("name");
}

四、配置Properties

# 示例配置参考,涵盖几乎所有的主流数据库  
############# Oracle数据库 ########################  
#   数据库驱动名  
driver=oracle.jdbc.driver.OracleDriver  
#   数据库URL(包括端口)  
dburl=jdbc:oracle:thin:@127.0.0.1:1521:db_src  
#   数据库用户名  
user=root  
#   用户密码  
password=abcdef  
############# MySQL数据库 ########################  
#   数据库驱动名  
driver=com.mysql.jdbc.Driver  
#   数据库URL(包括端口)  
dburl=jdbc:mysql://127.0.0.1:3306/db_src  
#   数据库用户名  
user=root  
#   用户密码  
password= abcdef  
############# PostgreSQL数据库数据库 ########################  
#   数据库驱动名  
driver=org.postgresql.Driver  
#   数据库URL(包括端口)  
dburl=jdbcostgresql://127.0.0.1/db_src  
#   数据库用户名  
user=root  
#   用户密码  
password= abcdef  
############# DB2数据库 ########################  
#   数据库驱动名  
driver=com.ibm.db2.jcc.DB2Driver  
#   数据库URL(包括端口)  
dburl=jdbc:db2://127.0.0.1:50000/db_src  
#   数据库用户名  
user=root  
#   用户密码  
password= abcdef  
############# Hive数据库 ########################  
#   数据库驱动名  
driver=org.apache.hive.jdbc.HiveDriver  
#   数据库URL(包括端口)  
dburl=jdbc:hive2://192.168.0.141:10000/default:auth=noSasl  
#   数据库用户名  
user=root  
#   用户密码  
password= abcdef  
############# SQLServer2000数据库 ########################  
#   数据库驱动名  
driver=com.microsoft.jdbc.sqlserver.SQLServerDriver  
#   数据库URL(包括端口)  
dburl=jdbc:microsoftqlserver://127.0.0.1:1433;DatabaseName=db_src  
#   数据库用户名  
user=root  
#   用户密码  
password= abcdef  
############# SQLServer2005数据库 ########################  
#   数据库驱动名  
driver=com.microsoft.sqlserver.jdbc.SQLServerDriver  
#   数据库URL(包括端口)  
dburl=jdbc:sqlserver://127.0.0.1:1433;DatabaseName=db_src  
#   数据库用户名  
user=root  
#   用户密码  
password= abcdef  
############# Informix数据库数据库 ########################  
#   数据库驱动名  
driver=com.informix.jdbc.IfxDriver  
#   数据库URL(包括端口)  
dburl=jdbc:informix-sqli://127.0.0.1:1533/db_src  
#   数据库用户名  
user=root  
#   用户密码  
password= abcdef  
############# Sybase数据库 ########################  
#   数据库驱动名  
driver=com.sybase.jdbc.SybDriver  
#   数据库URL(包括端口)  
dburl=jdbcybase:Tds:127.0.0.1:5007/db_src  
#   数据库用户名  
user=root  
#   用户密码  
password= abcdef  
#   数据源只能保留一个  
############# Tomcat/JBoss数据源 #####################  
datasource=java:comp/env/jdbc/db_ds  
############# Websphere/WebLogic数据源 ##################  
#datasource=db_ds  

五、jar依赖

        <!-- postgresql -->
        <dependency>
            <groupId>org.postgresql</groupId>
            <artifactId>postgresql</artifactId>
            <version>42.2.5</version>
        </dependency>

        <!-- hive -->
        <dependency>
            <groupId>org.apache.hive</groupId>
            <artifactId>hive-jdbc</artifactId>
            <version>1.1.0</version>
        </dependency>

 

参考:

https://baijiahao.baidu.com/s?id=1654326437782336085&wfr=spider&for=pc

https://www.iteye.com/blog/it4j-2082047

<think>我们正在讨论的是Spark引擎、JDBCMySQL引擎和SequoiaDB(SDB)数据库之间的关联。根据用户的问题,我们需要理解: 1. Spark引擎与MySQL引擎的关系 2. JDBC连接SDB数据库 3. Spark和MySQL在数据处理中的关联 参考提供的引用,我们可以得到以下信息: - 引用[1]提到SequoiaDB支持多种实例,包括MySQL、PostgreSQL和SparkSQL,并且支持HTAP(混合事务/分析处理)。 - 引用[2]展示了在Hive中使用Spark SQL创建表并连接到SequoiaDB的示例。 - 引用[3]展示了Spring Boot、MyBatis与Spark SQL和SDB的对接,以及如何在MySQL中创建表。 - 引用[4]给出了一个使用JDBC连接MySQLJava代码示例(虽然这里连接的是MySQL,但可以类比连接SDB的MySQL实例)。 - 引用[5]提到了使用Spark SQL将Kudu数据同步到MySQL,并提到了优化方法。 现在,我们逐一回答用户的问题: ### 1. Spark引擎与MySQL引擎的关系 Spark引擎是一个分布式计算框架,可以处理大规模数据。而MySQL引擎通常指MySQL数据库的存储和查询引擎。它们之间的关系主要体现在: - **数据源与计算层分离**:在SequoiaDB的架构中(引用[1]),MySQL引擎可以作为SequoiaDB的一个关系型数据库实例,即SequoiaDB底层存储数据,而MySQL引擎提供SQL接口。Spark引擎可以通过Spark SQL直接访问SequoiaDB存储的数据(引用[2]),也可以访问MySQL实例(即SequoiaDB提供的MySQL实例)中的数据。 - **协同工作**:Spark可以从MySQL(或SequoiaDB的MySQL实例)中读取数据,进行分布式计算,然后将结果写回MySQL或其它存储。同样,Spark也可以将MySQL作为数据源或输出目的地。 ### 2. JDBC连接SDB数据库 JDBCJava Database Connectivity)是Java语言中用来规范客户端程序如何访问数据库的API。通过JDBC,我们可以连接各种支持JDBC驱动的数据库。 - 对于SequoiaDB(SDB),它提供了多种实例类型,包括MySQL的实例。因此,我们可以使用MySQLJDBC驱动来连接SDB的MySQL实例(如引用[4]所示,只是将连接字符串指向SDB的MySQL实例地址)。 - 示例代码(参考引用[4]): ```java // 加载MySQL驱动 Class.forName("com.mysql.jdbc.Driver"); // 连接字符串指向SDB的MySQL实例 String url = "jdbc:mysql://host:port/database?useSSL=false"; Connection conn = DriverManager.getConnection(url, username, password); ``` 其中,host和port是SDB的MySQL实例的地址和端口。 ### 3. Spark和MySQL在数据处理中的关联 在数据处理流程中,Spark和MySQL可以协同工作: - **数据读取**:Spark可以通过JDBC读取MySQL(或SDB的MySQL实例)中的数据,将其转换为DataFrame或RDD进行处理(引用[5]提到Spark SQL同步数据,虽然是从Kudu到MySQL,但同样适用于从MySQL读取)。 - **数据处理**:Spark利用其分布式计算能力对数据进行复杂处理(如ETL、机器学习等),而MySQL通常作为事务型数据库存储原始数据或处理后的结果。 - **数据写入**:Spark处理后的结果可以写回MySQL(或SDB的MySQL实例)供应用程序使用。 在SequoiaDB的HTAP架构中(引用[1]),Spark(分析场景)和MySQL(事务场景)可以同时操作同一份存储在SequoiaDB中的数据,实现混合负载。 ### 总结 - Spark引擎与MySQL引擎在SequoiaDB的架构中可以共存,分别处理分析型负载和事务型负载。 - 通过JDBC,应用程序可以连接SDB的MySQL实例,操作存储在SequoiaDB中的数据。 - Spark和MySQL在数据处理中关联紧密:Spark可以读写MySQL实例中的数据,进行大规模分布式计算,而MySQL则提供事务支持和实时查询。 §§相关问题§§ 1. 在SequoiaDB中,Spark SQL如何直接访问底层存储(而不通过MySQL实例)? 2. 使用Spark通过JDBC读取MySQL数据时,如何优化性能? 3. SequoiaDB的HTAP架构中,如何保证事务处理(通过MySQL实例)和分析处理(通过Spark)的隔离性?</think>### Spark引擎、JDBCMySQL引擎与SDB数据库的关联解析 #### 1. **Spark引擎与MySQL引擎的关系** - **功能定位**: - **Spark引擎**:分布式计算框架,专长于大规模数据批处理、流计算和机器学习(如Spark SQL用于结构化数据分析)[^1]。 - **MySQL引擎**:关系型数据库管理系统(RDBMS),核心能力是事务处理(OLTP)和实时查询。 - **协同场景**: - Spark通过JDBC连接MySQL,直接读取或写入数据(如ETL、数据同步)[^5]。 - 在HTAP架构中(如SequoiaDB),MySQL引擎处理事务请求,Spark引擎负责分析计算,共享同一份底层存储[^1]。 - **性能互补**: - MySQL擅长低延迟点查询,Spark擅长高吞吐复杂计算(如聚合、JOIN操作)[^1]。 #### 2. **JDBC连接SDB数据库** - **连接原理**: - SDB通过提供**MySQL/PG兼容接口**,允许标准JDBC驱动连接(如`com.mysql.jdbc.Driver`)[^4]。 - 连接示例(Java): ```java String url = "jdbc:mysql://sdbserver1:3306/db?useSSL=false"; Connection conn = DriverManager.getConnection(url, "sdbapp", "xxxxxx"); ``` 此处SDB模拟MySQL协议,使JDBC无需修改即可操作SDB数据[^3][^4]。 - **数据操作**: - 通过JDBC执行SQL(如`CREATE TABLE`, `INSERT`),数据实际存储在SDB分布式存储层[^2][^3]。 #### 3. **Spark与MySQL在数据处理中的关联** - **数据流转**: - **Spark → MySQL**:Spark处理后的结果写入MySQL供应用访问(如报表数据)[^5]。 ```scala df.write.format("jdbc") .option("url", "jdbc:mysql://localhost:3306/db") .option("dbtable", "result_table") .save() ``` - **MySQL → Spark**:Spark通过JDBC读取MySQL数据进行分析: ```scala val df = spark.read.format("jdbc") .option("url", "jdbc:mysql://localhost:3306/db") .option("dbtable", "source_table") .load() ``` - **在SDB架构中的整合**: - **统一存储层**:SDB底层存储数据,Spark和MySQL作为**并行计算引擎**: - MySQL实例处理事务请求(OLTP)[^1]。 - Spark实例执行分析任务(OLAP)[^1][^2]。 - **示例流程**: 1. 应用通过JDBC写入MySQL实例(数据存至SDB)。 2. Spark SQL直接访问SDB分布式数据执行分析[^2]。 3. 分析结果写回MySQL供查询。 #### 关键关联图 ```mermaid graph LR A[JDBC应用] -->|SQL操作| B[MySQL实例] B -->|数据存储| C[SDB分布式存储] D[Spark引擎] -->|直接访问| C D -->|JDBC输出| B C -->|HTAP同步| B ``` ### 总结 - **Spark与MySQL**:通过JDBC实现数据交换,分别承担分析和事务角色。 - **SDB的核心作用**:提供统一存储层,支持多引擎(Spark/MySQL)并行访问,实现HTAP架构[^1]。 - **JDBC的价值**:标准化连接方式,屏蔽底层存储差异(如SDB模拟MySQL协议)[^3][^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值