JDBC连接MySql数据库

JDBC连接MySql数据库

JDBC是由Sun公司为简化Java程序访问数据库二指定的一套面向对象的应用程序接口。JDBC不能直接访问数据库,必须依赖于数据库厂商提供的JDBC驱动程序实现对底层数据库的操作。
在数据库建立连接与访问时,一定记住先获得驱动器类库(jar包),并将其添加到项目中。

连接数据库的步骤如下:
1、加载MySql驱动
Class.forName(“com.mysql.jdbc.Driver”);
2、建立与数据库的连接
Connection conn=DriverManager.getConnection(url,user,password);
3、创建PrepareStatement对象
PrepareStatement ps=conn.prepareStatement(sql);
4、执行sql语句
ps.executeUpdate();/ps.executeQuery();

具体代码的如下:
DBHelper.java类 实现连接数据库的封装 代码如下:

package com.hnjtg.dao;

import java.io.IOException;
import java.io.InputStream;
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.sql.Statement;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Properties;

public class DBHelper {
		static Properties pro=new Properties();
		private static String driver;
		private static String url;
		private static String uname;
		private static String pwd;
		
		private static void init() {
			InputStream is=DBHelper.class.getClassLoader().getResourceAsStream("db.properties");
			
			try {
				pro.load(is);
				//从配置文件中获取信息
				driver=pro.getProperty("driver");
				url=pro.getProperty("url");
				uname=pro.getProperty("username");
				pwd=pro.getProperty("password");
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
		
		static{
			//初始化 从配置文件中获取参数
			init();
			try {
				//1、加载驱动只要执行一次就行了,并且,会在第一位执行
				//静态块 只要执行一次 并且自动执行 并且 在第一位执行
				Class.forName(driver);
			} catch (ClassNotFoundException e) {
				e.printStackTrace();
			}
		}
		
		protected Connection conn;
		
		//获取连接对象
		public Connection getConnection(){
			try {
				if(conn==null || conn.isClosed()){
					conn=DriverManager.getConnection(url, uname, pwd);
				}
			} catch (SQLException e) {
				e.printStackTrace();
			}
			
			return conn;
		}
		
		
		//查询的封装 如select的sql语句
		public List<Map<String,String>> findAll(String sql,List<Object> params){
			List<Map<String,String>> list=new ArrayList<Map<String,String>>();
			conn=getConnection();
			try {
				PreparedStatement ps=conn.prepareStatement(sql);
				//这个方法是获取传过来的参数 并将它添加至PreparedStatement对象中
				Params(ps,params);
				//查数据  获得结果集
				ResultSet rs=ps.executeQuery();
				
				//获取到查询的这个表的列字段
				ResultSetMetaData rsmd=rs.getMetaData(); 
				String[] column=new String[rsmd.getColumnCount()];
				
				//循环赋值
				for(int i=0;i<rsmd.getColumnCount();i++){
					//将在表格里查询的每个字段的字段名存到数组column中
					column[i]=rsmd.getColumnName(i+1);
				}
				//再根据键取值存下来
				while(rs.next()){
					Map<String,String> map=new HashMap<String,String>();
					for(int j=0;j<column.length;j++){
						//得到字段名 即键
						String key=column[j];
						//根据键得到值
						String value=rs.getString(key);
						//再把键值存到Map中
						map.put(key.toLowerCase(), value);
					}
					//将Map添加到List中
					list.add(map);
				}
			} catch (SQLException e) {
				e.printStackTrace();
			}
			return list;
		}
		
		//增删改的封装  如insert、delete、update的sql语句
		public int upDate(String sql,List<Object> params){
			int result=0;
			conn=getConnection();
			try {
				//创建PreparedStatement对象
				PreparedStatement ps=conn.prepareStatement(sql);
				Params(ps,params);
				//执行sql语句
				result=ps.executeUpdate();
				//关闭资源
				closeAll(conn,ps,null);
			} catch (SQLException e) {
				e.printStackTrace();
			}
			return result;
		}
		
		//获取参数
		private void Params(PreparedStatement ps, List<Object> params) {
			if(params!=null && params.size()>0){
				//循环获取参数
				for(int i=0;i<params.size();i++){
					//得到参数
					Object o=params.get(i);
					//把值添加进PreparedStatement对象
					try {
						ps.setObject(i+1, o);
					} catch (SQLException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}
				}
			}
		}


		//关闭数据库的连接
		public void closeAll(Connection conn,PreparedStatement stst,ResultSet rs){
			try {
				//关闭连接
				if(conn!=null){
					conn.close();
				}
				//关闭Statement对象
				if(stst!=null){
					stst.close();
				}
				//关闭结果集
				if(rs!=null){
					rs.close();
				}
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
}


db.properties 配置文件,配置文件在src目录下 如下:

driver=com.mysql.jdbc.Driver   //MySql的JDBC的驱动
url=jdbc:mysql://localhost:3306/schools	//连接到数据库的URL
username=root					//用户名
password=a						//密码

你可能感兴趣的:(JDBC连接MySql数据库)