2010-01-03 131 views
0

我想從jsp頁面連接到mysql數據庫。該 連接代碼如下與MySQL連接錯誤

InitialContext ic=new InitialContext(); 
    DataSource ds=(DataSource)ic.lookup("jdbc:mysql://localhost:3306/"); 
    Connection con=ds.getConnection(); 
    Statement stmt = con.createStatement(); 

當我打開網頁,我收到以下錯誤 javax.servlet.ServletException:javax.naming.NamingException中:查找 失敗「的jdbc:mysql的://本地主機: 3306 /」在SerialContext [根 例外是javax.naming.NameNotFoundException:JDBC:MySQL的:]

可以有一個人請告訴我什麼是錯這個......

+0

同學:http://stackoverflow.com/questions/1994073/glassfish-error – BalusC 2010-01-03 13:39:24

回答

2

你試圖查找使用JNDI的持久連接。 JNDI用於存儲和訪問servlet容器中的資源,但是您使用JDBC連接字符串而不是JNDI引用。

如果你想通過頁面中的JDBC直接連接到你的數據庫,你需要類似下面的東西來獲得你的連接。

 Connection conn = null; 

     try { 
      String userName = "myuser"; 
      String password = "mypassword"; 
      String url = "jdbc:mysql://localhost:3306/mydb"; 
      Class.forName ("com.mysql.jdbc.Driver").newInstance(); 
      conn = DriverManager.getConnection (url, userName, password); 
     } catch (Exception e) { 
      System.err.println ("Cannot connect to database server"); 
     } 

如果你想使用JNDI另一方面,你需要首先在JNDI中存儲的連接,然後通過你用來存儲它的名稱訪問它,在你的JSP。這是一個更復雜的過程,所以這裏有一個解釋如何做的link to the appropriate place in the Tomcat documentation

1

在最簡單的情況下,你這樣做:

Class.forName(driverClass); 
Connection connection = DriverManager.getConnection(
    "jdbc:mysql://localhost:3306/", userName, password); 

如果你想使用的容器定義的連接池,並且使用的是Tomcat,看看this page

一點題外話,我不建議連接到.jsp的數據庫。爲此使用一個servlet。 JSP是一種演示技術,不應該有數據庫連接邏輯。