PreparedStatement解决sql拼接

在之前提到过Statement的三个问题

用PreparedStatement解决sql拼接

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.util.Scanner;

public class TestPrepareStatement {
	public static void main(String  []  args) throws Exception{
		//1、键盘输入
		Scanner input = new Scanner(System.in);
		System.out.println("请输入名字");
		String ename  = input.nextLine();
		
		System.out.println("请输入电话");
		String tel  = input.nextLine();
		
		System.out.println("请输入性别");
		String gender  = input.nextLine();
		
		System.out.println("请输入薪资");
		String salaryStr = input.nextLine();
		double salary = Double.parseDouble(salaryStr);
		
		//2、注册驱动
		Class.forName("com.mysql.jdbc.Driver");
		
		//3、获取驱动
		Connection  conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/1205db","root","123456");
		
		//4、编写sql语句
		String sql = "insert into t_employee(ename,tel,gender,salary) VALUES(?,?,?,?)";
		
		//5、创建PreparedStatement
//		Statement st = conn.createStatement(); 换为下面的PreparedStatement
		PreparedStatement pst = conn.prepareStatement(sql);
//		先传入sql,对带?的sql进行预编译
		
		//6、把?的具体值传进去
		pst.setObject(1, ename);
		pst.setObject(2, tel);
		pst.setObject(3, gender);
		pst.setObject(4, salary);
		
		
		//7、执行更新sql
		int len  =  pst.executeUpdate();//这里不能在传入sql了,如果传入sql会对????进行sql语句执行
//		在存sql上面的相等于没有设置
		System.out.println(len>0?"添加成功":"添加失败");
		
		//8、关闭连接
		pst.close();
		conn.close();
		input.close();
	}
}

在这里插入图片描述传入sql报下面的错,错误的sql语法:

int len  =  pst.executeUpdate(sql);

在这里插入图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章