PreparedStatement对象
package com.shushu.lesson.utils;
import java.sql.*;
import java.util.Date;
public class InsertStatement {
public static void main(String[] args) throws SQLException {
Connection conn = null;
PreparedStatement st = null;
ResultSet rs = null;
conn = JDBCUtils.getConnection();
//使用?占位符代替参数
String sql = "INSERT INTO users(id,`name`,`password`,`email`,`birthday`) VALUES(?,?,?,?,?)";
//区别,需要预编译SQL
st = conn.prepareStatement(sql);
//手动赋值,具体类型要用具体方式,否则用Object
st.setInt(1,4);
st.setString(2,"shushu");
st.setString(3,"123456");
st.setString(4,"2448397@qq.com");
//注意点:sql Date 数据库 new java.sql.Date()转为sql时间
// util Date java new Date().getTime()获得时间戳
st.setDate(5,new java.sql.Date(new Date().getTime()) );
//执行
int i = 1;
st.executeUpdate();
if (i > 0){
System.out.println("插入成功");
}
JDBCUtils.release(conn,st,rs);
}
}
更新
package com.shushu.lesson;
import com.shushu.lesson.utils.JDBCUtils;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class UpdateStatemet {
public static void main(String[] args) throws SQLException {
Connection conn = null;
PreparedStatement st = null;
ResultSet rs = null;
conn = JDBCUtils.getConnection();
//使用?占位符代替参数
String sql = "update users set `name` = ? where id=?;";
//区别,需要预编译SQL
st = conn.prepareStatement(sql);
//手动赋值,具体类型要用具体方式,否则用Object
st.setString(1,"Ig");
st.setInt(2,1);
//执行
int i = st.executeUpdate();
if (i > 0){
System.out.println("更新成功");
}
JDBCUtils.release(conn,st,rs);
}
}
删除
package com.shushu.lesson;
import com.shushu.lesson.utils.JDBCUtils;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Date;
public class DeleteStatement {
public static void main(String[] args) throws SQLException {
Connection conn = null;
PreparedStatement st = null;
ResultSet rs = null;
conn = JDBCUtils.getConnection();
//使用?占位符代替参数
String sql = "delete from users where id = ?";
//区别,需要预编译SQL
st = conn.prepareStatement(sql);
//手动赋值,具体类型要用具体方式,否则用Object
st.setInt(1,5);
//执行
int i = st.executeUpdate();
if (i > 0){
System.out.println("删除成功");
}
JDBCUtils.release(conn,st,rs);
}
}
查找
package com.shushu.lesson;
import com.shushu.lesson.utils.JDBCUtils;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class SelectStatement {
public static void main(String[] args) throws SQLException {
Connection conn = null;
PreparedStatement st = null;
ResultSet rs = null;
conn = JDBCUtils.getConnection();
String sql = "select * from users where id = ?";
st = conn.prepareStatement(sql);
st.setInt(1,1);
rs = st.executeQuery();
while (rs.next()){
System.out.println(rs.getString("name"));
}
JDBCUtils.release(conn,st,rs);
}
}
PreparedStatement不会出现SQL注入问题,推荐使用
package com.shushu.lesson;
import com.shushu.lesson.utils.JDBCUtils;
import java.sql.*;
public class lesson1 {
public static void main(String[] args) throws SQLException {
login("Ig","123456");
// username等于空 或者 1=1(为true)
// login("'or '1=1","'or'1=1");
}
public static void login(String username,String password) throws SQLException {
Connection conn = null;
PreparedStatement st = null;
ResultSet rs = null;
conn = JDBCUtils.getConnection();
//PreparedStatement防止SQL注入的本质,把传递进来的参数当做字符
//假设其中存在转义字符,就直接忽略
String sql = "select * from users where `name` = ? and `password` = ?";
st = conn.prepareStatement(sql);
st.setString(1,username);
st.setString(2,password);
rs = st.executeQuery();
while (rs.next()){
System.out.println("name="+rs.getString("name"));
System.out.println("password="+rs.getString("password"));
}
JDBCUtils.release(conn,st,rs);
}
}

浙公网安备 33010602011771号