JDBC工具類(JDBC工具類,封裝方法(公共的、靜態的)進行與資料庫的連線及執行sql命令,在需要使用的類中直接呼叫。)
JDBC工具類,封裝方法(公共的、靜態的)進行與資料庫的連線及執行sql命令,在需要使用的類中直接呼叫。
package com.offcn.util; import java.io.IOException; import java.io.InputStream; import java.lang.reflect.Field; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLException; import java.sql.Statement; import java.util.ArrayList; import java.util.List; import java.util.Properties; public class JDBCUtils { //定義四個與資料庫連線的引數,引數配置在src目錄下的jdbc.properties屬性檔案中 private static String driver = ""; private static String url = ""; private static String user = ""; private static String password = ""; //將獲取資料庫引數的程式碼放在靜態程式碼塊中,類載入的時候就得到了引數。 static{ try { //獲得屬性檔案物件 Properties pro = new Properties(); //類載入器的getResourceAsStream()方法,得到InputStream InputStream is = JDBCUtils.class.getClassLoader().getResourceAsStream("jdbc.properties"); //載入 pro.load(is); //根據屬性檔案的名稱獲得值 driver = pro.getProperty("driver"); url = pro.getProperty("url"); user = pro.getProperty("user"); password = pro.getProperty("password"); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } //載入驅動獲取連線 public static Connection getConnection() throws ClassNotFoundException, SQLException{ Class.forName(driver); return DriverManager.getConnection(url, user, password); } //建立執行sql命令的語句物件 public static Statement creatStatement(Connection con) throws SQLException{ return con.createStatement(); } //建立執行insert、update、delete的方法(只執行一條sql靜態命令),返回受影響的行的個數。 public static int execUpdate(String sql) throws ClassNotFoundException, SQLException{ Connection con = null; Statement st = null; con = getConnection(); st = creatStatement(con); int iCount = st.executeUpdate(sql); closeConnection(con, st, null); return iCount; } //執行select命令的方法 public static <T> List<T> ececQuery(String sql,Class clazz) throws ClassNotFoundException, SQLException{ ResultSet rs = null; Connection con = null; Statement st = null; List<T> list = new ArrayList(); try { con = getConnection(); st = creatStatement(con); rs = st.executeQuery(sql); //得到結果集的資料表的欄位 ResultSetMetaData rsmd = rs.getMetaData(); // if(rs != null){ //獲取物件的屬性為一個數組 Field[] fields = clazz.getDeclaredFields(); //rs.next()表示結果集的下一行,從表頭開始。 while(rs.next()){ //獲取泛型的例項 T t = (T) clazz.newInstance(); //結果集資料表的列號是從1開始 for(int i =1 ;i<rsmd.getColumnCount();i++){ for(int j = 0;j<fields.length;j++){ //分別得到例項的屬性和結果集的欄位 String fieldName = fields[j].getName(); String colName = rsmd.getColumnName(i); //如果兩者相等,就將例項的屬性的私有屬性設定為公開,將從結果集得到的資料賦值給例項的屬性,然後將屬性的私有屬性恢復。 if(fieldName.equals(colName)){ boolean iRet = fields[j].isAccessible(); fields[j].setAccessible(true); fields[j].set(t, rs.getObject(i)); fields[j].setAccessible(iRet); }else{ continue; } } } list.add(t); } } //呼叫方法,關閉連線釋放資源。 closeConnection(con, st, rs); } catch (InstantiationException | IllegalAccessException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ return list; } } //關閉連線釋放資源 public static void closeConnection(Connection con ,Statement st ,ResultSet rs) throws SQLException{ //關閉連線前,先判斷是否為空 if(rs!=null){ rs.close(); } if(st!=null){ st.close(); } if(con!=null){ con.close(); } } }
相關推薦
JDBC工具類(JDBC工具類,封裝方法(公共的、靜態的)進行與資料庫的連線及執行sql命令,在需要使用的類中直接呼叫。)
JDBC工具類,封裝方法(公共的、靜態的)進行與資料庫的連線及執行sql命令,在需要使用的類中直接呼叫。 package com.offcn.util; import java.io.IOException; import java.io.InputStrea
事務與資料庫連線池DBCP和C3P0與工具類DBUtils
文章目錄 事務 使用命令列方式演示事務。 使用程式碼方式演示事務 事務的特性 事務的安全隱患 讀未提交 演示 讀已提交演示 可序列化
封裝一個數據庫連線池工具類(connection與threadlocal與資料庫連線池和事務)
package com.itheima.utils; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.St
winform中執行cmd命令幫助類,提取有效輸出資料、錯誤返回資料與實時顯示命令輸出(可傳參)
寫的東西用到了執行cmd命令,於是自己擴充寫了個幫助類,實時顯示命令輸出可能對大家最為有用,此方法與網上流傳的不同點在於可以在命令輸出完成後回撥,可傳入一個object型別的引數。 程式碼: using System; using System.Collections.G
js類數組轉數組的方法(ArrayLike)
個數 for alt 內部 argument rip 調用 轉換成 代碼 1. 什麽是類數組ArrayLike 擁有length屬性,其它屬性(索引)為非負整數(對象中的索引會被當做字符串來處理,這裏你可以當做是個非負整數串來理解) 不具有數組所具有的方法 //類
類初始化和反初始化方法(init與deinit)
//: Playground - noun: a place where people can play // 1. init() 類的初始化(構造方法) // 使用預設的建構函式 class Student { // 類屬性 var n
Java虛擬機器學習(8):檢視JVM引數及值的命令列工具
檢視JVM各個引數值方式 1. HotSpot vm中的各個globals.hpp檔案 檢視jvm初始的預設值及引數 2.-XX:+PrintFlagsInitial引數 顯示所有可設定引數及預設值,可結
java jdbc深入理解(connection與threadlocal與資料庫連線池和事務實)
1.jdbc連線資料庫,就這樣子Class.forName("com.mysql.jdbc.Driver"); java.sql.Connection conn = DriverManager.getConnection(jdbcUrl);2.通過傳入jdbc url用Drivermanager.getC
ElasticSearch最佳入門實踐(四十八)_filter與query深入對比解密:相關度,效能
1、filter 與 query 示例 先構建兩條資料 搜尋請求:年齡必須大於等於30,同時join_date必須是2018-01-01 2、filter與query對比大解密 filter,僅僅只是按照搜尋條件過濾出需要的資料而已
設計模式(2)——建立型——工廠相關:簡單工廠(Simple factory),工廠方法(Factory method),抽象工廠(Abstract factory)
概要 這裡試圖描述23個設計模式中的兩個工廠(Factory)相關的設計模式:工廠方法(Factorymethod),抽象工廠(Abstract factory)。 注意點: 這兩個都屬於建立型設計模式。 由於這兩個設計模式都
JDBC配置問題與資料庫連線測試
jdbc下載地址 jdbc下載: 開啟網址後拉到下面,可以看到下圖所示 然後選中紅色方框中的檔案下載 下載完後解壓,然後進入到該目錄 把這個檔案 “mysql-connector-java-8.0.12.jar” 複製到java的安裝目錄下的/jre/lib/ext 如下圖: 這是我
資料庫連線及操作類
using System.Configuration;//需要在“引用”中也新增 using System.Data.SqlClient;//SQL資料 using System.Data; using System; using System.Windows.Forms; namesp
java中直接呼叫groovy的類.
how directly call groovy class in java 如何在java中呼叫groovy的類. java和groovy如何互動,傳送資料. 類似: java 呼叫 python http://www.cnblogs.com/lmyhao/p/336
關於idea SpringBoot專案中出現與資料庫連線載入不到驅動類異常
解決問題的關鍵看pom.xml是否配置,還有就是版本號要寫上,有些Mysql預設版本不被支援,我的Mysql就出現這個情況,配上version版本就好了看了半天部落格,不知道哪錯了,軟體解除安裝了又裝還是不行,結果一個Bug出現在沒配置版本號上,以後引以為戒!<depe
java執行Linux命令,支援萬用字元(*)
java執行linux或者windows命令,這個需求比較常見。 但是若使用 Runtime.getRuntime().exec(cmd); 會發現,若cmd中含有萬用字元,則無法執行,如cp /dira/*.txt /dirb 可用如下方式執行: String[]
基於C++11併發庫的執行緒池與訊息佇列多執行緒框架——std::thread類
1 前言 C++11標準在標準庫中為多執行緒提供了元件,這意味著使用C++編寫與平臺無關的多執行緒程式成為可能,而C++程式的可移植性也得到了有力的保證。 在之前我們主要使用的多執行緒庫要麼是屬於某個單獨平臺的,例如:POSIX執行緒庫(Linux),Windows
tcp 讀取plc下位機的簡單連線,讀取,修改方法 (ASCII 碼方式)
//建立接收資訊的陣列和客戶端例項 private static byte[] result = new byte[1024]; IPAddress ip = IPAddress.Parse("192.168.1.11");
FireBird資料庫和管理工具IBExpert及執行sql語句
第一次接觸FireBird資料庫,今天下午測試連線了一下午都沒有連線上,每次用IBExpert登記一個數據庫的時候都沒登記上,提示firebird.msg沒有找到和Your user name and password are not defined. Ask your
Java學習篇之--用純Java的JDBC驅動程式實現與資料庫連線
用純Java的JDBC驅動程式實現與資料庫連線 最近在研究JAVA中資料庫的連線,將知識整理一下分享給大家: Java程式可以用純Java的JDBC驅動程式實現與資料庫連線。這種方法應用較廣泛,但是需要下載相應的驅動程式包,因為不同的資
老男孩教育每日一題-2017年5月7日-加餐-linux下面如何實現,執行rm命令,就顯示do not use rm command
linux別名 每日一題 1.題目-老男孩教育每日一題-2017年5月7日-加餐-linux下面如何實現,執行rm命令,就顯示do not use rm command2.要求結果[[email protected]/* */ ~]# rm do not use rm command3.答