PreparedStatement对象

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);
  }
}

 

posted @ 2021-04-27 15:38  术树  阅读(180)  评论(0)    收藏  举报