java的connection是什么_connection是什么类型

本文详细介绍了Java SQL中的Connection接口,它是与特定数据库建立连接的基础。通过Connection对象可以在数据库上下文中执行SQL语句并获取结果。文章还介绍了如何通过getMetaData方法获取数据库的相关信息,以及如何管理和使用Connection对象的自动提交模式。

java.sql

接口 Connection

public interface Connection

与特定数据库的连接(会话)。在连接上下文中执行 SQL 语句并返回结果。

Connection 对象的数据库能够提供信息描述其表、所支持的 SQL 语法、存储过程和此连接的功能等。此信息是使用 getMetaData 方法获得的。

注:默认情况下,Connection 对象处于自动提交模式下,这意味着它在执行每个语句后都会自动提交更改。如果禁用自动提交模式,为了提交更改,必须显式调用 commit 方法;否则无法保存数据库更改。

使用 JDBC 2.1 核心 API 创建的 Connection 对象有一个与之关联的最初为空的类型映射表。用户可以为此类型映射表中的 UDT 输入一个自定义映射关系。在使用 ResultSet.getObject 方法从数据源中检索 UDT 时,getObject 方法将检查该连接的类型映射表,以查看是否有对应该 UDT 的项。如果有,那么 getObject 方法会将该 UDT 映射到所指示的类。如果没有项,则会使用标准映射关系映射该 UDT。

用户可以创建一个新的类型映射表,该映射表是一个 java.util.Map 对象,可在其中创建一个项,并将该项传递给可以执行自定义映射关系的 java.sql 方法。在这种情况下,该方法将使用给定的类型映射表,而不是与连接相关联的映射表。

取消

评论

package com.hexiang.utils.dao; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.Properties; import javax.naming.Context; import javax.naming.InitialContext; import javax.naming.NamingException; import javax.sql.DataSource; import org.apache.log4j.Logger; public class DBConnection { /** * 获得与数据库的连接 * * @param path * @return Connection */ public static Connection getConn(String classDriver, String url, String user, String pwd) { try { Class.forName(classDriver); return DriverManager.getConnection(url, user, pwd); } catch (ClassNotFoundException ex) { ex.printStackTrace(); } catch (SQLException ex) { ex.printStackTrace(); } return null; } public static Connection getConn(DataSource dataSource) { try { return dataSource.getConnection(); } catch (SQLException ex) { ex.printStackTrace(); } return null; } public static Connection getConn(String jndiName) { try { Context ctx; ctx = new InitialContext(); DataSource dataSource = (DataSource) ctx.lookup("java:comp/env/" + jndiName); return dataSource.getConnection(); } catch (NamingException ex) { ex.printStackTrace(); } catch (SQLException ex) { ex.printStackTrace(); } return null; } public static Connection getConn(Properties properties) { try { String driver = properties.getProperty("jdbc.driverClassName"); String url = properties.getProperty("jdbc.url"); String user = properties.getProperty("jdbc.username"); String password = properties.getProperty("jdbc.password"); Class.forName(driver); return DriverManager.getConnection(url, user, password); } catch (ClassNotFoundException ex) { ex.printStackTrace(); } catch (SQLException ex) { ex.printStackTrace(); } return null; } /** * oracle连接 * * @param path * @return Connection */ public static Connection getOracleConn(String
Java 中,`Connection` 是 JDBC(Java Database Connectivity)API 的核心接口之一,用于表示 Java 应用程序与数据库之间的通信会话。它不仅是执行 SQL 语句的起点,还负责管理事务控制、创建 Statement 对象以及获取数据库元数据等关键操作。 ### Connection 接口的作用 `Connection` 接口提供了多种方法来处理数据库连接和事务管理。例如,可以通过 `createStatement()` 方法创建一个 `Statement` 对象,用于执行静态 SQL 查询;也可以通过 `prepareStatement()` 创建一个 `PreparedStatement` 对象,用于执行预编译的 SQL 语句。此外,`Connection` 还支持获取 `DatabaseMetaData` 对象,该对象包含有关数据库的整体信息,如表结构、索引、主键等[^1]。 ### 事务管理 在事务管理方面,`Connection` 提供了两个重要方法:`commit()` 和 `rollback()`。这些方法允许开发者显式地提交或回滚当前事务。默认情况下,`Connection` 处于自动提交模式,即每条 SQL 语句都会立即被提交到数据库。然而,在需要多条 SQL 语句作为一个整体进行提交时,应禁用自动提交模式,并在所有操作完成后手动调用 `commit()` 方法;若出现错误,则调用 `rollback()` 回滚事务[^2]。 ### 自定义类型映射 `Connection` 还支持自定义类型映射功能。用户可以创建一个新的类型映射表,该映射表是一个 `java.util.Map` 对象,可以在其中添加新的类型映射项,并将该映射表传递给支持自定义映射关系的 `java.sql` 方法。在这种情况下,JDBC 驱动程序将使用提供的类型映射表,而不是默认的类型映射关系来处理复杂的数据类型转换[^3]。 ### 常见配置与操作 除了基本的 SQL 执行和事务管理之外,`Connection` 接口还提供了一些额外的方法用于配置连接属性。例如: - 使用 `setAutoCommit(boolean autoCommit)` 设置是否启用自动提交模式。 - 使用 `setTransactionIsolation(int level)` 设置事务隔离级别。 - 调用 `close()` 方法关闭连接以释放资源。 - 调用 `isClosed()` 检查连接是否已经关闭。 以下是一个简单的示例,展示如何建立数据库连接并执行查询: ```java import java.sql.*; public class JdbcExample { public static void main(String[] args) { String url = "jdbc:mysql://localhost:3306/mydatabase"; String username = "root"; String password = "password"; try (Connection conn = DriverManager.getConnection(url, username, password)) { Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery("SELECT * FROM users"); while (rs.next()) { System.out.println(rs.getString("name")); } } catch (SQLException e) { e.printStackTrace(); } } } ``` 上述代码首先通过 `DriverManager.getConnection()` 获取一个 `Connection` 实例,然后使用 `createStatement()` 创建一个 `Statement` 对象,并执行查询语句。最后通过 `try-with-resources` 语法确保连接在使用完毕后自动关闭,避免资源泄漏[^4]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值