Java 当列数据类型为String时,如何向Resultset中的输出值添加双引号?

Java 当列数据类型为String时,如何向Resultset中的输出值添加双引号?,java,mysql,postgresql,jdbc,Java,Mysql,Postgresql,Jdbc,我正在尝试运行以下查询并将其输出插入另一个表(postgres db): 但是目标表的列: run_id, count_of_issues, count_of_accounted_issues, count_of_entered_issues 是数字格式(用于postgres db),所有其他格式都是varchar(1000) 为了插入varchar数据,我需要将value\u 0到value\u 12的列值用双引号括起来 在没有正确修改数据的情况下,我在插入预期的数据时得到了SQLExcep

我正在尝试运行以下查询并将其输出插入另一个表(postgres db):

但是目标表的列:

run_id, count_of_issues, count_of_accounted_issues, count_of_entered_issues
是数字格式(用于postgres db),所有其他格式都是varchar(1000)

为了插入varchar数据,我需要将value\u 0value\u 12的列值用双引号括起来

在没有正确修改数据的情况下,我在插入预期的数据时得到了SQLException


是否有任何方法可以将结果集中的varchar列值用双引号括起来并插入目标表?

您需要在字符串值中添加双引号;使用转义字符,如下所示:

String quotedStr = "Non Quoted," + " \"Quoted\".";
修改代码以解决此问题:

   while (rs.next()) {
        queryValues = " ";
        int i = 0; 
        for(String colname: columnNames) {

            if(queryValues.isEmpty()) {
                queryValues = rs.getString(colname);
            } else {
            if (i >= 7)
                    queryValues += "\"" + rs.getString(colname) +"\"" + ", ";
            }
            else
                queryValues += rs.getString(colname) + ", ";
            i++;
        }

字符串是否正在转义“\”“不行吗?我不明白。我宁愿使用PreparedStatement,因为没有必要也没有可能的sql注入风险您几乎可以肯定地将SELECT和INSERT组合到一个语句中,而不必担心这些,在任何情况下,您都应该使用准备好的语句,而不是将字符串连接到SQL语句中,这也可以完全消除此问题。我需要将查询的列名更改为目标表中的列名,我将它们命名为“value\u 0,value\u 1,…”基于列索引6后的列数。这很难解释&我在代码中做了那部分。但是,我想不出用引号括起列值的逻辑,正如我在问题中提到的。没有任何东西可以减轻我提出的任何建议的影响。好吧。让我也试试。
String quotedStr = "Non Quoted," + " \"Quoted\".";
   while (rs.next()) {
        queryValues = " ";
        int i = 0; 
        for(String colname: columnNames) {

            if(queryValues.isEmpty()) {
                queryValues = rs.getString(colname);
            } else {
            if (i >= 7)
                    queryValues += "\"" + rs.getString(colname) +"\"" + ", ";
            }
            else
                queryValues += rs.getString(colname) + ", ";
            i++;
        }