连接到Android sqllitedatase的独立PC应用程序


Standalone PC application connecting to Android sqllitedatabase

我在一个项目中工作,到目前为止,我有一个android应用程序,一个sqlite数据库,一个web服务器运行在我的android和一个php应用程序也在我的设备。

所以,我的问题是……我的PHP应用程序可以使用任何PC web浏览器访问,因为有一个内部web服务器(lighttp)。

然而,我的客户说,我们不想使用这种方法,更喜欢有一个独立的应用程序,能够连接到我的设备,读取数据库和生成报告。

我是一个很落伍的人。你们有什么建议吗?我可以用java编写软件并生成报告,但我不确定如何连接到设备数据库。

设备使用的IP可以连接(ping正常)。

你们推荐什么?

嗯,看到你的客户端不想使用预构建的web服务器,你可以用php创建一个服务器来处理你的android应用程序的请求。

PHP提供对安全TLS Socket连接的支持。

这是来自网站的示例服务器代码。我建议安装php7,如果你还没有安装它,我不确定你可以运行服务器代码没有它。

#!/usr/local/bin/php -q
<?php
error_reporting(E_ALL);
/* Allow the script to hang around waiting for connections. */
set_time_limit(0);
/* Turn on implicit output flushing so we see what we're getting
 * as it comes in. */
ob_implicit_flush();
$address = '192.168.1.53'; // Your IP
$port = 10000; // Your Port
if (($sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP)) === false) {
echo "socket_create() failed: reason: " . 
socket_strerror(socket_last_error()) . "'n";
}
if (socket_bind($sock, $address, $port) === false) {
echo "socket_bind() failed: reason: " . 
socket_strerror(socket_last_error($sock)) . "'n";
}
if (socket_listen($sock, 5) === false) {
echo "socket_listen() failed: reason: " . 
socket_strerror(socket_last_error($sock)) . "'n";
}
do {
if (($msgsock = socket_accept($sock)) === false) {
    echo "socket_accept() failed: reason: " . 
socket_strerror(socket_last_error($sock)) . "'n";
    break;
}
/* Send instructions. */
$msg = "'nWelcome to the PHP Test Server. 'n" .
    "To quit, type 'quit'. To shut down the server type 'shutdown'.'n";
socket_write($msgsock, $msg, strlen($msg));
 do {
     if (false === ($buf = socket_read($msgsock, 2048, PHP_NORMAL_READ))) {
         echo "socket_read() failed: reason:" .                             
         socket_strerror(socket_last_error($msgsock)) . "'n";
         break 2;
    }
    if (!$buf = trim($buf)) {
        continue;
    }
    if ($buf == 'quit') {
        break;
    }
    if ($buf == 'shutdown') {
        socket_close($msgsock);
        break 2;
    }
    $talkback = "PHP: You said '$buf'.'n";
    socket_write($msgsock, $talkback, strlen($talkback));
    echo "$buf'n";
} while (true);
socket_close($msgsock);
} while (true);
socket_close($sock);
?>

链接到PHP套接字示例:http://php.net/manual/en/sockets.examples.php

你也可以使用这篇文章中的答案来连接你的android设备到你正在运行的php服务器。

不要忘记打开您在系统防火墙中选择的端口!在你的路由器中,如果你想让它公开连接,但要小心不请自来的客人连接到你的网络!

如何在Android中创建Socket连接?

对Android设备内部数据库的读写可以通过Android SDK内置的SQLiteOpenHelper和sqliteddatabase类来实现。

参见Android Documentation: https://developer.android.com/reference/android/database/sqlite/SQLiteOpenHelper.html

这是一个非常有用的教程,用于读取和写入设备中的sqlite数据库。本教程使用了我上面提到的类。这应该足以让您开始操作客户端数据,而无需使用lighttp服务器或php代码:http://www.vogella.com/tutorials/AndroidSQLite/article.html#tutorial-using-sqlite

这是另一篇相关的文章,可能会有所帮助。

android应用程序从Sqlite数据库读取数据