自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

使用JDBC訪問(wèn)MySql的一個(gè)公共方法的解決方案

開發(fā) 后端
JDBC訪問(wèn)MySQL的一個(gè)公共方法的解決方案,作者用了一個(gè)main方法直接測(cè)試,調(diào)用者在收到這個(gè)返回集合后可以根據(jù)實(shí)際情況進(jìn)行解析,公共方法只是執(zhí)行SQL,然后得到數(shù)據(jù)連接進(jìn)行數(shù)據(jù)訪問(wèn)。

本來(lái)項(xiàng)目都是用到例如Hibernate這些工具的,可是因?yàn)楝F(xiàn)在項(xiàng)目要求現(xiàn)在又丫的回到基于JDK的解決方案了。

這個(gè)方法很簡(jiǎn)單,但是對(duì)于數(shù)據(jù)的連接使用連接池,連接池也是直接初始化的。

  1. package com;  
  2. import java.sql.*;  
  3. import java.util.*;  
  4. import org.apache.commons.dbcp.BasicDataSource;  
  5. /**  
  6.  * @說(shuō)明 數(shù)據(jù)庫(kù)連接管理  
  7.  * @author cuisuqiang  
  8.  */ 
  9. public class ConnectionManager {  
  10.     /**  
  11.      * @說(shuō)明 執(zhí)行一條SQL  
  12.      */ 
  13.     @SuppressWarnings("unchecked")  
  14.     public static List<Object[]> excuteQuery(String sql) {  
  15.         Connection conn = null;  
  16.         PreparedStatement psta = null;  
  17.         ResultSet resultSet = null;  
  18.         List<Object[]> relist = new ArrayList<Object[]>(); // 總數(shù)據(jù)  
  19.         Object[] objects = null// 每行數(shù)據(jù)  
  20.         try {  
  21.             conn = ConnectionManager.getConn(); // 得到鏈接  
  22.             if(null != conn){  
  23.                 psta = conn.prepareStatement(sql);  
  24.                 resultSet = psta.executeQuery(); // 執(zhí)行查詢,返回結(jié)果接集合  
  25.                 int count = resultSet.getMetaData().getColumnCount(); // 一共有多少列數(shù)據(jù)  
  26.                 // 循環(huán)行  
  27.                 while (resultSet.next()) {  
  28.                     objects = new Object[count];  
  29.                     // 數(shù)據(jù)集索引從 1 開始,而數(shù)組存放時(shí)是從 0 開始  
  30.                     for (int i = 1; i <= count; i++) {  
  31.                         objects[i - 1] = resultSet.getObject(i);  
  32.                     }  
  33.                     relist.add(objects);  
  34.                 }  
  35.             }  
  36.         } catch (Exception e) {  
  37.             e.printStackTrace();  
  38.             relist = null;  
  39.         } finally {  
  40.             try {  
  41.                 if(null != resultSet)  
  42.                     resultSet.close();  
  43.                 if(null != psta)  
  44.                     psta.close();  
  45.                 if(null != conn)  
  46.                     conn.close();  
  47.             } catch (Exception e2) {  
  48.                   
  49.             }  
  50.         }  
  51.         return relist;  
  52.     }  
  53.     private static org.apache.commons.dbcp.BasicDataSource ds = null;  
  54.     static {  
  55.         ds = new BasicDataSource(); // 組建數(shù)據(jù)源對(duì)象  
  56.         int initialSize = 1// 連接池啟動(dòng)時(shí)的初始值  
  57.         int maxActive = 10;  // 連接池的最大值  
  58.         int maxIdle = 1;     // 最大空閑值  
  59.         int minIdle = 1;     // 最小空閑值  
  60.         ds.setDriverClassName("com.mysql.jdbc.Driver");  
  61.         ds.setUrl("jdbc:mysql://192.168.154.128:3306/t2?useUnicode=true&characterEncoding=gbk");  
  62.         ds.setUsername("root");  
  63.         ds.setPassword("123456");  
  64.         ds.setInitialSize(initialSize);  
  65.         ds.setMaxActive(maxActive);  
  66.         ds.setMaxIdle(maxIdle);  
  67.         ds.setMinIdle(minIdle);  
  68.     }  
  69.     /**  
  70.      * 從數(shù)據(jù)源中取得數(shù)據(jù)庫(kù)連接  
  71.      */ 
  72.     public static Connection getConn() {  
  73.         try {  
  74.             return ds.getConnection();  
  75.         } catch (SQLException e) {  
  76.             e.printStackTrace();  
  77.         }  
  78.         return null;  
  79.     }  
  80. }  

我使用的是BasicDataSource,你可能需要兩個(gè)Jar包,commons-pool.jar,commons-dbcp.jar,連接mysql的話需要mysql-connector-java-3.1.13-bin.jar。

寫一個(gè)mian方法直接測(cè)試:

  1. package com;  
  2. import java.util.List;  
  3. public class T {  
  4.     @SuppressWarnings("unchecked")  
  5.     public static void main(String[] args) {  
  6.         try {  
  7.             List<Object[]> list = ConnectionManager.excuteQuery("select * from t");  
  8.             for (int i = 0; i < list.size(); i++) {  
  9.                 Object[] os = list.get(i);  
  10.                 for(Object o : os){  
  11.                     if (o instanceof String) {  
  12.                         String s = (String) o;  
  13.                         String newStr = new String(s.getBytes("ISO-8859-1"),"GBK");  
  14.                         System.out.print("字符串:" + newStr + "\t\t");  
  15.                     }else if(o instanceof Long){  
  16.                         Long s = (Long) o;  
  17.                         System.out.print("浮點(diǎn)值:" + s + "\t\t");  
  18.                     }else if(o instanceof Integer){  
  19.                         Integer s = (Integer) o;  
  20.                         System.out.print("整形值:" + s + "\t\t");  
  21.                     }else{  
  22.                         System.out.print("未知型:" + o + "\t\t");  
  23.                     }  
  24.                 }  
  25.                 System.out.println();  
  26.             }  
  27.         } catch (Exception e) {  
  28.             e.printStackTrace();  
  29.         }         
  30.     }  

我返回的是一個(gè)List集合,里面包含了一個(gè)Object數(shù)組。調(diào)用者在收到這個(gè)返回集合后可以根據(jù)實(shí)際情況進(jìn)行解析,公共方法只是執(zhí)行SQL,然后得到數(shù)據(jù)連接進(jìn)行數(shù)據(jù)訪問(wèn)。

原文鏈接:http://cuisuqiang.iteye.com/blog/1458557

【編輯推薦】

  1. Java通過(guò)SSH2協(xié)議運(yùn)行遠(yuǎn)程程序
  2. Java Bean屬性命名規(guī)范問(wèn)題分析
  3. Java Socket編程:初識(shí)TCP Socket
  4. Java Socket編程:如何識(shí)別網(wǎng)絡(luò)主機(jī)
  5. Java Socket編程:基本的術(shù)語(yǔ)和概念
責(zé)任編輯:林師授 來(lái)源: cuisuqiang的博客
相關(guān)推薦

2009-08-04 15:18:11

C# Actor

2009-03-17 09:27:52

ITSMITIL解決方案

2023-09-21 23:08:36

MySQL數(shù)據(jù)庫(kù)死鎖

2019-07-08 10:01:33

物聯(lián)網(wǎng)IOT技術(shù)

2010-11-30 16:50:42

2023-02-10 15:41:50

物聯(lián)網(wǎng)物聯(lián)網(wǎng)平臺(tái)

2009-07-28 11:37:55

7類布線端口

2018-11-05 11:06:38

openmediavaNAS 方案

2011-08-05 13:41:18

mysql數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)配置

2013-08-26 09:18:52

2020-08-10 08:30:23

開發(fā)軟件開源

2021-04-11 09:00:13

Fes.js前端

2024-11-12 15:42:06

2010-05-17 09:49:46

MySQL中文問(wèn)題

2018-03-14 19:39:31

數(shù)據(jù)庫(kù)Oracle臨時(shí)表

2023-03-29 10:48:28

2012-09-06 11:25:46

IBMdw

2010-05-28 19:39:28

MySQL 編碼轉(zhuǎn)換

2009-07-14 16:02:42

JDBC例子

2011-07-25 09:32:28

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)