javaweb 连接mysql8需要修改的地方

1、用mysql8的驱动,下载地址: https://www.cr173.com/soft/434713.html

使用这个 :mysql-connector-java-8.0.11.jar

2、驱动名字为:

com.mysql.cj.jdbc.Driver

3、数据库链接字符串为:

private final String databaseName = "library?characterEncoding=utf8&useSSL=false&serverTimezone=GMT";

4、具体实例:

 

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import cn.com.util.Page;


/**
 * 数据库操作工具类 -普通jdbc版本
 * 
 * @author 
 * @ClassName: DB
 * @Version 2.1
 * @ModifiedBy
 * @Copyright 
 * @date 2012-8-7 上午11:51:47
 * @description
 */
public class DB {

	/**
	 * 驱动类位置 软件位置 
	 * mysql: com.mysql.jdbc.Driver
	 * oracle: oracle.jdbc.driver.OracleDriver
	 * 连接池:org.logicalcobwebs.proxool.ProxoolDriver
	 */
	// private static final String driver = "com.mysql.jdbc.Driver";
    private static final String driver = "com.mysql.cj.jdbc.Driver";

	/**
	 * 数据库连接
	 * mysql连接: jdbc:mysql://localhost:3308/
	 * oracle连接: jdbc:oracle:thin:@localhost:1521:
	 * 连接池:proxool.datasource1
	 */
	private final String url = "jdbc:mysql://localhost:3310/";
	/** 数据库名称 */
	// private final String databaseName = "library?characterEncoding=utf8";
    private final String databaseName = "library?characterEncoding=utf8&useSSL=false&serverTimezone=GMT";

	/** 用户名 */
	private final String userName = "root";
	/** 用户密码 */
	private final String password = "123456";
	/** 数据库连接对象 */
	private Connection con;
//	/** 执行sql语句的对象 */
//	private Statement st;
	/** 结果集,存放数据的对象 */
	private ResultSet rs;
	/**预编译的执行sql语句对象*/
	private PreparedStatement ps;

	// 第一步 加载驱动,静态模块只运行一次。
	static {
		try {
			Class.forName(driver);
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}
	}

	/**
	 * 创建一个新的链接
	 * 
	 * @author Cris
	 * @title: createConnection
	 * @date 2012-3-31 下午10:10:33
	 * @return Connection
	 */
	private void createConnection() {
		try {
			con = (Connection) DriverManager.getConnection(url + databaseName, userName, password);
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
	
	/**
	 * 关闭相关内容
	 * 
	 * @author 
	 * @title: close
	 * @date 2012-8-7 下午12:04:48 void
	 */
	private void close() {
		
		if (rs != null) {
			try {
				rs.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		
		if(ps != null){
			try {
				ps.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		
		if (con != null) {
			try {
				con.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
	}
	
	/**
	 * 根据sql语句获得一个List<List<String>>集合
	 * 
	 * @author 
	 * @title: queryList
	 * @date 2012-8-10 上午10:44:32
	 * @param sql
	 * @param newConnection 是否新创建一个链接对象
	 * @param params 参数集合
	 * @return List<List<String>>
	 */
	private List<List<String>> queryList(String sql, boolean newConnection, Object params) {
		List<List<String>> tableList = new ArrayList<List<String>>();
		
		if(sql == null) {
			return tableList;
		}
		
		if(newConnection == true) {
			createConnection();
		}
		
		try {
			ps = con.prepareStatement(sql);
			
			if(params != null){
				setParams(params);
			}
			
			rs = ps.executeQuery();
			ResultSetMetaData rsmd = rs.getMetaData();
			int colCount = rsmd.getColumnCount();
			
			while (rs.next()) {
				List<String> list = new ArrayList<String>();
				for (int i = 1; i <= colCount; i++) {
					list.add(rs.getString(i));
				}
				tableList.add(list);
			}
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			close();
		}
		return tableList;
	}
	
	/**
	 * 根据sql语句获得一个List<Map<String, String>>集合
	 * @author 
	 * @title: queryMap
	 * @date 2012-8-10 上午10:45:36
	 * @param sql
	 * @param newConnection 是否新创建一个链接和Statement对象
	 * @param params 参数集合
	 * @return List<Map<String,String>>
	 */
	private List<Map<String, String>> queryMap(String sql, boolean newConnection, Object params) {
		List<Map<String, String>> tableList = new ArrayList<Map<String, String>>();
		
		if(sql == null) {
			return tableList;
		}
		
		if(newConnection == true) {
			createConnection();
		}
		
		try {
			ps = con.prepareStatement(sql);
			if(params != null){
				setParams(params);
			}
			
			rs = ps.executeQuery();
			ResultSetMetaData rsmd = rs.getMetaData();
			int colCount = rsmd.getColumnCount();
			
			String[] names = new String[colCount];
			for (int i = 1; i <= colCount; i++) {
				names[i - 1] = rsmd.getColumnName(i);
			}
			while (rs.next()) {
				Map<String, String> rowMap = new HashMap<String, String>();
				for (int i = 1; i <= colCount; i++) {
					rowMap.put(names[i-1], rs.getString(i));
				}
				tableList.add(rowMap);
			}
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			close();
		}
		return tableList;
	}
	
	/**
	 * 根据分页对象,获取最终的sql语句
	 * 
	 * @author 
	 * @title: getSql
	 * @date 2012-8-10 上午10:26:53
	 * @param sql 普通的sql语句
	 * @param params 参数集合
	 * @param page 分页对象
	 * @return String 最终的分页sql语句
	 */
	private String getPageSql(String sql, Object params, Page page) {
		String countSql = new StringBuilder("select count(*) from (").append(sql).append(") ShxtTable"). toString();
		try {
			ps = con.prepareStatement(countSql);
			if(params != null){
				setParams(params);
			}
			rs = ps.executeQuery();
			if (!rs.next()) {
				return null;
			}
			page.rows = rs.getInt(1);
		} catch (SQLException e1) {
			e1.printStackTrace();
			return null;
		}finally {
			
			try {
				rs.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
			
			try {
				ps.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}

		if (page.rows == 0) {
			return null;
		}

		page.pages = page.rows / page.size
				+ ((page.rows % page.size > 0 ? 1 : 0));

		if (page.index > page.pages) {
			page.index = page.pages;
		} else if (page.index < 1) {
			page.index = 1;
		}

		int first = (page.index - 1) * page.size;

		
		//分页例句Oracle:select * from (select rownum as r,t.* from(select tableName.* from tableName order by tableColum DESC) t where rownum<=endPos) where r>startPos 
		//select tableName.* from tableName order by tableColum DESC limit startPos
		// 最终的查询sql语句
		StringBuilder finalSql = new StringBuilder(sql)
		 		.append(" limit ").append(first).append(",").append(page.size);
		
		
		return finalSql.toString();
	}


	/**
	 * 设置用户的参数
	 * 
	 * @author 
	 * @title: setParams
	 * @date 2014-4-3 下午03:36:46
	 * @param params
	 * @throws SQLException void
	 */
	@SuppressWarnings("unchecked")
	private void setParams(Object params) throws SQLException {
		if(params instanceof String[]){
			String[] paramsArrays = (String[])params;
			for (int i = 0; i < paramsArrays.length; i++) {
				ps.setString(i + 1, paramsArrays[i]);
			}
		}else {
			List<String> paramsList = (List<String>)params;
			for (int i = 0; i < paramsList.size(); i++) {
				ps.setString(i + 1, paramsList.get(i));
			}
		}
	}
	
	
	/****************************************用户调用*********************************************************/
	
	/**
	 * 根据sql语句查询数据库
	 * 
	 * @author Cris
	 * @title: queryList
	 * @date 2012-3-31 下午10:25:28
	 * @param sql
	 * @return List<List<String>>
	 */
	public List<List<String>> queryList(String sql) {
		return queryList(sql, true, null);
	}
	
	/**
	 * 预编译模式,根据sql语句查询数据库
	 * 条件值用?代替。
	 * 
	 * @author 
	 * @title: queryList
	 * @date 2014-4-3 下午03:22:23
	 * @param sql 带?的sql语句
	 * @param params 参数数组
	 * @return List<List<String>>
	 */
	public List<List<String>> queryList(String sql, String[] params) {
		return queryList(sql, true, params);
	}
	
	/**
	 * 预编译模式,根据sql语句查询数据库
	 * 条件值用?代替。
	 * 
	 * @author
	 * @title: queryList
	 * @date 2014-4-3 下午03:22:51
	 * @param sql 带?的sql语句
	 * @param params 参数集合
	 * @return List<List<String>>
	 */
	public List<List<String>> queryList(String sql, List<String> params) {
		return queryList(sql, true, params);
	}
	
	
	/**
	 * 根据sql语句查询数据库
	 * 
	 * @author Cris
	 * @title: queryList
	 * @date 2012-3-31 下午10:25:28
	 * @param sql
	 * @return List<List<Object>>
	 */
	public List<Map<String, String>> queryMap(String sql) {
		return queryMap(sql, true, null);
	}
	
	/**
	 * 预编译模式,根据sql语句查询数据库
	 * 条件值用?代替。
	 * 
	 * @author 
	 * @title: queryMap
	 * @date 2014-4-3 下午03:25:39
	 * @param sql 带?的sql语句
	 * @param params 参数数组
	 * @return List<Map<String,String>>
	 */
	public List<Map<String, String>> queryMap(String sql, String[] params) {
		return queryMap(sql, true,  params);
	}
	
	/**
	 * 预编译模式,根据sql语句查询数据库
	 * 条件值用?代替。
	 * 
	 * @author 
	 * @title: queryMap
	 * @date 2014-4-3 下午03:26:20
	 * @param sql 带?的sql语句
	 * @param params 参数数组
	 * @return List<Map<String,String>>
	 */
	public List<Map<String, String>> queryMap(String sql, List<String> params) {
		return queryMap(sql, true, params);
	}
	
	/**
	 * 根据sql语句查询数据库--分页查询
	 * 
	 * @author 
	 * @title: queryList
	 * @date 2012-8-7 下午12:42:00
	 * @param sql
	 * @param page 分页对象
	 * @return List<List<String>>
	 */
	public List<List<String>> queryList(String sql, Page page) {
		createConnection();
		
		String finalSql = getPageSql(sql,null, page);

		List<List<String>> tableList = queryList(finalSql, false, null);
		
		return tableList;
	}
	
	/**
	 * 预编译模式,根据sql语句查询数据库--分页查询
	 * 条件值用?代替。
	 * 
	 * @author
	 * @title: queryList
	 * @date 2014-4-3 下午03:27:07
	 * @param sql 带?的sql语句
	 * @param params 参数数组
	 * @param page 分页对象
	 * @return List<List<String>>
	 */
	public List<List<String>> queryList(String sql,String[] params, Page page) {
		createConnection();
		
		String finalSql = getPageSql(sql,params, page);

		List<List<String>> tableList = queryList(finalSql, false, params);
		
		return tableList;
	}
	
	/**
	 * 预编译模式,根据sql语句查询数据库--分页查询
	 * 条件值用?代替。
	 * 
	 * @author 
	 * @title: queryList
	 * @date 2014-4-3 下午03:28:09
	 * @param sql 带?的sql语句
	 * @param params 参数集合
	 * @param page 分页对象
	 * @return List<List<String>>
	 */
	public List<List<String>> queryList(String sql,List<String> params, Page page) {
		createConnection();
		
		String finalSql = getPageSql(sql,params, page);

		List<List<String>> tableList = queryList(finalSql, false, params);
		
		return tableList;
	}
	
	/**
	 * 根据sql语句查询数据库--分页查询
	 * 
	 * @author 
	 * @title: queryMap
	 * @date 2012-8-10 上午10:13:09
	 * @param sql
	 * @param page 分页对象
	 * @return List<Map<String,String>>
	 */
	public List<Map<String, String>> queryMap(String sql, Page page) {
		createConnection();
		
		String finalSql = getPageSql(sql,null, page);
		
		List<Map<String, String>> tableList = queryMap(finalSql, false, null);
		
		return tableList;
	}
	
	/**
	 * 预编译模式,根据sql语句查询数据库--分页查询
	 * 条件值用?代替。
	 * 
	 * @author 
	 * @title: queryMap
	 * @date 2014-4-3 下午02:12:31
	 * @param sql 带?的sql语句
	 * @param params 参数数组
	 * @param page 分页对象
	 * @return List<Map<String,String>>
	 */
	public List<Map<String, String>> queryMap(String sql,String[] params, Page page) {
		createConnection();
		
		String finalSql = getPageSql(sql,params, page);
		
		List<Map<String, String>> tableList = queryMap(finalSql, false, params);
		
		return tableList;
	}
	
	/**
	 * 预编译模式,根据sql语句查询数据库--分页查询
	 * 条件值用?代替。
	 * 
	 * @author 
	 * @title: queryMap
	 * @date 2014-4-3 下午03:30:08
	 * @param sql 带?的sql语句
	 * @param params 参数数组
	 * @param page 分页对象
	 * @return List<Map<String,String>>
	 */
	public List<Map<String, String>> queryMap(String sql,List<String> params, Page page) {
		createConnection();
		
		String finalSql = getPageSql(sql,params, page);
		
		List<Map<String, String>> tableList = queryMap(finalSql, false, params);
		
		return tableList;
	}
	
	/**
	 * DML语句,数据更新
	 * 
	 * @author 
	 * @title: update
	 * @date 2014-3-15 上午10:16:19
	 * @param sql 有更新操作的sql语句
	 */
	public void update(String sql) {
		createConnection();
		try {
			ps = con.prepareStatement(sql);
			ps.executeUpdate();
		} catch (SQLException e) {
			e.printStackTrace();
		}finally{
			close();
		}
	}
	
	/**
	 * 预编译模式,DML语句,数据更新
	 * 数值用?代替。
	 * 
	 * @author 
	 * @title: update
	 * @date 2014-4-2 下午02:02:33
	 * @param sql 有更新操作的sql语句,其中的值用?代替
	 * @param params 需要设置的参数
	 */
	public void update(String sql,String[] params){
		createConnection();
		try {
			ps = con.prepareStatement(sql);
			for (int i = 0; i < params.length; i++) {
				ps.setString(i + 1, params[i]);
			}
			ps.executeUpdate();
		} catch (SQLException e) {
			e.printStackTrace();
		}finally{
			close();
		}
	}
	
	/**
	 * DML语句,数据更新-批量操作
	 * 
	 * @author 
	 * @title: update
	 * @date 2014-4-2 下午02:03:37
	 * @param sql 有更新操作的sql语句,其中的值用?代替
	 * @param paramList 需要设置的参数集合
	 */
	public void update(String sql,List<String[]> paramList){
		createConnection();
		try {
			ps = con.prepareStatement(sql);
			ps.clearBatch();
			for(String[] params : paramList){
				for (int i = 0; i < params.length; i++) {
					ps.setString(i + 1, params[i]);
				}
				ps.addBatch();
			}
			ps.executeBatch();
		} catch (SQLException e) {
			e.printStackTrace();
		}finally{
			close();
		}
	}
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值