Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/221.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android连接到远程mysql数据库JDBC Vs JSON_Android_Json_Jdbc_Tcp - Fatal编程技术网

Android连接到远程mysql数据库JDBC Vs JSON

Android连接到远程mysql数据库JDBC Vs JSON,android,json,jdbc,tcp,Android,Json,Jdbc,Tcp,我知道JDBC最好与低延迟高带宽连接一起使用。最好使用php服务 事情是我正在开发一个餐厅菜单应用程序,应该从服务器上的数据库中检索数据。使用三星galaxy tab2 7inch作为目标设备,并具有高带宽的稳定无线连接。我的第一次尝试是让java服务器运行在具有db和大量线程的同一台机器上,这些线程将检索数据并通过tcp套接字发送到安卓设备 这个实现在主机和android设备上都导致了高cpu使用率,因为我有很多线程在后台工作 我想尝试一下JDBC,因为环境使我能够使用这种实现。但是到目前为止

我知道JDBC最好与低延迟高带宽连接一起使用。最好使用php服务

事情是我正在开发一个餐厅菜单应用程序,应该从服务器上的数据库中检索数据。使用三星galaxy tab2 7inch作为目标设备,并具有高带宽的稳定无线连接。我的第一次尝试是让java服务器运行在具有db和大量线程的同一台机器上,这些线程将检索数据并通过tcp套接字发送到安卓设备

这个实现在主机和android设备上都导致了高cpu使用率,因为我有很多线程在后台工作

我想尝试一下JDBC,因为环境使我能够使用这种实现。但是到目前为止,连接到DB还没有成功。即使我有android应用程序清单上的互联网权限

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
04-07 15:22:41.222:W/System.err(11318):com.mysql.jdbc.exceptions.jdbc4.Communications异常:通信链路故障
04-07 15:22:41.222:W/System.err(11318):成功发送到服务器的最后一个数据包是0毫秒前的。驱动程序尚未从服务器收到任何数据包。
04-07 15:22:41.238:W/System.err(11318):位于java.lang.reflect.Constructor.constructNative(本机方法)
04-07 15:22:41.238:W/System.err(11318):位于java.lang.reflect.Constructor.newInstance(Constructor.java:417)
04-07 15:22:41.238:W/System.err(11318):位于com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
04-07 15:22:41.238:W/System.err(11318):位于com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1121)
04-07 15:22:41.238:W/System.err(11318):位于com.mysql.jdbc.MysqlIO.(MysqlIO.java:355)
04-07 15:22:41.238:W/System.err(11318):位于com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2479)
04-07 15:22:41.238:W/System.err(11318):位于com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2516)
04-07 15:22:41.245:W/System.err(11318):位于com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2301)
04-07 15:22:41.245:W/System.err(11318):位于com.mysql.jdbc.ConnectionImpl.(ConnectionImpl.java:834)
04-07 15:22:41.245:W/System.err(11318):位于com.mysql.jdbc.JDBC4Connection。(JDBC4Connection.java:47)
04-07 15:22:41.245:W/System.err(11318):位于java.lang.reflect.Constructor.constructNative(本机方法)
04-07 15:22:41.245:W/System.err(11318):位于java.lang.reflect.Constructor.newInstance(Constructor.java:417)
04-07 15:22:41.245:W/System.err(11318):位于com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
04-07 15:22:41.245:W/System.err(11318):位于com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:416)
04-07 15:22:41.245:W/System.err(11318):位于com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:317)
04-07 15:22:41.245:W/System.err(11318):位于java.sql.DriverManager.getConnection(DriverManager.java:175)
04-07 15:22:41.245:W/System.err(11318):位于java.sql.DriverManager.getConnection(DriverManager.java:209)
04-07 15:22:41.245:W/System.err(11318):位于com.example.anndroidjdbc.MainActivity.onCreate(MainActivity.java:23)
04-07 15:22:41.245:W/System.err(11318):位于android.app.Activity.performCreate(Activity.java:4465)
04-07 15:22:41.245:W/System.err(11318):位于android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1053)
04-07 15:22:41.245:W/System.err(11318):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1934)
04-07 15:22:41.245:W/System.err(11318):位于android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1995)
04-07 15:22:41.245:W/System.err(11318):在android.app.ActivityThread.access$600(ActivityThread.java:128)
04-07 15:22:41.245:W/System.err(11318):位于android.app.ActivityThread$H.handleMessage(ActivityThread.java:1161)
04-07 15:22:41.245:W/System.err(11318):位于android.os.Handler.dispatchMessage(Handler.java:99)
04-07 15:22:41.245:W/System.err(11318):位于android.os.Looper.loop(Looper.java:137)
04-07 15:22:41.253:W/System.err(11318):位于android.app.ActivityThread.main(ActivityThread.java:4514)
04-07 15:22:41.253:W/System.err(11318):位于java.lang.reflect.Method.invokenactive(本机方法)
04-07 15:22:41.253:W/System.err(11318):位于java.lang.reflect.Method.invoke(Method.java:511)
04-07 15:22:41.253:W/System.err(11318):位于com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:790)
04-07 15:22:41.253:W/System.err(11318):位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:557)
04-07 15:22:41.253:W/System.err(11318):在dalvik.System.NativeStart.main(本机方法)
04-07 15:22:41.253:W/System.err(11318):原因:java.net.SocketException:android.os.NetworkOnMainThreadException
04-07 15:22:41.253:W/System.err(11318):位于com.mysql.jdbc.StandardSocketFactory.unwapeExceptionTopropertCassandThrowit(StandardSocketFactory.java:410)
04-07 15:22:41.253:W/System.err(11318):位于com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:271)
04-07 15:22:41.253:W/System.err(11318):位于com.mysql.jdbc.MysqlIO.(MysqlIO.java:305)
04-07 15:22:41.253:W/系统错误(11318):。。。还有27个
至于PHP web服务,我真的不知道如何使用或设置它。你们觉得我该怎么办?继续我的第一个实现,或者使用php服务切换到从android设备到mysql db的直接方法


抱歉,这被认为是重复的。我只想听听你对我遇到的问题的看法,如果有人能给我指出一个更好的方法,或者能帮助我解决JDBC的错误,我将不胜感激。

就在昨天,另一个用户问了同样的问题,在这个问题上有一些很好的答案-

至于PHP web服务,我真的不知道