[英]Standalone PC application connecting to Android sqllitedatabase
我在一個項目中工作,到目前為止,我有一個帶有sqlite db的android應用程序,一個在我的android系統中運行的網絡服務器,一個也在我的設備中運行的php應用程序。
所以,我的問題是..因為有一個內部Web服務器(lighttp),所以可以使用任何PC Web瀏覽器訪問我的PHP應用程序。
但是,我的客戶說我們不想使用這種方法,而是希望有一個能夠連接到我的設備,讀取數據庫並生成報告的獨立應用程序。
我是一個非常過時的家伙..你們建議實施什么? 我可以用Java編寫軟件並生成報告,但不確定如何連接到設備數據庫。
設備使用的IP可用於連接(ping操作沒有問題)。
你們推薦什么?
好吧,看到您的客戶端不想使用預建的Web服務器,您可以使用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服務器。
不要忘記打開在系統防火牆中選擇的端口! 如果您希望路由器可公開連接,請當心,但要注意不要邀請來賓連接到您的網絡!
可以使用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
這是另一篇相關文章,可能會有所幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.