在之前提到过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);