2013-04-07 6 views
3

Я знаю, что JDBC лучше всего использовать с подключением с высокой пропускной способностью с низкой задержкой. и лучше использовать службу php.Android-соединение с удаленной базой данных mysql JDBC Vs JSON

Thing разрабатывает приложение меню ресторана, которое должно извлекать данные из базы данных, расположенной на сервере. используя галактику Samsung tab2 7inch в качестве целевого устройства и имеющую стабильное беспроводное соединение с высокой пропускной способностью. Моя первая попытка состояла в том, чтобы иметь java-сервер, работающий на том же компьютере, который имеет db, и имеет много потоков, которые будут извлекать данные и отправлять их для устройства Android через разъем tcp.

Эта реализация привела к высокому использованию процессора как на главной машине, так и на устройстве Android, так как у меня много потоков, работающих в фоновом режиме.

Хотя я даю JDBC попробовать, так как среда позволяет мне использовать такую ​​реализацию. но до сих пор не удалось подключиться к DB.even tho у меня есть разрешение на интернет-приложение Manroid.

public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     try { 
      Class.forName("com.mysql.jdbc.Driver"); 
      this.setTitle("Driver started "); 
      Connection con = (Connection) DriverManager.getConnection("jdbc:mysql://192.168.1.3/cafe", "root", "1234"); 
      this.setTitle("Connected to db"); 
     } catch (ClassNotFoundException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } catch (SQLException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 

    } 

этот код даст мне следующую ошибку

04-07 15:22:41.222: W/System.err(11318): com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure 
04-07 15:22:41.222: W/System.err(11318): The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server. 
04-07 15:22:41.238: W/System.err(11318): at java.lang.reflect.Constructor.constructNative(Native Method) 
04-07 15:22:41.238: W/System.err(11318): at java.lang.reflect.Constructor.newInstance(Constructor.java:417) 
04-07 15:22:41.238: W/System.err(11318): at com.mysql.jdbc.Util.handleNewInstance(Util.java:411) 
04-07 15:22:41.238: W/System.err(11318): at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1121) 
04-07 15:22:41.238: W/System.err(11318): at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:355) 
04-07 15:22:41.238: W/System.err(11318): at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2479) 
04-07 15:22:41.238: W/System.err(11318): at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2516) 
04-07 15:22:41.245: W/System.err(11318): at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2301) 
04-07 15:22:41.245: W/System.err(11318): at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:834) 
04-07 15:22:41.245: W/System.err(11318): at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:47) 
04-07 15:22:41.245: W/System.err(11318): at java.lang.reflect.Constructor.constructNative(Native Method) 
04-07 15:22:41.245: W/System.err(11318): at java.lang.reflect.Constructor.newInstance(Constructor.java:417) 
04-07 15:22:41.245: W/System.err(11318): at com.mysql.jdbc.Util.handleNewInstance(Util.java:411) 
04-07 15:22:41.245: W/System.err(11318): at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:416) 
04-07 15:22:41.245: W/System.err(11318): at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:317) 
04-07 15:22:41.245: W/System.err(11318): at java.sql.DriverManager.getConnection(DriverManager.java:175) 
04-07 15:22:41.245: W/System.err(11318): at java.sql.DriverManager.getConnection(DriverManager.java:209) 
04-07 15:22:41.245: W/System.err(11318): at com.example.anndroidjdbc.MainActivity.onCreate(MainActivity.java:23) 
04-07 15:22:41.245: W/System.err(11318): at android.app.Activity.performCreate(Activity.java:4465) 
04-07 15:22:41.245: W/System.err(11318): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1053) 
04-07 15:22:41.245: W/System.err(11318): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1934) 
04-07 15:22:41.245: W/System.err(11318): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1995) 
04-07 15:22:41.245: W/System.err(11318): at android.app.ActivityThread.access$600(ActivityThread.java:128) 
04-07 15:22:41.245: W/System.err(11318): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1161) 
04-07 15:22:41.245: W/System.err(11318): at android.os.Handler.dispatchMessage(Handler.java:99) 
04-07 15:22:41.245: W/System.err(11318): at android.os.Looper.loop(Looper.java:137) 
04-07 15:22:41.253: W/System.err(11318): at android.app.ActivityThread.main(ActivityThread.java:4514) 
04-07 15:22:41.253: W/System.err(11318): at java.lang.reflect.Method.invokeNative(Native Method) 
04-07 15:22:41.253: W/System.err(11318): at java.lang.reflect.Method.invoke(Method.java:511) 
04-07 15:22:41.253: W/System.err(11318): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:790) 
04-07 15:22:41.253: W/System.err(11318): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:557) 
04-07 15:22:41.253: W/System.err(11318): at dalvik.system.NativeStart.main(Native Method) 
04-07 15:22:41.253: W/System.err(11318): Caused by: java.net.SocketException: android.os.NetworkOnMainThreadException 
04-07 15:22:41.253: W/System.err(11318): at com.mysql.jdbc.StandardSocketFactory.unwrapExceptionToProperClassAndThrowIt(StandardSocketFactory.java:410) 
04-07 15:22:41.253: W/System.err(11318): at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:271) 
04-07 15:22:41.253: W/System.err(11318): at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:305) 
04-07 15:22:41.253: W/System.err(11318): ... 27 more 

Как для PHP веб-сервиса я действительно ничего не знаю, как использовать его или настроить его. что вы, ребята, думаете, что я должен делать? продолжите мою первую реализацию или переключитесь на прямой подход от устройства android к mysql db, используя службу php.

Sorry Это считается дубликатом. я просто хочу, чтобы ваше мнение о проблеме у меня было, и если кто-то может указать мне на лучший подход или может помочь с ошибкой JDBC, я буду благодарен.

ответ

1

только вчера сделал другой пользователь спросить то же самое и есть некоторые хорошие ответы можно найти по этому вопросу - JDBC vs Web Service for Android

Что касается PHP веб-службы я действительно не знаю ничего, как использовать его или настройте его.

Я думаю, вам нужно будет take a 101 on that.

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