`
阅读更多
package com.jynine;

import java.io.IOException;

/**
 * 数据库连接类
 * @author jynine
 *
 */
public class MyConnection {
	private static String driver = null;
	private static String url = null;
	private static String user = null;
	private static String password = null;
	private static Connection connection = null;
	private static PreparedStatement ps = null;
	private static ResultSet rs = null;
	/**
	 * 初始化数据库连接信息
	 * @param jdbc 数据库资源文件 必须和当前文件在同一路径下
	 *  e.g  jdbc.properties
	 */
	public static void initPro(String jdbc){
		InputStream is = new MyConnection().getClass().getResourceAsStream(jdbc);
		Properties pro = new Properties();
		try {
			pro.load(is);
			driver = pro.getProperty("driver");
			url = pro.getProperty("url");
			user = pro.getProperty("user");
			password = pro.getProperty("password");
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	/**
	 * 获取数据库连接
	 * @param driver
	 * @param url
	 * @param user
	 * @param password
	 * @return
	 */
	public static void setConnection(String jdbc){
		if(!isEmpty(jdbc)){
			initPro(jdbc);
			try {
				Class.forName(driver);
				connection = DriverManager.getConnection(url, user, password);
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
	}
	/**
	 * 得到预编译的SQL语句的对象
	 * @param sql
	 */
	public static void setPerStatement(String sql){
		if(!isEmpty(sql) && connection != null){
			try {
				ps = connection.prepareStatement(sql);
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
	}
	/**
	 * 得到结果集
	 * @param sql
	 * @param jdbc
	 * @return
	 */
	public static void setResultSet(){
		if(ps != null){
			try {
				rs = ps.executeQuery();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
	}
	/**
	 * 初始化连接
	 * @param jdbc
	 * @param sql
	 */
	public static void initConn(String jdbc,String sql){
		setConnection(jdbc);
		setPerStatement(sql);
		setResultSet();
	}
	/**
	 * list根据提供的字段添加元素
	 * @param rs
	 * @param column
	 * @param list
	 * @throws SQLException
	 */
	public static void listAddElement(ResultSet rs,String[] column,List<String[]> list) throws SQLException{
		if(rs != null){
			String[] s = null;
			while (rs.next()) {
				s = new String[column.length];
				for (int i = 0; i < column.length; i++) {
					s[i] = rs.getString(column[i]);
				}
				list.add(s);
			}
		}
	}
	/**
	 * 动态拼接sql语句 并执行
	 * @param table 表名
	 * @param column 要返回字段
	 * @param jdbc 数据库资源文件
	 * @param orderby 排序
	 * @param ascOrDesc 升序或降序
	 * @return List<String>
	 */
	public static List<String[]> executeSql(String table,String[] column,String orderby,String ascOrDesc,String jdbc){
		List<String[]> list = new ArrayList<String[]>();
		try {
			String sql = splitJointSql(table, column, orderby, ascOrDesc);
			initConn(jdbc, sql);
			listAddElement(rs, column, list);
		} catch (Exception e) {
			e.printStackTrace();
		}finally{
			clean(rs, ps, connection);
		}
		return list;
	}
	/**
	 * 执行sql查询 返回查询的第一个字段
	 * @param sql
	 * @param jdbc
	 * @return
	 */
	public static List<String> executeSql(String sql,String jdbc){
		List<String> list = new ArrayList<String>();
		try {
			initConn(jdbc, sql);
			if(rs != null){
				while (rs.next()) {
					list.add(rs.getString(1));
				}
			}
		} catch (Exception e) {
			e.printStackTrace();
		}finally{
			clean(rs, ps, connection);
		}
		return list;
	}
	/**
	 * 执行sql查询 
	 * @param sql
	 * @param jdbc
	 * @return
	 */
	public static List<String[]> executeSql(String sql,String[] column,String jdbc){
		List<String[]> list = new ArrayList<String[]>();
		try {
			initConn(jdbc, sql);
			listAddElement(rs, column, list);
		} catch (Exception e) {
			e.printStackTrace();
		}finally{
			clean(rs, ps, connection);
		}
		return list;
	}
	
	/**
	 * 拼接sql
	 * @param table 表名
	 * @param column 要返回字段
	 * @param jdbc 数据库资源文件
	 * @param orderby 排序
	 * @param ascOrDesc 升序或降序
	 * @return
	 */
	public static String splitJointSql(String table,String[] column,String orderby,String ascOrDesc){
		if(!isEmpty(table) && !isEmptyArray(column)){
			StringBuffer sb = new StringBuffer("select ");
			for (int i = 0; i < column.length; i++) {
				sb.append(column[i]);
				if(i < column.length - 1){
					sb.append(",");
				}
			}
			sb.append(" from ");
			sb.append(table);
			if(!isEmpty(orderby)){
				sb.append("order by ");
				sb.append(orderby);
			}
			if(!isEmpty(ascOrDesc)){
				sb.append(ascOrDesc);
			}
			return sb.toString();
		}else{
			return null;
		}
	}
	/**
	 * 判断字符串是否为空  如果为空返回true
	 * @param str
	 * @return
	 */
	public static boolean isEmpty(String str){
		if(str != null && !str.equals("")){
			return false;
		}else{
			return true;
		}
	}
	/**
	 * 判断数组是否为空
	 * @param str
	 * @return
	 */
	public static boolean isEmptyArray(String[] str){
		if(str != null && str.length >= 1){
			return false;
		}else{
			return true;
		}
	}
	/**
	 * 释放连接资源
	 * @param rs
	 * @param ps
	 * @param connection
	 */
	public static void clean(ResultSet rs, PreparedStatement ps, Connection connection){
		try {
			if(rs != null){
				rs.close();
			}
			if(ps != null){
				ps.close();
			}
			if(connection != null){
				connection.close();
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
	public static void main(String[] args) {
		List<String[]>  strs = executeSql("user", new String[]{"username"}, null, null, "jdbc.properties");
		for (int i = 0; i < strs.size(); i++) {
			System.out.println(strs.get(i)[0]+"=======");
		}
	}
}


jdbc.properties

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/ssm3
user=root
password=root
分享到:
评论

相关推荐

    Java 数据库连接泄漏 解决方法

    本文将详细介绍如何在WebLogic环境下解决Java数据库连接泄漏问题,包括临时解决方案和长期监控机制。 #### 二、什么是数据库连接泄漏? 数据库连接泄漏是指应用程序在使用完数据库连接后没有正确地关闭这些连接,...

    java数据库连接池

    标题:Java数据库连接池 描述:本篇将详细介绍Java数据库连接池的概念,代码实现以及其在实际项目中的应用。数据库连接池是Java开发中优化数据库访问效率的关键技术,通过复用预创建的数据库连接,避免频繁创建和...

    java数据库连接测试

    Java数据库连接测试是一种常见的开发任务,它涉及到Java编程语言与各种数据库系统的交互。在这个场景中,我们看到几个关键的文件,这些文件暗示了这个小工具可能支持多种数据库,包括Oracle、MySQL、Microsoft SQL ...

    JAVA数据库连接池

    Java数据库连接池是Java开发中一个非常重要的技术,它主要用于管理数据库连接,提高数据库操作的效率和性能。在Java应用程序中,频繁地创建和关闭数据库连接会导致大量的系统资源浪费,而连接池则可以复用已建立的...

    JAVA数据库连接池类

    本篇文章将深入解析一个自定义的JAVA数据库连接池类,帮助开发者更好地理解和运用这一关键技术。 首先,连接池的基本思想是预先创建一定数量的数据库连接,并存储在一个集合(如Vector)中,供应用程序按需获取和...

    Java数据库连接Java数据库连接.ppt

    Java数据库连接 Java数据库连接是 Java 编程语言中连接数据库的方式。Java 数据库连接可以分为两个部分:数据库连接和数据库访问。 数据库连接是指 Java 程序与数据库之间的连接,通过 JDBC(Java DataBase ...

    通用java数据库连接程序

    本资源提供的"通用java数据库连接程序"是一个可复用的组件,能够方便地在各种项目中集成,以实现与数据库的无缝交互。下面将详细阐述这个程序的主要组成部分及其工作原理。 1. **RelationalInfoDao.java**: 这个...

    Java数据库连接池的原理与应用.pdf

    Java数据库连接池的原理与应用 在Java开发领域,数据库连接池(Database Connection Pool,简称DBCP)是一种提高数据库访问性能、降低资源消耗的重要技术。它通过预先建立一定数量的数据库连接,存储在一个“池”中...

    java数据库连接池.rar

    总的来说,Java数据库连接池如C3P0和Druid,以及Spring的JdbcTemplate,都是为了优化数据库操作而设计的工具。它们各自有其特点和优势,开发者可以根据项目需求选择合适的技术。在使用过程中,充分理解和合理配置...

    Java数据库连接池的使用示例

    Java数据库连接池是Java应用程序管理数据库连接的一种高效方式。它避免了每次需要访问数据库时创建新的连接,而是预先创建一定数量的连接并保存在池中,当程序需要时可以从池中获取,用完后归还,从而提高了系统性能...

    java数据库连接方法(一)

    这篇博客"java数据库连接方法(一)"将探讨如何在Java中建立与数据库的连接,包括JDBC(Java Database Connectivity)的基本概念、步骤以及常见的数据库连接池技术。下面是对这个主题的详细阐述。 **JDBC简介** ...

    Java数据库连接技术

    Java数据库连接

    Java数据库连接大全

    ### Java数据库连接大全:深入解析 在现代软件开发中,Java作为一门强大的编程语言,广泛应用于企业级应用的开发,而数据库操作是其中不可或缺的一部分。本文将深入探讨如何使用Java来连接并操作不同类型的数据库,...

    JAVA数据库连接大全

    ### JAVA数据库连接大全 在Java开发环境中,与各种类型的数据库进行交互是一项基本需求。通过Java Database Connectivity (JDBC) API,开发者能够实现跨平台、跨数据库的通用接口,从而简化了数据库连接的过程。...

    轻量级java数据库连接池

    本项目提供了一个轻量级的Java数据库连接池实现,旨在简化开发过程,提高应用性能并降低资源消耗。下面将详细介绍这个轻量级Java数据库连接池的设计理念、工作原理以及如何使用。 1. **设计理念** 轻量级数据库...

    Java 课件Java 数据库连接 vb数据库 数据库爱好 数据

    【Java 数据库连接】在Java编程中,与数据库的连接是通过JDBC(Java Database Connectivity)API实现的。JDBC是Java平台的标准接口,允许Java应用程序连接到各种类型的数据库。开发者可以通过加载数据库驱动,建立...

    sql.rar_java数据库连接_java连接_java连接数据库_sql数据库连接

    首先,Java数据库连接(JDBC)是Java API,它提供了一组接口和类,使得Java程序能够与各种类型的数据库进行通信。JDBC允许开发者执行SQL语句,管理事务,处理结果集等。使用JDBC时,我们需要导入`java.sql`和`javax....

    数据库连接源程序·.zip_java数据库连接

    本资源"数据库连接源程序·.zip"提供了一套Java数据库连接(JDBC)的源代码,旨在帮助开发者理解和实现数据库的连接和操作。以下是关于Java数据库连接的重要知识点,以及如何使用这些源代码进行学习和实践。 首先,...

Global site tag (gtag.js) - Google Analytics