Java MySQL 字符串转义 - 使用 PreparedStatement 防止 SQL 注入
在 Java 中,可以使用 PreparedStatement 来对插入的字符串进行转义处理。PreparedStatement 是一个预编译的 SQL 语句对象,可以通过设置参数来替换 SQL 语句中的占位符,同时会自动对参数进行转义处理,有效防止 SQL 注入攻击。\n\n下面是一个示例代码:\n\njava\nimport java.sql.*;\n\npublic class Main {\n public static void main(String[] args) {\n String url = "jdbc:mysql://localhost:3306/mydb?useUnicode=true&characterEncoding=utf8";\n String username = "root";\n String password = "password";\n \n try (Connection conn = DriverManager.getConnection(url, username, password)) {\n String sql = "INSERT INTO mytable (name) VALUES (?)";\n String name = "John'; DROP TABLE mytable; --";\n \n PreparedStatement stmt = conn.prepareStatement(sql);\n stmt.setString(1, name);\n \n int rowsAffected = stmt.executeUpdate();\n System.out.println("Rows affected: " + rowsAffected);\n } catch (SQLException e) {\n e.printStackTrace();\n }\n }\n}\n\n\n在上面的示例中,首先创建了一个 Connection 对象来连接到 MySQL 数据库。然后,定义了一个 SQL 语句,其中使用了占位符(?)来表示待插入的参数。\n\n接着,创建了一个 PreparedStatement 对象,并通过 setString 方法将字符串参数设置到占位符上。这里的 setString 方法会自动对字符串进行转义处理,确保插入到数据库的字符串是安全的。\n\n最后,调用 executeUpdate 方法执行插入操作,并获取受影响的行数。\n\n需要注意的是,上述示例中的数据库连接信息、SQL 语句和参数仅供参考,实际使用时需要根据实际情况进行修改。同时,建议使用连接池来管理数据库连接,以提高性能和资源利用率。
原文地址: https://www.cveoy.top/t/topic/p3gV 著作权归作者所有。请勿转载和采集!