2014-01-26 55 views
0

enter image description hereenter image description here 您好 我正在從數據庫中獲取數據的簡單程序。數據庫。我正在使用mysql。 我也插入mysql的conector jar。我可以這樣做 import java.sql。*;如何刪除這個bug,同時使jdbc簡單的程序

![public class FirstExample { 
    // JDBC driver name and database URL 
    static final String JDBC_DRIVER = "com.mysql.jdbc.Driver"; 
    static final String DB_URL = "jdbc:mysql://localhost/Database"; 

    // Database credentials 
    static final String USER = ""; 
    static final String PASS = ""; 

    public static void main(String\[\] args) { 
    Connection conn = null; 
    Statement stmt = null; 
    try{ 
     //STEP 2: Register JDBC driver 
     Class.forName("com.mysql.jdbc.Driver"); 

     //STEP 3: Open a connection 
     System.out.println("Connecting to database..."); 
     conn = DriverManager.getConnection(DB_URL,USER,PASS); 

     //STEP 4: Execute a query 
     System.out.println("Creating statement..."); 
     stmt = conn.createStatement(); 
     String sql; 
     sql = "SELECT id, name, age FROM Employee"; 
     ResultSet rs = stmt.executeQuery(sql); 

     //STEP 5: Extract data from result set 
     while(rs.next()){ 
     //Retrieve by column name 
     int id = rs.getInt("id"); 
     int age = rs.getInt("age"); 
     String first = rs.getString("name"); 
     // String last = rs.getString("last"); 

     //Display values 
     System.out.print("ID: " + id); 
     System.out.print(", Age: " + age); 
     System.out.print(", First: " + first); 
    // System.out.println(", Last: " + last); 
     } 
     //STEP 6: Clean-up environment 
     rs.close(); 
     stmt.close(); 
     conn.close(); 
    }catch(SQLException se){ 
     //Handle errors for JDBC 
     se.printStackTrace(); 
    }catch(Exception e){ 
     //Handle errors for Class.forName 
     e.printStackTrace(); 
    }finally{ 
     //finally block used to close resources 
     try{ 
     if(stmt!=null) 
      stmt.close(); 
     }catch(SQLException se2){ 
     }// nothing we can do 
     try{ 
     if(conn!=null) 
      conn.close(); 
     }catch(SQLException se){ 
     se.printStackTrace(); 
     }//end finally try 
    }//end try 
    System.out.println("Goodbye!"); 
}//end main 
}//end FirstExample][3] 





Connecting to database... 
Goodbye! 
java.sql.SQLException: null, message from server: "Host '192.168.1.100' is not allowed to connect to this MySQL server" 
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1086) 
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:989) 
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:975) 
    at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1114) 
    at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2493) 
    at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2526) 
    at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2311) 
    at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:834) 
    at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:47) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) 
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) 
    at java.lang.reflect.Constructor.newInstance(Constructor.java:513) 
    at com.mysql.jdbc.Util.handleNewInstance(Util.java:411) 
    at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:416) 
    at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:347) 
    at java.sql.DriverManager.getConnection(DriverManager.java:582) 
    at java.sql.DriverManager.getConnection(DriverManager.java:185) 
    at FirstExample.main(FirstExample.java:21) 
+3

您尚未在您的MySQL服務器上設置權限。 –

+0

@SotiriosDelimanolis如果您將您的評論轉換爲答案,我會加註。 –

+0

如何設置權限 – user2648752

回答

2

您的數據庫用戶不允許連接到您的MySQL服務器。在MySQL中(奇怪的是)有一些像防火牆一樣的東西,並且每個用戶都爲每個用戶定義訪問權限。你需要通過任何SQL客戶端連接到MySQL和授予訪問權限:

http://dev.mysql.com/doc/refman/5.1/en/adding-users.html

例如有點過於寬泛的訪問,但應該工作:

GRANT ALL PRIVILEGES ON *.* TO 'monty'@'%' WITH GRANT OPTION; 

如果沒有先創建一個用戶:

CREATE USER 'monty'@'localhost' IDENTIFIED BY 'some_pass'; 
+0

爲什麼你複製和粘貼來自另一個線程的答案,而是將鏈接作爲評論。 –

+0

一般程序是:以root身份登錄到mysql,創建數據庫,創建應用程序用戶並授予他權限,授予連接到您的MySQL服務器主機。完成。 –

+0

@javaseeker什麼線程?鏈接到它,如果你有它 –