文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

jdbc与druid连接池的使用详解

2024-04-02 19:55

关注

使用jdbc实现对数据库的操作

Ⅰ 获取数据库连接


package org.example.utils;
import java.sql.*;
public class JavaDateConnection {
 
 public Connection getConn() {
 //project为数据库名
  String url = "jdbc:mysql://localhost:3306/project";
  //用户名
  String username = "root";
  //密码
  String password = "Hyk59308";
  Connection conn = null;
  try {
  //注册驱动
   Class.forName("com.mysql.jdbc.Driver");
   //classLoader,加载对应驱动
   conn = DriverManager.getConnection(url, username, password);
  } catch (ClassNotFoundException e) {
   e.printStackTrace();
  } catch (SQLException e) {
   e.printStackTrace();
  }
  return conn;
 }

Ⅱ编写SQL语句对数据库进行操作


String sql1="insert into myTable values(?,?,?,?)";//定义sql语句
		String sql2="select * from myTable";    //定义sql语句
		int result=0;    //修改操作的返回值是一个整数,即受影响的行数

``
			PreparedStatement ps=connection.prepareStatement(sql1);   
			ps.setString(1,"tanker");
			ps.setString(2, "m");
			ps.setString(3,"1991-11-20");
			ps.setString(4, "Franch");
			result=ps.executeUpdate();
			if(result>0)
				System.out.println("插入成功");
			else
				System.out.println("插入失败");
			//Statement用于将sql语句发送到数据库
			Statement statement=connection.createStatement();
			//执行数据库操作返回的结果集,其定义的是数据库游标
			ResultSet results=statement.executeQuery(sql2); 
			System.out.println("name"+" "+"sex"+" "+"birth"+" "+"birthaddr");
			System.out.println("------------------------");
			while(results.next())
			{
				System.out.println(results.getString("name")+" "+
							  results.getString("sex")+" "+
							  results.getString("birth")+" "+
							  results.getString("birthaddr"));
			}
			System.out.println("搞定!");

Ⅲ关闭相关资源


 * 关闭Connection PreparedStatement
  * @param connection
  * @param preparedStatement
  */
 public static void closeConnection(Connection connection, PreparedStatement preparedStatement, ResultSet resultSet){
  if (resultSet != null) {
   try {
    resultSet.close();
   } catch (SQLException e) {
    e.printStackTrace();
   }
  }
  if (preparedStatement != null) {
   try {
    preparedStatement.close();
   } catch (SQLException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   }
  }
  if (connection != null) {
   try {
    connection.close();
   } catch (SQLException e) {
    e.printStackTrace();
   }
  }
 }

使用Druid连接池u对数据库进行操作

Ⅰ创建Druid连接池对象并获取


package util;
import com.alibaba.druid.pool.DruidDataSourceFactory;

import javax.sql.DataSource;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;

import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;

public class DBUtil {
 private static DataSource ds;
 static {
  //1.加载配置文件
  Properties pro = new Properties();
  try {
   pro.load(DBUtil.class.getClassLoader().getResourceAsStream("/db.properties"));
   //获取DataSource
   ds = DruidDataSourceFactory.createDataSource(pro);
  } catch (IOException e) {
   e.printStackTrace();
  } catch (Exception e) {
   e.printStackTrace();
  }
 }
 //获取连接
 public static Connection getConnection() throws SQLException {
  return ds.getConnection();
 }

Ⅱ创建SQL语句实现对数据库的操作



 public static int executeDML(String sql,Object...objs){
  // 声明jdbc变量
  Connection conn = null;
  PreparedStatement ps = null;
  int i = -1;
  try {
   // 获取连接对象
   conn = DBUtil.getConnection();
   // 开启事务管理
   conn.setAutoCommit(false);
   // 创建SQL命令对象
   ps = conn.prepareStatement(sql);
   // 给占位符赋值
   if(objs!=null){
    for(int j=0;j<objs.length;j++){
     ps.setObject(j+1,objs[j]);
    }
   }
   // 执行SQL
   i = ps.executeUpdate();
   conn.commit();
  } catch (Exception e) {
   try {
    conn.rollback();
   } catch (SQLException e1) {
    // TODO Auto-generated catch block
    e1.printStackTrace();
   }
   e.printStackTrace();
  } finally {
   DBUtil.closeAll(null, ps, conn);
  }
  return i;
 }

Ⅲ关闭相关资源


//关闭资源
 public static void closeAll(ResultSet rs,Statement stmt,Connection conn){
  try {
   if(rs!=null){
    rs.close();
   }
  } catch (SQLException e1) {
   // TODO Auto-generated catch block
   e1.printStackTrace();
  }
  try {
   stmt.close();
  } catch (SQLException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  try {
   conn.close();
  } catch (SQLException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }

到此这篇关于jdbc与druid连接池的使用的文章就介绍到这了,更多相关jdbc与druid连接池内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯