我正在使用java來執行postgresql語句。在一個步驟中,我需要創建一個表格,其中一列將存儲文本塊(可能包含標點符號,如逗號,分號等)。如何在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 的組織。 postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2161) 在org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1890) 在org.postgresql.core.v3.QueryExecutorImpl.execute( QueryExecutorImpl.java:255) at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:560) 在org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:403) 在org.postgresql.jdbc2.AbstractJdbc2Statement.executeUpdate(AbstractJdbc2Statement.java:331) 在com.vivek.PostgreSQLExample.main(PostgreSQLExample.java: 39) org.postgresql.util.PSQLException:錯誤:在語法錯誤或接近「生命」 位置:68
可能的是,TEXT數據類型是不合適的。請讓我知道如何將可能包含逗號和句點的多行文本添加到列中。
謝謝你的時間和協助。高度欣賞它。
我不知道「blurb文本」應該是什麼,但對於字符數據,使用'text'數據類型(或'varchar')。 –
我的歉意。我應該更清楚。我的意思是一段「文本段落」,可能包含逗號和其他特殊字符。我嘗試使用文本數據類型,但是當我在java中將值設置爲字符串以形成sql語句時,由於文本中的逗號,它給了我一個錯誤。由於文本中有逗號,postgresql將其讀取爲更多參數,而不是一個大的字符串。我希望這是有道理的。 – user2820488
我的猜測是你沒有使用準備好的語句。你應該。 http://docs.oracle.com/javase/tutorial/jdbc/basics/prepared.html。如果您已經在使用準備好的語句,那麼請顯示您的代碼。數據類型不是問題。你的代碼是。 –