java preparestatement sql注入,MySQL_(Java)使用preparestatement解決SQL注入的問題

importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.PreparedStatement;importjava.sql.ResultSet;importjava.sql.SQLException;importjava.sql.Statement;public classJDBC01 {public static void main(String[] args) throwsSQLException {//selectAll();//存在sql注入

System.out.println(selectByUernamePassword("Garyyyyar","nihao' or '1'='1"));//使用preparestatement解決SQL注入的問題

System.out.println(selectByUP2("Garyyyyar","nihao' or '1'='1"));

}public static void selectAll() throwsSQLException {//注冊驅動 使用驅動連接數據庫

Connection con = null;

Statement stmt= null;

ResultSet rs= null;try{

Class.forName("com.mysql.jdbc.Driver");//String url ="jdbc:mysql://localhost:3306/garysql";//指定編碼查詢數據庫

String url ="jdbc:mysql://localhost:3306/garysql?useUnicode=true&characterEncoding=UTF8&useSSL=false";

String user= "root";

String password= "123456";//建立和數據庫的連接

con =DriverManager.getConnection(url,user,password);//數據庫的增刪改查

stmt =con.createStatement();//返回一個結果集

rs =stmt.executeQuery("select * from garytb");while(rs.next()) {//System.out.println(rs.getString(1)+","+rs.getString(2)+","+rs.getString(3));

System.out.println(rs.getString("id")+","+rs.getString("username")+","+rs.getString("password"));

}

}catch(Exception e) {//TODO Auto-generated catch block

e.printStackTrace();

}finally{if(rs!=null)

rs.close();if(stmt!=null)

stmt.close();if(con!=null)

con.close();

}

}public static boolean selectByUernamePassword(String username,String password) throwsSQLException {

Connection con=null;

Statement stmt= null;

ResultSet rs= null;try{

Class.forName("com.mysql.jdbc.Driver");

String url="jdbc:mysql://localhost:3306/garysql?useUnicode=true&characterEncoding=UTF8&useSSL=false";

con= DriverManager.getConnection(url,"root","123456");

stmt=con.createStatement();

String sql= "select * from garytb where username = '"+username+"' and password = '"+password+"'";//System.out.println(sql);

rs =stmt.executeQuery(sql);if(rs.next()) {return true;

}else{return false;

}

}catch(Exception e) {//TODO Auto-generated catch block

e.printStackTrace();

}finally{if(rs!=null)

rs.close();if(stmt!=null)

stmt.close();if(con!=null)

con.close();

}return false;

}public static boolean selectByUP2(String username,String password) throwsSQLException{

Connection con=null;

Statement stmt= null;

ResultSet rs= null;try{

Class.forName("com.mysql.jdbc.Driver");

String url="jdbc:mysql://localhost:3306/garysql?useUnicode=true&characterEncoding=UTF8&useSSL=false";

con= DriverManager.getConnection(url,"root","123456");

String sql= "select * from garytb where username = ? and password = ?";

PreparedStatement pstmt=con.prepareStatement(sql);//添加參數

pstmt.setString(1, username);

pstmt.setString(2, password);//進行查詢

rs =pstmt.executeQuery();if(rs.next()) {return true;

}else{return false;

}

}catch(Exception e) {//TODO Auto-generated catch block

e.printStackTrace();

}finally{if(rs!=null)

rs.close();if(stmt!=null)

stmt.close();if(con!=null)

con.close();

}return false;

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java中打印插入SQL的PreparedStatement可以按照以下步骤进行: 1. 导入相关的Java类和库:使用Java的标准库,我们需要导入java.sql包中的相关类,包括PreparedStatement类。 2. 建立数据库连接:首先需要建立与数据库的连接,使用DriverManager类的getConnection()方法来获取一个连接。 3. 创建PrepareStatement对象:使用连接对象的prepareStatement()方法创建一个PreparedStatement对象,并将插入SQL作为参数传递进去。 4. 设置插入参数:如果需要在SQL语句中使用参数,可使用PreparedStatement对象的setXXX()方法设置参数的值,其中XXX表示参数的类型,如setString()、setInt()等。 5. 执行插入操作:使用PreparedStatement对象的executeUpdate()方法执行插入操作,该方法返回一个整数值,表示受影响的行数。 6. 关闭连接和PreparedStatement对象:在插入操作完成后,需要关闭连接和PreparedStatement对象,以释放资源,使用close()方法或try-with-resources语句块来实现。 下面是一个示例代码: ``` import java.sql.*; public class Main { public static void main(String[] args) { try { // 建立数据库连接 Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydatabase", "username", "password"); // 创建PreparedStatement对象 PreparedStatement pstmt = conn.prepareStatement("INSERT INTO mytable (name, age) VALUES (?, ?)"); // 设置插入参数 pstmt.setString(1, "张三"); pstmt.setInt(2, 20); // 执行插入操作 int rows = pstmt.executeUpdate(); System.out.println("插入成功,受影响的行数:" + rows); // 关闭连接和PreparedStatement对象 pstmt.close(); conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } ``` 以上就是使用Java打印插入SQL的PreparedStatement的步骤,通过设置参数和执行插入操作,可以将相关数据插入到数据库中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值