2016-07-20 4 views
1

Я прочитал несколько статей о библиотеке jdts.jar, затем я хочу реализовать его в Android-приложении, уже сделал некоторую кодировку, но мне всегда не удалось подключиться к серверу sql-сервера. Впервые я попытался удаленно использовать браузер Navicat SQL, и я мог бы подключить его, но когда я сделал кодировку для Android, я не смог его подключить. Уже проверенные ip public, имя пользователя, пароль и имя базы данных, они одинаковы с моей кодировкой Android. Вот мой журнал кот:Не удалось удаленному серверу SQL SERVER с помощью jdts

 07-20 16:32:49.270 31447-31447/? E/AndroidRuntime? FATAL EXCEPTION: main 
     java.lang.RuntimeException: Unable to start activity ComponentInfo{com.avian.apps.avian/com.avian.apps.avian.LoginActivity}: android.os.NetworkOnMainThreadException 
     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2186) 
     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2236) 
     at android.app.ActivityThread.access$600(ActivityThread.java:145) 
     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1238) 
     at android.os.Handler.dispatchMessage(Handler.java:99) 
     at android.os.Looper.loop(Looper.java:137) 
     at android.app.ActivityThread.main(ActivityThread.java:5099) 
     at java.lang.reflect.Method.invokeNative(Native Method) 
     at java.lang.reflect.Method.invoke(Method.java:511) 
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:803) 
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:570) 
     at dalvik.system.NativeStart.main(Native Method) 
     Caused by: android.os.NetworkOnMainThreadException 
     at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1118) 
     at libcore.io.BlockGuardOs.connect(BlockGuardOs.java:84) 
     at libcore.io.IoBridge.connectErrno(IoBridge.java:131) 
     at libcore.io.IoBridge.connect(IoBridge.java:116) 
     at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:192) 
     at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:459) 
     at java.net.Socket.connect(Socket.java:847) 
     at net.sourceforge.jtds.jdbc.SharedSocket.createSocketForJDBC3(SharedSocket.java:288) 
     at net.sourceforge.jtds.jdbc.SharedSocket.<init>(SharedSocket.java:251) 
     at net.sourceforge.jtds.jdbc.JtdsConnection.<init>(JtdsConnection.java:331) 
     at net.sourceforge.jtds.jdbc.Driver.connect(Driver.java:184) 
     at java.sql.DriverManager.getConnection(DriverManager.java:175) 
     at java.sql.DriverManager.getConnection(DriverManager.java:209) 
     at com.avian.apps.avian.ConnectionClass.getConnection(ConnectionClass.java:25) 
     at com.avian.apps.avian.LoginActivity.onCreate(LoginActivity.java:36) 
     at android.app.Activity.performCreate(Activity.java:5117) 
     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1081) 
     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2150) 
     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2236) 
     at android.app.ActivityThread.access$600(ActivityThread.java:145) 
     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1238) 
     at android.os.Handler.dispatchMessage(Handler.java:99) 
     at android.os.Looper.loop(Looper.java:137) 
     at android.app.ActivityThread.main(ActivityThread.java:5099) 
     at java.lang.reflect.Method.invokeNative(Native Method) 
     at java.lang.reflect.Method.invoke(Method.java:511) 
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:803) 
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:570) 
     at dalvik.system.NativeStart.main(Native Method) 

и мой ConnectionClass:

 public class ConnectionClass { 
     private Connection connect; 
     private String driverName = "net.sourceforge.jtds.jdbc.Driver"; 
     private String jdbc = "jdbc:jtds:sqlserver://"; 
     private String host = "x.x.x.x:"; // x.x.x.x : server ip public 
     private String port = "1433/"; // Port Default SQLServer 
     private String database = "MOB_APPS"; 
     private String url = jdbc + host + port + database; 
     private String username = "sa"; // username default SQLServer 
     private String password = "admin.123"; 
     public Connection getConnection() throws SQLException { 
     if (connect == null) { 
      try { 
      Class.forName(driverName); 
      try { 
       connect = DriverManager.getConnection(url, username, password); 
       Log.d("Success","notifmessage"); 
      } catch (SQLException se) { 
       Log.d("Failed", "notifmessage"); 
      } 
      } catch (ClassNotFoundException cnfe) { 
      Log.d("Class not found "+cnfe,"notifmessage"); 
      } 
     } 
     return connect; 
     } 
     } 

кто может помочь мне решить эту проблему? Заранее спасибо

ответ

0

Зов это прежде, чем сделать соединение

 Log.i("Android", " MySQL Connect."); 
     StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder() 
       .permitAll().build(); 
     StrictMode.setThreadPolicy(policy); 

См Изменено функцию.

public Connection getConnection() throws SQLException { 
     Log.i("Android", " MySQL Connect."); 
     StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder() 
       .permitAll().build(); 
     StrictMode.setThreadPolicy(policy); 
     if (connect == null) { 
      try { 
       Class.forName(driverName); 
       try { 
        connect = DriverManager.getConnection(url, username, password); 
        Log.d("Success", "notifmessage"); 
       } catch (SQLException se) { 
        Log.d("Failed", "notifmessage"); 
       } 
      } catch (ClassNotFoundException cnfe) { 
       Log.d("Class not found " + cnfe, "notifmessage"); 
      } 
     } 
     return connect; 
    } 

Update:

Мой рабочий код Примечание я использую старую версию баночки jtds 1.2.7 файла, имеющего выпуска с последней версией.

enter image description here

public class DBconnection { 

    public static String User_name = "saxxxx"; 
    public static String User_pass = "xxxxxh"; 
    public static String Db_name = "xxxxx"; 
    static Context mcontext; 
    public static Connection Conn = null; 
    public static String Server_ip = "192.168.5.14:1433;"; 

    public static Connection Getconnection() { 

     Log.i("Android", " MySQL Connect."); 
     StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder() 
       .permitAll().build(); 
     StrictMode.setThreadPolicy(policy); 
     String connString = null; 
     try { 
      Log.i("SQL Looking", "Start Looking for server"); 
      String driver = "net.sourceforge.jtds.jdbc.Driver"; 
      Class.forName(driver).newInstance(); 
      connString = "jdbc:jtds:sqlserver://" + Server_ip 
        + ";databaseName=" + Db_name + ";user=" + User_name 
        + ";password=" + User_pass + ";"; 

      Conn = DriverManager.getConnection(connString); 
      Log.i("Connection", "open DB Class"); 
     } catch (Exception e) { 
      Toast.makeText(mcontext, e.toString() + "db", Toast.LENGTH_LONG) 
        .show(); 
      Log.w("Error connection", e.getMessage()); 

     } 
     return Conn; 
    } 

    public static void close_DB() { 

     try { 
      Conn.close(); 
      Log.i("Connection", "Close DB Class"); 
     } catch (SQLException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
    } 

} 
+0

же результат братан, не удалось –

+0

Теперь проверить, Что LogCat говорит один раз? –

+0

он не сказал строгий режим ошибки снова, но все еще не могу подключиться к серверу, –

Смежные вопросы