2014-02-27 12 views
0

我正在使用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數據類型是不合適的。請讓我知道如何將可能包含逗號和句點的多行文本添加到列中。

謝謝你的時間和協助。高度欣賞它。

+0

我不知道「blurb文本」應該是什麼,但對於字符數據,使用'text'數據類型(或'varchar')。 –

+0

我的歉意。我應該更清楚。我的意思是一段「文本段落」,可能包含逗號和其他特殊字符。我嘗試使用文本數據類型,但是當我在java中將值設置爲字符串以形成sql語句時,由於文本中的逗號,它給了我一個錯誤。由於文本中有逗號,postgresql將其讀取爲更多參數,而不是一個大的字符串。我希望這是有道理的。 – user2820488

+3

我的猜測是你沒有使用準備好的語句。你應該。 http://docs.oracle.com/javase/tutorial/jdbc/basics/prepared.html。如果您已經在使用準備好的語句,那麼請顯示您的代碼。數據類型不是問題。你的代碼是。 –

回答

相關問題