2016-09-23 116 views
2

我在嘗試通過Java EE Web應用程序中的JDBC連接到PostgreSQL數據庫時遇到問題。我將展示的相同代碼作品NetbeansEclipse,但不在IntelliJ上。Java EE - 無法通過JDBC連接到數據庫IntelliJ

我的Java EE應用程序有以下的servlet:

PrintWriter writer = response.getWriter(); 
writer.println("<!DOCTYPE HTML>"); 
writer.println("<html>"); 
writer.println("<body>"); 
writer.println("<h1>TEST H1</h1>"); 
writer.println("<ul>"); 
writer.println("<li>TESTE LI</li>"); 
writer.println("<p>" + ConexaoBD.getName() + "</p>"); 
writer.println("</ul>"); 
writer.println("</body>"); 
writer.println("</html>"); 

在這裏我想提出一個鏈接到一個名爲「ConexaoBD」類,與getName()方法,從一個數據庫表(只返回一個字符串去測試)。

這裏是我的方法getName()。它適用於控制檯應用程序,但不適用於Java EE。

Connection con = null; 
Class.forName("org.postgresql.Driver"); 
Properties props = new Properties(); 
String url = "jdbc:postgresql://localhost/customers"; 
props.setProperty("user","postgres"); 
props.setProperty("password","pass"); 
props.setProperty("ssl","true"); 
con = DriverManager.getConnection(url, props); 
Statement st = con.createStatement(); 
ResultSet rs = st.executeQuery("select * from table limit 1"); 
return rs.getString(2); 
+0

請問您可以發佈完整的堆棧跟蹤嗎? –

回答

0

這不是在Java EE應用程序中連接到數據庫的方式。

通常情況下,你將有代碼看起來像:

public class SomeService { 

     @Resource(name="java:global/jdbc/myDataSource") 
     private DataSource ds; 

     public String performSomeQuery(...) { 

      try (Connection con = ds.getConnection(); 
       Statement st = con.createStatement()) { 
       ResultSet rs = st.executeQuery("select * from table limit 1"); 
       return rs.getString(2); 
      } 

     } 

} 

name="java:global/jdbc/myDataSource"數據源是在你的應用服務器根據其文檔配置。該配置將包含諸如JDBC URL和認證信息之類的內容。

+0

我不知道!謝謝你,當然會在我的項目上嘗試這個。 –

0

你能發佈錯誤堆棧跟蹤嗎?同時檢查驅動程序jar是否被正確添加到類路徑(Lib文件夾)中。

+0

是的,這是這樣的。 我已經在外部庫文件夾中有.jar,但是我需要將它放在WEB-INF - > lib文件夾中,因爲我的servlet沒有識別我的jdbc連接的驅動程序。 現在解決了。 –

相關問題