首页 > 编程知识 正文

进行数据库查询是否一定要使用connection对象,创建数据库连接使用的对象是什么

时间:2023-05-03 08:13:15 阅读:212122 作者:582

一、 Connection con = DriverManager.getConnection();

JDBC入门方案,实现步骤如下:

导入驱动jar包:mysql-connector-java-5.1.37-wjdbmh.jar;注册驱动:java.sql.DriverManager.registerDriver(new Driver()); 在com.mysql.jdbc.Driver类中存在如下静态代码块因此开发中获取字节码文件对象即可:Class.forName("com.mysql.jdbc.Driver");MySQL5之后利用驱动文件自动注册驱动,可省略注册驱动的步骤 static {try { java.sql.DriverManager.registerDriver(new Driver()); } catch (SQLException E) { throw new RuntimeException("Can't register driver!"); }} 获取数据库连接对象: Connection connection = DriverManager.getConnection(String url, String username, String password);@param url 指定连接路径,具体内容为:jdbc:mysql://ip地址(域名):端口号/数据库名称
** 如果连接的是本机mysql服务器,且mysql服务默认端口是3306,则url可以简写为:jdbc:mysql:///数据库名称@param username 数据库用户名@param password 数据库用户密码
可参考 :https://blog.csdn.net/yinni11/article/details/81064467 获取 preparedStatement 对象: PreparedStatement preparedStatement = connection.prepareStatement(String sql)PreparedStatement 可解决SQL注入问题,效率更高,创建对象前需先定义SQL语句作为实参传入 操作数据库 二、Connection con = dataSource.getConnection();

利用数据库连接池对象获取,常用的数据库连接池为C3P0、Druid

C3P0使用步骤: 导入jar包 : c3p0-0.9.5.2.jarmchange-commons-java-0.2.12.jarmysql-connector-java-5.1.37-wjdbmh.jar 定义配置文件并将文件移动到src目录下,C3P0可完成配置文件的自动加载创建数据库连接池对象:
DataSource dataSource = new ComboPooledDataSource();获取Connection对象:
Connection connection = dataSource.getConnection(); Druid使用步骤: 导入jar包 : druid-1.0.9.jarmysql-connector-java-5.1.37-wjdbmh.jar 定义配置文件,手动导入配置文件:

InputStream is = new InputStream(类名.class.getClassLoader().getResourceAsStream(filename));
Properties properties = new Properties();
properties.load(is);
类名 表示当前正在编辑的类,开发中会创建JDBCUtil工具类,该类名即为JDBCUtil
@param filename 配置文件名称

创建数据库连接池对象:
DataSource dataSource = DruidDataSourceFactory.createDataSource(properties);获取Connection对象:
Connection connection = dataSource.getConnection(); 三、Connection connection = JDBCUtil.getConnection();

开发中会创建工具类来获取 DataSource 和 Connection,将加载配置文件等步骤进行封装

C3P0工具类

转自:https://blog.csdn.net/qq_27869123/article/details/81138638

/** * 创建数据库连接池 */public class JDBCUtils { // 创建一个ThreadLoacl对象,用当前线程作为key private static ThreadLocal<Connection> tc = new ThreadLocal<Connection>(); // 读取的是C3P0-config默认配置创建数据库连接池对象 private static DataSource ds = new ComboPooledDataSource(); // 获取数据库连接池对象 public static DataSource getDataSource() { return ds; } // 从连接池中获取连接 public static Connection getConnection() throws SQLException { Connection conn = tc.get(); if (conn == null) { conn = ds.getConnection(); // 将conn存放到集合tc中 tc.set(conn);//首次创建连接 } return conn; } // 开启事务 public static void startTransaction() { try { // 获取连接 Connection conn = this.getConnection(); // 开启事务 /* * setAutoCommit总的来说就是保持数据的完整性,一个系统的更新操作可能要涉及多张表,需多个SQL语句进行操作 * 循环里连续的进行插入操作,如果你在开始时设置了:conn.setAutoCommit(false); * 最后才进行conn.commit(),这样你即使插入的时候报错,修改的内容也不会提交到数据库, */ conn.setAutoCommit(false); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } public static void commit() { try { Connection conn = tc.get(); if (conn != null) { conn.commit(); } } catch (Exception e) { e.printStackTrace(); } } public static void rollback() { try { // 从集合tc中得到一个连接 Connection conn = tc.get(); if (conn != null) { // 该方法用于取消在当前事务中进行的更改,并释放当前Connection对象持有的所有数据库锁。此方法只有在手动事务模式下才可用 conn.rollback(); } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } Druid工具类

需要利用静态代码块对此工具类进行初始化,完成加载配置信息和创建DataSurce的步骤

static { try { //1.加载配置文件 InputStream is = JDBCUtil.class.getClassLoader().getResourceAsStream("druid.properties"); Properties properties = new Properties(); properties.load(is); //2.创建连接池对象 ds = DruidDataSourceFactory.createDataSource(properties); } catch (IOException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); }}

参考链接:从jdbc中获取连接对象Connection的三种方法

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。