如何在PostgreSQL中添加带标点符号的文本块

时间:2014-02-27 20:45:51

标签: java postgresql bigdata

我正在使用java来执行postgresql语句。在一个步骤中,我需要创建一个表,其中一列将存储文本块(可能包含标点符号,如逗号,分号等)。

我使用哪种数据类型来填充此列?

例如,在给定的示例中,我创建了一个名为“MYTHOUGHTS”的表,其中有一个名为“THOUGHTS”的列。我正在尝试以下代码:

try {
        con = DriverManager.getConnection(url, user, password);
        System.out.println("Opened Database Successfully");
        st = con.createStatement();
        String sql = "CREATE TABLE MYTHOUGHTS " + "(ID INT PRIMARY KEY NOT NULL," + " THOUGHTS TEXT NOT NULL," + " Number INT NOT NULL," + " ADDRESS CHAR(50), " + " SALARY REAL)";

        st.executeUpdate(sql);
        sql = "INSERT INTO COMPANY (ID,THOUGHTS,AGE,ADDRESS,SALARY) " + "VALUES (1," + "This is life, as I see it. Do you think otherwise?" + ", 32, 'California', 20000.00 );";
        st.executeUpdate(sql);
        st.close();
        con.close();
    }
    catch (Exception e) {
        e.printStackTrace();
        System.err.println(e.getClass().getName() + ": " + e.getMessage());
        System.exit(0);
    }

我收到以下错误:

org.postgresql.util.PSQLException:错误:“生命”处或附近的语法错误   位置:68     at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2161)     at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1890)     at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:255)     at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:560)     at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:403)     at org.postgresql.jdbc2.AbstractJdbc2Statement.executeUpdate(AbstractJdbc2Statement.java:331)     在com.vivek.PostgreSQLExample.main(PostgreSQLExample.java:39) org.postgresql.util.PSQLException:错误:“生命”处或附近的语法错误   位置:68

TEXT数据类型可能不合适。请告诉我如何在列中添加可能包含逗号和句点的多行文本。

感谢您的时间和帮助。非常感谢它。

1 个答案:

答案 0 :(得分:3)

使用text数据类型。内容无关紧要,唯一不能放入text的是空字节\0

如果您遇到内容问题,那么您正在运行直接字符串插值的危险代码,而不是使用参数化语句。请参阅:http://bobby-tables.com/http://en.wikipedia.org/wiki/SQL_injectionhttp://docs.oracle.com/javase/tutorial/jdbc/basics/