JDBC(Java Database connect)防SQL注入

        通过使用 ? 占位符来创建预编译的 SQL 语句,然后使用 setString 方法来设置参数值。这样做可以确保用户提供的任何输入都被视为字符串值,而不是 SQL 代码的一部分,从而防止 SQL 注入攻击。

import java.sql.Connection;  
import java.sql.DriverManager;  
import java.sql.PreparedStatement;  
import java.sql.ResultSet;  
import java.sql.SQLException;  
  
public class PreventSQLInjection {  
      
    public static void main(String[] args) {  
        String url = "jdbc:mysql://localhost:3306/mydatabase";  
        String username = "myusername";  
        String password = "mypassword";  
          
        Connection conn = null;  
        PreparedStatement pstmt = null;  
        ResultSet rs = null;  
          
        try {  
            // 1. 获取数据库连接  
            conn = DriverManager.getConnection(url, username, password);  
              
            // 2. 创建预编译 SQL 语句  
            String sql = "SELECT * FROM users WHERE username = ? AND password = ?";  
            pstmt = conn.prepareStatement(sql);  
              
            // 3. 设置参数值  
            pstmt.setString(1, "myinputusername");  
            pstmt.setString(2, "myinputpassword");  
              
            // 4. 执行查询  
            rs = pstmt.executeQuery();  
              
            // 5. 处理结果集  
            while (rs.next()) {  
                System.out.println("User found: " + rs.getString("username"));  
            }  
              
        } catch (SQLException e) {  
            e.printStackTrace();  
        } finally {  
            // 6. 关闭连接和结果集对象  
            try {  
                if (rs != null) rs.close();  
                if (pstmt != null) pstmt.close();  
                if (conn != null) conn.close();  
            } catch (SQLException e) {  
                e.printStackTrace();  
            }  
        }  
    }  
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值