在开始编码前,我们需要先给IDEA配置下面两个jar文件:
第一步:我们先进行数据库的连接
public class DBUtils {
/**
* 打开数据库
*/
//优化:让加载器等操作,只做一次
public static String driver;//驱动地址
public static String url;//数据库的地址
public static String user;//数据库账户
public static String password;//数据库密码
static {
//先用ReadFileUtils.readFile()获取properties文件中的信息
Properties properties = ReadFileUtils.readFile("web/com/file/db.properties");
//将获取的信息,填入对应的方式
driver = properties.getProperty("driver");//连接驱动
url = properties.getProperty("url");//链接数据库
user = properties.getProperty("user");//输入数据库的账户
password = properties.getProperty("password");//输入数据库的密码
try {
Class.forName(driver);//创建数据库驱动
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
public static Connection getConnection(){
//创建一个空的连接
Connection conn = null;
try {
conn = DriverManager.getConnection(url,user,password);//连接数据库
} catch (SQLException e) {
e.printStackTrace();
}
return conn;//返回数据库的连接地址
}
/**
* 关闭数据库
* @param conn
* @param ps
* @param rs
*/
public static void closeAll(Connection conn, PreparedStatement ps, ResultSet rs){
//判断rs中是否有数据库返回地址
if(rs!=null){
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
//判断ps中有没有数据库命令
if(ps!=null){
try {
ps.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
//判断conn中是否有数据库连接地址
if(conn!=null){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
使用加载器ClasssLoader进行properties文件的信息读取
package web.com.utils;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
public class ReadFileUtils {
public static Properties readFile(String path){
//普通Java类利用自身类的类加载器读取外部文件
InputStream in = ReadFileUtils.class.getClassLoader().getResourceAsStream(path);
Properties properties = new Properties();
try {
properties.load(in);
} catch (IOException e) {
e.printStackTrace();
}
return properties;
}
}
properties文件
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/test?
user=root
password=root
在Javaweb工程中,我们要经常进行测试,由于没有主函数,所以我们要使用junit.jar工具进行测试,测试函数不能有返回值。
进行数据库连接测试
/**
* 测试连接数据库
*/
@Test
public void test01(){
Connection connection = DBUtils.getConnection();
System.out.println(connection);
}
第二步:进行查询方法的实现
/**
* 根据用户名查询用户是否存
* @param username
* @return
*/
@Override
public boolean findUserByUsername(String username) {
Connection conn = null;//创建一个装数据库连接地址的函数
PreparedStatement ps = null;//创建一个装数据库命令的函数
ResultSet rs = null;//创建一个装数据库返回地址的函数
boolean flag = false;//定义一个逻辑函数,boolean函数,来输出数据库命令运行结果
conn = DBUtils.getConnection();//生成一个数据库连接地址
String sql = "select id from user where username=?";//数据库命令
try {
//将数据库命令装进ps函数中
ps = conn.prepareStatement(sql);
//给数据库命令写入你输入的值
ps.setString(1,username);
//执行数据库命令,成功返回数据库返回地址
rs = ps.executeQuery();
System.out.println(rs);
//判断rs是否有值
while (rs.next()){
//给逻辑函数附true,表示数据库命令执行成功
flag = true;
break;
}
} catch (SQLException e) {
e.printStackTrace();
}
//关闭数据库
DBUtils.closeAll(conn,ps,rs);
//返回值为逻辑函数,表示是否执行成功
return flag;
}
测试查询方法是否正确
/**
* 测试查询用户是否存在
*/
@Test
public void test02(){
UserDaoImpl userDao = new UserDaoImpl();
//执行查询,返回值是逻辑值,false假,true真
boolean flag = userDao.findUserByUsername("xiao");
System.out.println("false执行失败,true执行成功");
System.out.println(flag);
}
第三步:进行添加方法的代码实现
/**
* 增加用户
* @param user
* @return
*/
@Override
public int addUser(User user) {
Connection conn = null;//创建一个装数据库连接地址的函数
PreparedStatement ps = null;//创建一个装数据库命令的函数
int i = 0;
conn = DBUtils.getConnection();//生成一个数据库连接地址
//数据库命令
String sql = "INSERT INTO USER(username,PASSWORD,gender,age,birthday,address,hobby,remark) VALUES(?,?,?,?,?,?,?,?)";
try {
//将数据库命令装进ps函数中
ps = conn.prepareStatement(sql);
//给数据库命令写入你输入的值
ps.setString(1,user.getUsername());
ps.setString(2,user.getPassword());
ps.setString(3,user.getGender());
ps.setInt(4,user.getAge());
//处理日期时间类型问题
Date birthday = user.getBirthday();
java.sql.Date date = new java.sql.Date(birthday.getTime());
ps.setDate(5,date);
ps.setString(6,user.getAddress());
ps.setString(7,user.getHobby());
ps.setString(8,user.getRemark());
//执行数据库命令,返回执行成功数
i = ps.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}
//关闭数据库
DBUtils.closeAll(conn,ps,null);
//返回整形函数i
return i;
}
测试添加方法是否正确
/**
* 测试添加用户
*/
@Test
public void test03(){
UserDaoImpl userDao = new UserDaoImpl();
//输入要添加的信息
User user = new User("wang","123",18,new Date(),"男","成都","篮球,足球","666 ");
//执行添加命令
int i = userDao.addUser(user);
if(i>0){
System.out.println("添加用户成功1");
}else{
System.out.println("添加用户失败1");
}
}
标签:ps,properties,Java,数据库,查询,user,public,conn
From: https://blog.csdn.net/m0_69484120/article/details/142526239