07jdbc 使用PreparedStatement接口修改之前的代码

之前的增删改差操作的sql语句使用的是Statement接口,现在知道了这个接口是有问题的

下面将之前博文中的增删改差操作用PreparedStatement接口替换掉Statement接口

先提供工具类DBUtil类

package util;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.ResourceBundle;

public class DBUtil {
	
	private static String driverClass;
	private static String url;
	private static String username;
	private static String password;
	
	static {
		ResourceBundle rb=ResourceBundle.getBundle("util/db");
		driverClass=rb.getString("driverClass");
		url=rb.getString("url");
		
		username=rb.getString("username");
		password= rb.getString("password");
		
		try {
            //注册驱动
			Class.forName(driverClass);
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}
	}
	public static Connection getConnection() throws SQLException {
        //获取连接
		return DriverManager.getConnection(url,username,password);
	}
	
}
/*
工具类读取的util包下的db.properties文件,4行
driverClass=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/study1?useSSL=false&serverTimezone=UTC
username=root
password=root
*/

查询操作:

package jdbc;

import java.sql.Connection;

import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import util.DBUtil;
 
public class JdbcTest01new {
	public static void main(String[]args) {
       
		
		try (
				//获取连接Connection
				Connection conn=DBUtil.getConnection();
		        ///得到执行sequel语句的对象Statement
			    PreparedStatement stmt=conn.prepareStatement("select * from employee");
		        //执行sql语句,并返回结果
			    ResultSet rs=stmt.executeQuery();
		        //处理结果
								){
			  while(rs.next()) {
			    	System.out.println(rs.getObject("employeenumber"));
			    	System.out.println(rs.getObject("employeename"));
			    	System.out.println(rs.getObject("departmentnumber"));
			    	System.out.println(rs.getObject("salary"));
			    	System.out.println(rs.getObject("hiredate"));
			    	System.out.println("-================");
			    }
		} catch (SQLException e1) {
			e1.printStackTrace();
		}
            
	}
}

增删改查操作

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import org.junit.Test;

import bean.User;
import util.DBUtil;

public class JdbcTest02new {

	@Test
	public void testJDBC()  {
		
	String sql1="insert into t_user(name,password,email,birthday) values (?,?,?,?) ";
	String sql2="update  t_user set password=? where name=?";
	String sql3="delete from t_user where name=?";
	String sql4="select * from t_user";
	try (
			Connection	conn=DBUtil.getConnection();
			PreparedStatement stat=conn.prepareStatement(sql1);
			PreparedStatement stat2=conn.prepareStatement(sql2);
			PreparedStatement stat3=conn.prepareStatement(sql3);
			PreparedStatement stat4=conn.prepareStatement(sql4);
			){
		//更新操作
		stat.setString(1, "cat");
		stat.setString(2, "123456");
		stat.setString(3, "[email protected]");
		stat.setDate(4, new java.sql.Date(new Date().getTime()) );
//		stat.setString(4, "1992-01-20");传字符串即可
	
		int in1=stat.executeUpdate();
		System.out.println(in1==0?"插入失败":"插入成功");
		
		//修改操作
		 
		stat2.setString(1, "123");
		stat2.setString(2, "cat");
		int in2=stat2.executeUpdate();
		System.out.println(in2==0?"修改失败":"修改成功");
		
			try(
					ResultSet rs=stat4.executeQuery();
					) {
				while(rs.next()) {
					System.out.print(" "+rs.getObject("id"));
					System.out.print(" "+rs.getObject("name"));
					System.out.print(" "+rs.getObject("password"));
					System.out.print(" "+rs.getObject("email"));
					System.out.print(" "+rs.getObject("birthday"));
					System.out.println("======================== ");
				}
			}
		//删除操作 
			stat3.setString(1, "cat");
			int in3=stat3.executeUpdate();
			System.out.println(in3==0?"删除失败":"删除成功");
	} catch (SQLException e) {
		e.printStackTrace();
	}
	}
}

注意:查询操作返回ResultSet对象,为了不显示关闭,用jdk7写法时,需要再来一个try,写到try后的小括号中

查询操作:

package jdbc;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import org.junit.Test;

import bean.User;
import util.DBUtil;

public class JdbcTest02new {


	@Test
	public void testJDBC01()  {
		
		String sql="select id,name,password,email,birthday from t_user";
		 
		try(
				Connection conn = DBUtil.getConnection();
				PreparedStatement stat=conn.prepareStatement(sql);
				ResultSet rs=stat.executeQuery();
				) {
				List<User> list=new ArrayList<>();
				while(rs.next()) {
					User u=new User();
					u.setId(rs.getInt("id"));
					u.setName(rs.getString("name"));
					u.setPassword(rs.getString("password"));
					u.setEmail(rs.getString("email"));
					u.setBirthday(rs.getDate("birthday"));
					list.add(u);
				}
				System.out.println(list);

		} catch (SQLException e) {
			e.printStackTrace();
		}
			
	}
}

单元测试Test下节介绍

猜你喜欢

转载自blog.csdn.net/sinat_41132860/article/details/84996920