2016-01-21 51 views
1

我在Android中使用Eclipse有點新。我試圖連接我的Android應用程序與SQL服務器數據庫,但始終有一個錯誤。 有人可以幫助我嗎? 謝謝。在Eclipse中的sql錯誤

這是我的代碼:

public class DBConnection { 

    private static DBConnection instance = null; 

    private DBConnection(){} 

    private static final String SERVER = "server"; 
    private static final String INSTANC = "instance"; 
    private static final String BBDD = "db"; 
    private static final String USER = "user"; 
    private static final String PASS = "pass"; 
    private static Connection connection = null; 


    public static DBConnection getInstance(){ 
     if(instance == null){ 
      instance = new DBConnection(); 
     } 
     return instance; 
    } 

    private Connection conectar(){ 
     Connection conn = null; 
     String connString; 
     try { 
      Class.forName("net.sourceforge.jtds.jdbc.Driver"); 
      connString = "jdbc:jtds:sqlserver://" + SERVER + ";" 
        + "instance=" + INSTANC + ";" 
        + "databaseName=" + BBDD + ";" 
        + "user=" + USER + ";" 
        + "password=" + PASS + ";"; 
      conn = DriverManager.getConnection(connString); 

     } catch (SQLException e) { 
      e.printStackTrace(); 
     } catch (ClassNotFoundException e) { 
      e.printStackTrace(); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
     return conn; 
    } 

    public Connection getConnection(){ 
     if(connection == null){ 
      connection = conectar(); 
     } 
     return connection; 
    } 

    public static ResultSet devuelveResultSet(String query){ 

     ResultSet result=null; 
     try { 
      Statement statement= connection.createStatement(); 
      result=statement.executeQuery(query); 
     } catch (SQLException e){ 
      e.printStackTrace(); 
     } 
     return result; 

    } 


} 

這是我的錯誤的軌跡:

01-21 09:48:28.908: E/AndroidRuntime(2178): FATAL EXCEPTION: main 
01-21 09:48:28.908: E/AndroidRuntime(2178): java.lang.NoSuchMethodError: java.lang.String.isEmpty 
01-21 09:48:28.908: E/AndroidRuntime(2178):  at net.sourceforge.jtds.jdbc.SharedSocket.createSocketForJDBC3(SharedSocket.java:282) 
01-21 09:48:28.908: E/AndroidRuntime(2178):  at net.sourceforge.jtds.jdbc.SharedSocket.<init>(SharedSocket.java:251) 
01-21 09:48:28.908: E/AndroidRuntime(2178):  at net.sourceforge.jtds.jdbc.JtdsConnection.<init>(JtdsConnection.java:331) 
01-21 09:48:28.908: E/AndroidRuntime(2178):  at net.sourceforge.jtds.jdbc.Driver.connect(Driver.java:184) 
01-21 09:48:28.908: E/AndroidRuntime(2178):  at java.sql.DriverManager.getConnection(DriverManager.java:191) 
01-21 09:48:28.908: E/AndroidRuntime(2178):  at java.sql.DriverManager.getConnection(DriverManager.java:154) 
01-21 09:48:28.908: E/AndroidRuntime(2178):  at sql.DBConnection.conectar(DBConnection.java:43) 
01-21 09:48:28.908: E/AndroidRuntime(2178):  at sql.DBConnection.getConnection(DBConnection.java:57) 
01-21 09:48:28.908: E/AndroidRuntime(2178):  at com.engineering.ecg.ListinTelefonico.onCreate(ListinTelefonico.java:39) 
01-21 09:48:28.908: E/AndroidRuntime(2178):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
01-21 09:48:28.908: E/AndroidRuntime(2178):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627) 
01-21 09:48:28.908: E/AndroidRuntime(2178):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679) 
01-21 09:48:28.908: E/AndroidRuntime(2178):  at android.app.ActivityThread.access$2300(ActivityThread.java:125) 
01-21 09:48:28.908: E/AndroidRuntime(2178):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033) 
01-21 09:48:28.908: E/AndroidRuntime(2178):  at android.os.Handler.dispatchMessage(Handler.java:99) 
01-21 09:48:28.908: E/AndroidRuntime(2178):  at android.os.Looper.loop(Looper.java:123) 
01-21 09:48:28.908: E/AndroidRuntime(2178):  at android.app.ActivityThread.main(ActivityThread.java:4627) 
01-21 09:48:28.908: E/AndroidRuntime(2178):  at java.lang.reflect.Method.invokeNative(Native Method) 
01-21 09:48:28.908: E/AndroidRuntime(2178):  at java.lang.reflect.Method.invoke(Method.java:521) 
01-21 09:48:28.908: E/AndroidRuntime(2178):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 
01-21 09:48:28.908: E/AndroidRuntime(2178):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 
01-21 09:48:28.908: E/AndroidRuntime(2178):  at dalvik.system.NativeStart.main(Native Method) 

謝謝youuuuu

+0

可以發佈完整的類嗎? –

+0

我已經發布了這個類 –

回答

0

這個問題似乎是在數據庫服務器端。 試試這樣說:

public Connection getConnection() throws SQLException { 

    Connection conn = null; 
    Properties connectionProps = new Properties(); 
    connectionProps.put("user", this.userName); 
    connectionProps.put("password", this.password); 

    if (this.dbms.equals("mysql")) { 
     conn = DriverManager.getConnection(
       "jdbc:" + this.dbms + "://" + 
       this.serverName + 
       ":" + this.portNumber + "/", 
       connectionProps); 
    } else if (this.dbms.equals("derby")) { 
     conn = DriverManager.getConnection(
       "jdbc:" + this.dbms + ":" + 
       this.dbName + 
       ";create=true", 
       connectionProps); 
    } 
    System.out.println("Connected to database"); 
    return conn; 
} 

如果這不起作用,請張貼類的其餘部分。 有關DB在Java中的更多信息,請訪問:JDBC Oracle

+0

我已經閱讀了答案,但是我的連接是SqlServer,並且在你的答案中不是sqlserver的一部分,只適用於mysql o derby ... –