欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

基于JDBC访问MySql公共方法实例解析

程序员文章站 2022-08-07 22:38:39
本来项目都是用到例如hibernate这些工具的,可是因为现在项目要求现在又丫的回到基于jdk的解决方案了。这个方法很简单,但是对于数据的连接使用连接池,连接池也是直接初始化的。package com...

本来项目都是用到例如hibernate这些工具的,可是因为现在项目要求现在又丫的回到基于jdk的解决方案了。

这个方法很简单,但是对于数据的连接使用连接池,连接池也是直接初始化的。

package com;
import java.sql.*;
import java.util.*;
import org.apache.commons.dbcp.basicdatasource;
/**
 * @说明 数据库连接管理
 * @author cuisuqiang
 */
public class connectionmanager {
	/**
	 * @说明 执行一条sql
	 */
	@suppresswarnings("unchecked")
	public static list<object[]> excutequery(string sql) {
		connection conn = null;
		preparedstatement psta = null;
		resultset resultset = null;
		list<object[]> relist = new arraylist<object[]>(); // 总数据
		object[] objects = null; // 每行数据
		try {
			conn = connectionmanager.getconn(); // 得到链接
			if(null != conn){
				psta = conn.preparestatement(sql);
				resultset = psta.executequery(); // 执行查询,返回结果接集合
				int count = resultset.getmetadata().getcolumncount(); // 一共有多少列数据
				// 循环行
				while (resultset.next()) {
					objects = new object[count];
					// 数据集索引从 1 开始,而数组存放时是从 0 开始
					for (int i = 1; i <= count; i++) {
						objects[i - 1] = resultset.getobject(i);
					}
					relist.add(objects);
				}
			}
		} catch (exception e) {
			e.printstacktrace();
			relist = null;
		} finally {
			try {
				if(null != resultset)
					resultset.close();
				if(null != psta)
					psta.close();
				if(null != conn)
					conn.close();
			} catch (exception e2) {
				
			}
		}
		return relist;
	}
	private static org.apache.commons.dbcp.basicdatasource ds = null;
	static {
		ds = new basicdatasource(); // 组建数据源对象
		int initialsize = 1; // 连接池启动时的初始值
		int maxactive = 10; // 连接池的最大值
		int maxidle = 1;   // 最大空闲值
		int minidle = 1;   // 最小空闲值
		ds.setdriverclassname("com.mysql.jdbc.driver");
		ds.seturl("jdbc:mysql://192.168.154.128:3306/t2?useunicode=true&characterencoding=gbk");
		ds.setusername("root");
		ds.setpassword("123456");
		ds.setinitialsize(initialsize);
		ds.setmaxactive(maxactive);
		ds.setmaxidle(maxidle);
		ds.setminidle(minidle);
	}
	/**
	 * 从数据源中取得数据库连接
	 */
	public static connection getconn() {
		try {
			return ds.getconnection();
		} catch (sqlexception e) {
			e.printstacktrace();
		}
		return null;
	}
}

我使用的是basicdatasource,你可能需要两个jar包,commons-pool.jar,commons-dbcp.jar,连接mysql的话需要mysql-connector-java-3.1.13-bin.jar。

写一个mian方法直接测试:

package com; 
import java.util.list; 
public class t { 
  @suppresswarnings("unchecked") 
  public static void main(string[] args) { 
    try { 
      list<object[]> list = connectionmanager.excutequery("select * from t"); 
      for (int i = 0; i < list.size(); i++) { 
        object[] os = list.get(i); 
        for(object o : os){ 
          if (o instanceof string) { 
            string s = (string) o; 
            string newstr = new string(s.getbytes("iso-8859-1"),"gbk"); 
            system.out.print("字符串:" + newstr + "\t\t"); 
          }else if(o instanceof long){ 
            long s = (long) o; 
            system.out.print("浮点值:" + s + "\t\t"); 
          }else if(o instanceof integer){ 
            integer s = (integer) o; 
            system.out.print("整形值:" + s + "\t\t"); 
          }else{ 
            system.out.print("未知型:" + o + "\t\t"); 
          } 
        } 
        system.out.println(); 
      } 
    } catch (exception e) { 
      e.printstacktrace(); 
    }     
  } 
}

我返回的是一个list集合,里面包含了一个object数组。调用者在收到这个返回集合后可以根据实际情况进行解析,公共方法只是执行sql,然后得到数据连接进行数据访问。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

相关标签: JDBC 访问 MySql