2014-02-13 19 views
0

我有我想从我的Android设备连接到远程MySQL服务器,我测试过上一个普通的Java控制台应用程序代码和它的作品完美的罚款MySQL的使用Java而不是Android的

但是当我在Android模拟器上运行它会抛出SQLException:没有合适的驱动程序。

代码是一样的,MySQL的细节是一样的,我使用了相同的两个人的mysql jar,我真的很无能。

的Android代码:

public class MySQL_handler { 
    Connection con = null; 
    Statement st = null; 
    ResultSet rs = null; 


    String url1,user,password; 


    Thread thread; 
    Runnable runnable; 

    String data = ""; 

    public MySQL_handler() { 
     user = "xx"; 
     password = "xx"; 
     url1 = "xx"; 

    } 

    public String test(){ 
     final CountDownLatch latch = new CountDownLatch(1); 
     runnable = new Runnable() { 

      @Override 
      public void run() { 

       try 
       { 
        Log.v("S", url1); 
        Log.v("S", user); 
        Log.v("S", password); 
        con = DriverManager.getConnection(url1, user, password); 
        st = con.createStatement(); 
        rs = st.executeQuery("SELECT CompName FROM Servers WHERE HostIP = '10.0.0.4'"); 

        if (rs.next()) 
        { 
         Log.v("sqlver",""+ rs.getString(1)); 
         data = rs.getString(1); 
        } 
        else{ 
         Log.v("sqlver","err"); 
        } 

       } 
       catch (SQLException ex) 
       { 
        Log.v("SQLEX", ".."+ex); 

       } 
       finally { 
        try 
        { 
         if (rs != null) 
         { 
          rs.close(); 
         } 
         if (st != null) 
         { 
          st.close(); 
         } 
         if (con != null) 
         { 
          con.close(); 
         } 
         latch.countDown(); 

        } 
        catch (SQLException ex) 
        { 
         Log.v("SQLEX", "..."); 
         latch.countDown(); 
        } 
       } 

      } 
     }; 
     thread = new Thread(runnable); 
     thread.start(); 
     try { 
      latch.await(); 
     } catch (InterruptedException e) { 
      e.printStackTrace(); 
     } 
     return data; 
    } 
} 
+0

请检查您的JAR库中是否存在用于此目的的正确路径(它必须位于项目文件夹内) – nKn

回答

1

尝试之前

Class.forName("here your driver class name"); 

加载驱动程序顺便说一句,我必须提醒你,这是不是在生产的最佳实践,试图打开一个数据库连接从移动设备上下载(但如果是进行学术练习,请继续)

+0

这不是问题。似乎OP通过'DriverManager.getConnection(url1,user,password)获得连接;'因此不需要手动打开连接= \ –

+0

问题是'DriverManager.getConnection'表示处理来自您的java客户端代码的连接:bad在客户端应用程序的想法,因为它会耗尽你的数据库资源与足够的开放客户端。公正的警告! :)然后用您的驱动程序的名称尝试Class.forName;它会让你的代码运行 –

+1

事实上,试图直接连接一个android设备直接与数据库引擎如MySQL是一个坏主意,首先...你应该通过服务层从外部资源,如REST Web服务另一台服务器在PHP,Java或其他平台上运行服务。无论如何,假设jar连接到mysql是在构建路径中,添加此行将使它*工作*。 –

相关问题