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

时间:2016-10-30 07:19:23

标签: java php android report

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

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

但是,我的客户说我们不想使用这种方法,而是希望拥有一个能够连接到我的设备,读取数据库并生成报告的独立应用程序。

我是一个非常过时的家伙..你们有什么建议实施它?我可以用java编写软件并生成报告,但我不知道如何连接到设备数据库。

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

你们推荐什么?

2 个答案:

答案 0 :(得分:0)

好吧,看到您的客户端不想使用预先构建的网络服务器,您可以创建一个带有php的服务器来处理您的Android应用程序的请求。

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

这是网站上的示例服务器代码。 如果您还没有安装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服务器。

不要忘记打开您在系统防火墙中选择的端口!在您的路由器中,如果您希望它可以公开连接,但要注意连接到您网络的不速之客!

how to create Socket connection in Android?

答案 1 :(得分:0)

使用Android SDK中内置的SQLiteOpenHelper和SQLiteDatabase类,可以读取和写入Android设备中的内部数据库。

请参阅Android文档:https://developer.android.com/reference/android/database/sqlite/SQLiteOpenHelper.html

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

这是另一篇可能有用的相关文章。

Reading data from Sqlite Database in android application.