java - 如何为 SQL 插入转义单引号...当要插入的字符串在用户生成的变量中时

标签 java sql jdbc

我正在构建一个插入命令以使用 jdbc 执行。其中一部分是连接用户生成的字符串......这一切都有效,直到用户使用这样的字符串:

a'bcd

String userString="a'bcd";
String insertTableSQL = "INSERT INTO myTable "
                            + "(insertColumn) " 
                            + "VALUES("
                                +"'"+userString+"'"
                                +")";

statement.executeUpdate(insertTableSQL);

最佳答案

您可以执行以下任一操作:

  1. 使用 PreparedStatement 类。 (推荐)

    String userString="a'bcd";
    String myStatement = " INSERT INTO MYTABLE (INSERTCOLUMN) VALUES (?)";
    PreparedStatement statement= con.prepareStatement   (myStatement );
    statement.setString(1,userString);
    statement.executeUpdate();
    
  2. 转义单引号。

    在 SQL 中,单引号将通过使用双单引号进行转义。 ' --> ''

    String userString="a'bcd";
    String changedUserString = userString.replace("'","''");
            //changedUserString  = a''bcd
    String insertTableSQL = "INSERT INTO myTable (insertColumn) VALUES("
                            +" '"+changedUserString +"' )";
    

关于java - 如何为 SQL 插入转义单引号...当要插入的字符串在用户生成的变量中时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26331524/

相关文章:

database - 在命令行上暂停 weblogic 数据源

java - 使用 adt 20 在 Android 应用程序中集成外部 jar 文件

java - TreeSet of String 对我来说不合逻辑

使用 Cassandra 进行 Java Spark 流处理

sql - 如何在SQL中获取具有相同id的列的总和?

java - 如何通过其他计算机的桌面应用程序访问存储在不同计算机上的oracle数据库

java - 使用 JOOQ 将小数秒保存为数据库中的 TIME 数据类型

java - 使用 "requesLocationUpdates()"时出现一些错误

php - 如何在 PHP 中从循环中删除多个复选框

sql - 如何覆盖 SQLite 文件的内容