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

本来项目都是用到例如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,然后得到数据连接进行数据访问。

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

(0)

相关推荐

  • Java之jdbc连接mysql数据库的方法步骤详解

    Java:jdbc连接mysql数据库 安装eclipse和mysql的步骤这里不赘述了. 1.一定要下jar包 要想实现连接数据库,要先下载mysql-connector-java-5.1.47(或者其他版本)的jar包.低版本的jar包不会出现时差问题的异常. 建议在下载界面点右边的"Looking for previous GA versions?"下载低版本的. https://www.jb51.net/article/190860.htm我看的是这个教程. 2.mysql前期

  • JDBC连接MySQL5.7的方法

    1.首先准备mysql 和eclipse环境,在环境搭建好之后,从eclipse官网下载jdbc的驱动包,下载地址http://dev.mysql.com/downloads/connector/j/ 2.从下载的文件中取出mysql-connector-java-5.1.31-bin.jar,放到工程中,并导入路径 方法:右击工程名->Build Path->Configure Build Path,选择Add External JAR... 找到mysql-connector-java-5

  • 使用JDBC连接Mysql数据库会出现的问题总结

    首先理清几个概念: JDBC:java数据库连接,是Orical公司的指定的一套规范接口 java数据库驱动:JDBC的实现类,由相应的数据库厂商提供,可以通过驱动去操作不同的数据库 在java-数据库这里,jdbc-api中的所有包都是java.sql或者javax.sql JDBC的操作步骤: (1)建立数据库和表 (2)创建项目 (3)导入驱动jar包 (4)注册驱动 Class.forName("com.mysql.jdbc.Driver"); (5)获取连接 Connecti

  • JavaWeb JDBC + MySql 通讯录实现简单的增删改查功能案例详解

    本文实例讲述了JavaWeb JDBC + MySql 通讯录实现简单的增删改查功能.分享给大家供大家参考,具体如下: 开发工具:Eclipse + Navicat 项目源码:Github:https://github.com/Sunjinhang/JavaWeb 一.新建项目 在Eclipse中新建一个Web项目,至于如何新建Web项目以及如何添加Tomcat服务器的就不赘述了,项目的目录如下 最终实现的效果如下所示: 点击新增可以进行联系人的新增,点击修改/删除可以进行 联系人的修改和删除

  • JDBC连接MySQL数据库批量插入数据过程详解

    这篇文章主要介绍了JDBC连接MySQL数据库批量插入数据过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 1.读取本地json数据 2.jdbc理解数据库 3.批量插入 maven 引入jar包: <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2

  • 使用JDBC连接Mysql 8.0.11出现了各种错误的解决

    本想着自己安装数据库还是很熟悉了   没想到这次彻底被征服了 虽然以前装的都是Mysql 5.7 ,这次第一次安装Mysql 8.0.11,安装起来不费事,感觉还得心应手,但是   但是 就在用JDBC连接数据库和用jdbc.properties文件时出现了巨多的错误 ,一环扣一环,解决了一个 又生成一个 总结一下都有这些问题:(前提是在cmd下和可视化界面下正常使用) 1.检测连接引擎和数据库版本是否匹配 2.看了很多是要改密码  有两个属性很奇葩  some_user和user_host 一

  • JDBC连接MySql数据库步骤 以及查询、插入、删除、更新等

    主要内容: JDBC连接数据库步骤. 一个简单详细的查询数据的例子. 封装连接数据库,释放数据库连接方法. 实现查询,插入,删除,更新等十一个处理数据库信息的功能.(包括事务处理,批量更新等) 把十一个功能都放在一起. 安装下载的数据库驱动程序jar包,不同的数据库需要不同的驱动程序(这本该是第一步,但是由于属于安装类,所以我们放在最后) 一.JDBC连接数据库(编辑)步骤(主要有六个步骤) 1.注册驱动: Class.forName("com.mysql.jdbc.Driver");

  • MyBatis JdbcType 与Oracle、MySql数据类型对应关系说明

    1. Mybatis JdbcType与Oracle.MySql数据类型对应列表 Mybatis JdbcType Oracle MySql JdbcType ARRAY JdbcType BIGINT BIGINT JdbcType BINARY JdbcType BIT BIT JdbcType BLOB BLOB BLOB JdbcType BOOLEAN JdbcType CHAR CHAR CHAR JdbcType CLOB CLOB CLOB–>修改为TEXT JdbcType C

  • JDBC-idea导入mysql连接java的jar包(mac)的方法

    前言 1.本文使用的是mysql8.0版本 与5.0版本相比:导包方式相同,后面代码中的注册驱动方式不同 1.mac与pc的idea菜单和图标不是完全相同,但是步骤是差不多的 下载对应版本的jar包 mysql 8.0 jar包下载 点击上面链接,到官网下载jar包 下载后解压即可得到该版本jar包 将jar包在本地放入单独一个文件夹 我将这个jar包放入myJAR文件夹,等下直接将这个文件夹导入idea. 这样做的好处是,以后再使用其它jar包时,直接放到这个文件夹就好,不需要再一个一个导入

  • 详解JDBC对Mysql utf8mb4字符集的处理

    写在前面 在开发微信小程序的时候,评论服务模块希望添加上emoji表情,但是emoji表情是4个字节长度的,所以需要进行设置 当前项目是JAVA编写, 使用JDBC连接操作数据库, 如下针对的JDBC操作的解决方案 一.JDBC的URL的正常操作 复制代码 代码如下: jdbc.url=jdbc:mysql://HOST:3306/your_database?useUnicode=true&characterEncoding=utf8&useSSL=false 在连接配置中,声明UTF-8

随机推荐