用jdbc连接mysql数据库(基础篇)

package cn.lfd.utils;

import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;

public class JdbcUtils {
	private static String driver;//驱动名称
	private static String url;//url
	private static String username;//mysql用户名
	private static String password;//密码
	
	static{
		InputStream in = JdbcUtils.class.getClassLoader().getResourceAsStream("db.properties");//读取配置文件
		Properties p = new Properties();
		try{
			p.load(in);//把配置文件读取到properties对象中
			
			//取出properties对象中的数据
			driver = p.getProperty("driver");
			url = p.getProperty("url");
			username = p.getProperty("username");
			password = p.getProperty("password");
			
			Class.forName(driver);//在驱动管理器中注册一个mysql的驱动
		}catch(Exception e) {
			throw new RuntimeException();
		}
	}
	
	public static Connection getConn() throws SQLException {
		return DriverManager.getConnection(url,username,password);//通过数据库管理器拿到连接
	}
	
	//释放资源和连接
	public static void release(Connection conn, Statement st, ResultSet rs) {
		if(conn!=null) {
			try {
				conn.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}finally{
				if(st!=null) {
					try {
						st.close();
					} catch (SQLException e) {
						e.printStackTrace();
					}finally{
						if(rs!=null) {
							try {
								rs.close();
							} catch (SQLException e) {
								e.printStackTrace();
							}
						}
					}
				}
			}
		}
	}
}

db.properties文件:

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/messageborad?useUnicode=true&characterEncoding=utf-8
username=root
password=root

dao层模板代码:

package cn.lfd.dao.impl;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import cn.lfd.dao.UserDao;
import cn.lfd.domain.User;
import cn.lfd.exception.DaoRuntimeException;
import cn.lfd.utils.JdbcUtils;

public class UserDaoImpl implements UserDao {

	public User find(User user) {
		Connection conn = null;
		PreparedStatement ps = null;
		ResultSet rs = null;
		
		try {
			conn = JdbcUtils.getConn();//获取连接
			//准备好sql语句
			String sql = "select username, password, root from user where username = ? and password = ?";
		    ps = conn.prepareStatement(sql);//用PreparedStatement预编译sql语句,防sql注入
		    ps.setString(1, user.getUsername());//设置第一个参数
		    ps.setString(2, user.getPassword());//设置第二个参数
		    
		    rs = ps.executeQuery();//执行查询语句,并把结果保存在ResultSet中
		    
		    if(rs.next()) {//如果结果集中有数据,进入里面,如果结果集中有多个数据,用while
		    	User u = new User();
		    	u.setUsername(rs.getString("username"));//取出结果集中数据封装到对象中
		    	u.setPassword(rs.getString("password"));
		    	u.setRoot(rs.getString("root"));
		    	return u;//把对象作为返回结果返回
		    }
		} catch (SQLException e) {
			throw new DaoRuntimeException(e);//抛出一个运行时异常
		}finally{
			JdbcUtils.release(conn, ps, rs);//释放资源
		}
		return null;
	}
}

注意:

1.连接数据库必须在工程中导入驱动jar包

2.操作完数据库必须释放资源

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值