如何将Android手机同步到同一网络中的数据库?

时间:2012-01-19 11:47:02

标签: android

我想为Android手机创建一个应用程序,我想知道它是否可行或应该如何做到这一点:

在一个充当服务器的个人电脑的wifi区域,带有这个应用程序的Android手机(连接到相同的ap)应该能够访问驻留在PC上的数据库(之前已经完成了身份验证)。然后,从数据库中获取所需的所有信息。

它不是一直向服务器请求请求,而是每次应用程序启动时都可以下载并复制到手机上并登录到服务器(这个数据库副本不应该太大)。

同样,手机可以向服务器发送消息,并根据提出的请求获得响应。

在服务器端应该做什么?什么数据库或数据库应该更适合每种情况?,哪种协议最适合这项工作......

我对此非常感激,我需要你能给予的所有帮助。

2 个答案:

答案 0 :(得分:0)

final class ThRegister implements Runnable {
    Context context = null;

    public void setContext(Context ctxt) {
        context = ctxt;
    }

    @Override
    public void run() {
        NRSynchronizer synchronizer = new NRSynchronizer();
        synchronizer.setContext(getApplicationContext());
        synchronizer.regsiterClient();

    }
}

按钮点击监听器进行任何操作,执行以下操作

ThRegister synchThread = new ThRegister();
            synchThread.setContext(getApplicationContext());
            Thread threadSynh = new Thread(synchThread);
            threadSynh.start();

答案 1 :(得分:0)

final class ThSynchronizer implements Runnable {
    Context context = null;

    public void setContext(Context ctxt) {
        context = ctxt;
    }

    @Override
    public void run() {
        NRSynchronizer synchronizer = new NRSynchronizer();

        synchronizer.processIBMessages(getApplicationContext());

    }
}

在行动上尝试下面的代码

ThSynchronizer synchThread = new ThSynchronizer();
            synchThread.setContext(getApplicationContext());
            Thread threadSynh = new Thread(synchThread);
            threadSynh.start();

den调用以下函数

public void processIBMessages(Context context) {
    setContext(context);
    getMessagesFromServer(context);
    NRSynchAdapter synchAdapter = new NRSynchAdapter (context);
    synchAdapter.open();
    Cursor cursor = synchAdapter.fetchAllIBMessage();
    int rowCount = cursor.getCount();
    if (rowCount>0){
        cursor.moveToFirst();
    }

    for (int i = 0; i < rowCount; i++) {
        String content  = null; // based on message type may need to call getMessageContent(also)
        if (cursor.getColumnIndex("content") != -1) {
            content =  cursor.getString(cursor
                    .getColumnIndex("content"));

        }       
        String headers  = null;
        if (cursor.getColumnIndex("headers") != -1) {
            headers =  cursor.getString(cursor
                    .getColumnIndex("headers"));
        }
        if((headers != null)&&(!headers.trim().isEmpty()&&(content!=null)&&(!content.trim().isEmpty()))){
            handleIBMessage(context, headers,content);
            long rowId = cursor.getLong(cursor
                    .getColumnIndex("_id"));
            synchAdapter.deleteInboxMsg(rowId);
        }

        cursor.moveToNext();
    }
    synchAdapter.close();           
    return;
}