2010-11-04 95 views
2

SQL語句不是executedcom.mysql.jdbc.CommunicationsException:通信鏈路>故障是由於底層異常:錯誤,同時嘗試運行的executeQuery /預處理語句()

** BEGIN嵌套異常**

java.net.ConnectException消息: 連接被拒絕

堆棧跟蹤:

java.net.ConnectException:連接 不肯在 java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:310) java.net.PlainSocketImpl.socketConnect(本地 法)以 java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:176) 在 java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:163) 在 java.net.SocksSocketImpl.connect(SocksSocketImpl.java:384) 在 java.net.Socket.connect(Socket.java:546) at java.net.Socket.connect(Socket.java:495) at java.net.Socket。(Socket.java:392) 在 java.net.Socket中。(Socket.java:235) 在 com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:256) 在 com.mysql.jdbc.MysqlIO。(MysqlIO.java :271) 在 com.mysql.jdbc.Connection.createNewIO(Connection.java:2771) 在 com.mysql.jdbc.Connection(Connection.java:1555) 在 com.mysql.jdbc.NonRegisteringDriver。 .connect(NonRegisteringDriver.java:285) at java.sql.DriverManager.getConnection(DriverManager.java:620) at java.sql.DriverManager.getConnection(DriverManager.java:200) 在 org.jtdemo.preparedst.main(preparedst.java:18)

** END嵌套異常**

發送到服務器的最後的分組爲1 毫秒前。在 com.mysql.jdbc.Connection.createNewIO(Connection.java:2847) 在 com.mysql.jdbc.Connection。(Connection.java:1555) 在 com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver的.java:285) 在 java.sql.DriverManager.getConnection(DriverManager.java:620) 在 java.sql.DriverManager.getConnection(DriverManager.java:200) 在 org.jtdemo.preparedst.main( preparedst.java:18)

我的計劃是


package org.jtdemo; 
import java.sql.*; 
import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.ResultSet; 
import java.sql.Statement; 

public class preparedst 
{ 
//private static final String y = null; 

public static void main(String arg[])throws Exception 
{ 
try 
{ 
    Class.forName("com.mysql.jdbc.Driver"); 
    String url="jdbc:mysql://localhost:3036/mylib_db"; 
    Connection con=DriverManager.getConnection(url,"nikki","dkm007"); 
    String query = " select c.sub_category, b.title,b.author,b.b_key,ta.available_copies" + 
    "from Book_dim b,Category_list c,item_availablity_fact ta" + 
    " where sub_category = 'Mathematics' and " + 
    " c.category_id=b.category_id and " + 
    " b.b_key=ta.b_key " ; 
    /*ps = con.prepareStatement(" select c.sub_category, b.title,b.author,b.b_key,ta.available_copies" + 
    "from Book_dim b,Category_list c,item_availablity_fact ta" + 
    " where sub_category = ? and " + 
    " c.category_id=b.category_id and " + 
    " b.b_key=ta.b_key ");*///pass sql query ,no parameter passing 
    //ps.String(1, "Mathematics"); // set input parameter 
    Statement stmt = con.createStatement(); 
    ResultSet rs = stmt.executeQuery(query) ; 
    while(rs.next()) 
    { 

    String scat = rs.getString(1); 
    String ttl = rs.getString(2); 
    String auth = rs.getString(3); 
    int bkey = rs.getInt(4); 
    int avcop = rs.getInt(5); 
    //String b_key; 
    System.out.println("subcategory:"+scat+"title:"+ttl+"author:"+auth+"bookkey:"+bkey+"availcopies:"+avcop); 

    } 

    con.close(); 
    //ps.close(); 
} 
    catch(Exception e) 
     { 
     System.out.println("SQL statement is not executed"); 
     e.printStackTrace(); 
     } 

    } 
} 

我使用JDK 1.6,使用mysql-connector-java的5.0.8-bin.jar,Eclipse版本:3.5.2。

請幫忙.................

回答

0

它看起來像一個網絡問題。看起來數據庫沒有監聽你要連接的java端口。

我會檢查端口確實正在偵聽(通過netstat),檢查任何防病毒,防火牆,安全程序等。如果這一切都恢復正常,那麼可能重新啓動數據庫程序(myssql)會執行訣竅。

2

異常告訴你這個問題。如果您的連接被拒絕,那麼客戶端或服務器的配置有問題。所以首先要檢查的是JDBC URL。您需要驗證以下內容:

  • 的服務器爲本地主機
  • 服務器的服務端口3036(MySQL的默認端口是3306,所以這可能是你的問題)
  • 你有一個該服務器名爲「mylib_db」
  • 您的用戶名的數據庫是正確
  • 您的密碼是正確的(將來你可能希望使用佔位符文本,如「密碼」)

如果所有信息都是正確的,則需要檢查服務器以確保'nikki'有權通過網絡連接到數據庫。