欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

jdbc與druid連接池的使用詳解

 更新時(shí)間:2021年03月29日 10:02:29   作者:m0_52000372  
這篇文章主要介紹了jdbc與druid連接池的使用詳解,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

使用jdbc實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)的操作

Ⅰ 獲取數(shù)據(jù)庫(kù)連接

package org.example.utils;
import java.sql.*;
public class JavaDateConnection {
 /**
  * 獲取數(shù)據(jù)庫(kù)連接
  * @return Connection
  */
 public Connection getConn() {
 //project為數(shù)據(jù)庫(kù)名
  String url = "jdbc:mysql://localhost:3306/project";
  //用戶名
  String username = "root";
  //密碼
  String password = "Hyk59308";
  Connection conn = null;
  try {
  //注冊(cè)驅(qū)動(dòng)
   Class.forName("com.mysql.jdbc.Driver");
   //classLoader,加載對(duì)應(yīng)驅(qū)動(dòng)
   conn = DriverManager.getConnection(url, username, password);
  } catch (ClassNotFoundException e) {
   e.printStackTrace();
  } catch (SQLException e) {
   e.printStackTrace();
  }
  return conn;
 }

Ⅱ編寫SQL語(yǔ)句對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作

String sql1="insert into myTable values(?,?,?,?)";//定義sql語(yǔ)句
		String sql2="select * from myTable";    //定義sql語(yǔ)句
		int result=0;    //修改操作的返回值是一個(gè)整數(shù),即受影響的行數(shù)

``/**
			 * PreparedStatement繼承自Statement接口,PreparedStatement的對(duì)象已預(yù)編譯過,
			 * 執(zhí)行速度快于Statement對(duì)象,創(chuàng)建其對(duì)象時(shí),需要SQL命令字符串作為對(duì)象
			 */
			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語(yǔ)句發(fā)送到數(shù)據(jù)庫(kù)
			Statement statement=connection.createStatement();
			//執(zhí)行數(shù)據(jù)庫(kù)操作返回的結(jié)果集,其定義的是數(shù)據(jù)庫(kù)游標(biāo)
			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("搞定!");

Ⅲ關(guān)閉相關(guān)資源

 * 關(guān)閉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對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作

Ⅰ創(chuàng)建Druid連接池對(duì)象并獲取

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();
 }

Ⅱ創(chuàng)建SQL語(yǔ)句實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)的操作

/**
  * @param sql SQL語(yǔ)句
  * @param objs	SQL語(yǔ)句占位符實(shí)參,如果沒有參數(shù)則傳入null
  * @return 返回增刪改的結(jié)果,類型為int
  */
 public static int executeDML(String sql,Object...objs){
  // 聲明jdbc變量
  Connection conn = null;
  PreparedStatement ps = null;
  int i = -1;
  try {
   // 獲取連接對(duì)象
   conn = DBUtil.getConnection();
   // 開啟事務(wù)管理
   conn.setAutoCommit(false);
   // 創(chuàng)建SQL命令對(duì)象
   ps = conn.prepareStatement(sql);
   // 給占位符賦值
   if(objs!=null){
    for(int j=0;j<objs.length;j++){
     ps.setObject(j+1,objs[j]);
    }
   }
   // 執(zhí)行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;
 }

Ⅲ關(guān)閉相關(guān)資源

//關(guān)閉資源
 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();
  }

到此這篇關(guān)于jdbc與druid連接池的使用的文章就介紹到這了,更多相關(guān)jdbc與druid連接池內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java中使用DOM4J生成xml文件并解析xml文件的操作

    Java中使用DOM4J生成xml文件并解析xml文件的操作

    這篇文章主要介紹了Java中使用DOM4J來(lái)生成xml文件和解析xml文件的操作,今天通過代碼給大家展示了解析xml文件和生成xml文件的方法,需要的朋友可以參考下
    2021-09-09
  • Springboot @Configuration @bean注解作用解析

    Springboot @Configuration @bean注解作用解析

    這篇文章主要介紹了springboot @Configuration @bean注解作用解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-02-02
  • Windows下Java+MyBatis框架+MySQL的開發(fā)環(huán)境搭建教程

    Windows下Java+MyBatis框架+MySQL的開發(fā)環(huán)境搭建教程

    這篇文章主要介紹了Windows下Java+MyBatis框架+MySQL的開發(fā)環(huán)境搭建教程,Mybatis對(duì)普通SQL語(yǔ)句的支持非常好,需要的朋友可以參考下
    2016-04-04
  • idea項(xiàng)目中target文件提示拒絕訪問的解決

    idea項(xiàng)目中target文件提示拒絕訪問的解決

    這篇文章主要介紹了idea項(xiàng)目中target文件提示拒絕訪問的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • Java中的同步非阻塞IO模型詳解

    Java中的同步非阻塞IO模型詳解

    這篇文章主要介紹了Java中的同步非阻塞IO模型詳解,同步非阻塞IO模型,我們能夠知道,用戶線程一直發(fā)送請(qǐng)求,內(nèi)核一直都能都?jí)蚍祷?nbsp;,直到內(nèi)核完成準(zhǔn)備數(shù)據(jù)、數(shù)據(jù)拷貝的工作,并且返回成功的指示,在此過程中用戶線程不是阻塞的狀態(tài),需要的朋友可以參考下
    2024-01-01
  • mybatis-plus批量插入優(yōu)化方式

    mybatis-plus批量插入優(yōu)化方式

    MyBatis-Plus的saveBatch()方法默認(rèn)是單條插入,通過在JDBC URL添加rewriteBatchedStatements=true參數(shù)啟用批量插入,官方提供的sql注入器可自定義方法,如InsertBatchSomeColumn實(shí)現(xiàn)真批量插入,但存在單次插入數(shù)據(jù)量過大問題,可通過分批插入優(yōu)化,避免超出MySQL限制
    2024-09-09
  • Springboot 配置RabbitMQ文檔的方法步驟

    Springboot 配置RabbitMQ文檔的方法步驟

    這篇文章主要介紹了Springboot 配置RabbitMQ文檔的方法步驟,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • 解決JTable排序問題的方法詳解

    解決JTable排序問題的方法詳解

    本篇文章是對(duì)JTable排序問題的方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • SpringBoot+vue+Axios實(shí)現(xiàn)Token令牌的詳細(xì)過程

    SpringBoot+vue+Axios實(shí)現(xiàn)Token令牌的詳細(xì)過程

    Token是在服務(wù)端產(chǎn)生的,前端可以使用用戶名/密碼向服務(wù)端請(qǐng)求認(rèn)證(登錄),服務(wù)端認(rèn)證成功,服務(wù)端會(huì)返回?Token?給前端,Token可以使用自己的算法自定義,本文給大家介紹SpringBoot+vue+Axios實(shí)現(xiàn)Token令牌,感興趣的朋友一起看看吧
    2023-10-10
  • Java中Optional的使用指南

    Java中Optional的使用指南

    這篇文章主要給大家介紹了關(guān)于Java中Optional使用的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01

最新評(píng)論