簡體   English   中英

連接到Android sqllitedatabase的獨立PC應用程序

[英]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中創建Socket連接?

可以使用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

這是另一篇相關文章,可能會有所幫助。

在android應用程序中從Sqlite數據庫讀取數據。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM