2014-10-10 136 views
0

Iam正在寫一個應該與MySQL數據庫進行通信的應用程序。我已經成功將驅動程序類mysql .. *。jar添加到項目中,並且它也已加載。但如果我嘗試到DATABSE我得到以下錯誤的連接:將android連接到SQL時出錯

10-09 21:01:01.626 27334-27334/dd.edope.quizmasters D/libc﹕ [NET] getaddrinfo hostname mysql.1freehosting.com, servname NULL, ai_family 0 

10-09 21:01:01.626 27334-27334/dd.edope.quizmasters W/System.err的:

COM .mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException:無法創建與數據庫服務器的連接。

這裏我的代碼:

private static final String url = "jdbc:mysql://mysql.1freehosting.com/u741539452_quiz"; 
private static final String user = "...."; 
private static final String pass = "...."; 

public void testDB() { 
    TextView tv = (TextView)rootView.findViewById(R.id.question); 
    try { 
     Class.forName("com.mysql.jdbc.Driver"); 
     Connection con = DriverManager.getConnection(url, user, pass); 
    /* System.out.println("Database connection success"); */ 

     String result = "Database connection success\n"; 
     Statement st = con.createStatement(); 
     ResultSet rs = st.executeQuery("select * from Frage"); 
     ResultSetMetaData rsmd = rs.getMetaData(); 

     //while(rs.next()) { 
     // result += rsmd.getColumnName(1) + ": " + rs.getInt(1) + "\n"; 
     // result += rsmd.getColumnName(2) + ": " + rs.getString(2) + "\n"; 
     // result += rsmd.getColumnName(3) + ": " + rs.getString(3) + "\n"; 
     //} 
     tv.setText(result); 
    } 
    catch(Exception e) { 
     e.printStackTrace(); 
     tv.setText(e.toString()); 
    } 

} 

難道是一個錯誤的URL到數據庫?在1freehosting.com的主頁上說主機地址是「mysql.1freehosting.com」,但我不確定它是否是db連接的正確URL。

任何想法處理? 非常感謝。

回答

0

很可能您無法從遠程訪問此數據庫。您只能通過在該服務器上運行的腳本來訪問它。如果是這種情況,你可以創建一個Web服務來進行數據庫查詢。您的應用程序會向該服務發出HTTP請求。

+0

遠程訪問它的原因是什麼?我的假設是,網址到數據庫是錯誤的,但我不知道在哪裏驗證其正確性。 – theAlgorithmGod 2014-10-10 10:55:17

+0

由於安全原因,只能在本地訪問。 – Kai 2014-10-10 11:02:52

0

在Eclipse

創建一個Java項目

創建的軟件包名稱com.example.sql

在您的項目包括mysqlconnector.jar

package com.example.sql; 

import java.sql.DriverManager; 
import java.sql.Connection; 
import java.sql.PreparedStatement; 
import java.sql.ResultSet; 
import java.sql.SQLException; 

public class JDBCExample { 
    public static Connection con; 

    public static void main(String[] argv) { 
     try 
     { 
      connectionQuery(); 

      PreparedStatement statement = con.prepareStatement("SELECT * from table_name");/*write query inside of prepared statement*/ 
      ResultSet result = statement.executeQuery(); 
      System.out.println("DataBase table accessed"); 

      while(result.next()) 
      { 
       String retrievedid= result.getString("Column_name"); 

       System.out.println(retrievedid); 
      } 


      con.close(); 
     } 

     catch(Exception e) 
     { 
      e.printStackTrace(); 
      System.out.println(e.getMessage().toString()); 
     } 
    } 

    public static void connectionQuery() 
    { 
     try 
     { 
      Class.forName("com.mysql.jdbc.Driver"); 
      con = DriverManager.getConnection("jdbc:mysql://localhost:3306/boopathi","root","root"); 
      System.out.println("Remote DB connection established"); 
     } 
     catch (ClassNotFoundException e) 
     { 
      e.printStackTrace(); 
      System.out.println("Remote server could not be connected"); 
     } 
     catch (NullPointerException e) 
     { 
      e.printStackTrace(); 
      System.out.println("Remote server could not be connected"); 
     } 
     catch (SQLException e) 
     { 
      e.printStackTrace(); 
      System.out.println("Remote db connection establishment error"); 
     } 
     catch (Exception e) 
     { 
      e.printStackTrace(); 
      System.out.println("False query"); 
     } 
    } 
} 

以上爲本地接入代碼,如果要訪問以下鏈接

公共服務器使用

Refer this link for get to know how to write a service