如何制作使用笔记本电脑作为服务器的Android SQLite数据库?

时间:2015-08-18 22:42:39

标签: android database sqlite

我目前在我的代码中有一个DatabaseHelper类(扩展SQLiteOpenHelper),它创建一个表并在其中插入值。然而,问题是我的应用程序将存储各种用户的数据,用户可以访问这些数据 - 所以这样做意味着如果(例如)我在我的应用程序中在一台设备上注册了一个帐户,该帐户就不会t存在于任何其他设备上(因为数据库存储在操作系统本身中)。

目前,我想将笔记本电脑用作数据库的服务器,以便我可以使用任何Android设备登录同一帐户。我在我的桌面上安装了sqlite,但我没有GUI或任何东西(我真的不确定如何使用它)。我已经有了在代码中创建表/插入数据等的逻辑 - 是否可以保留此代码但是将数据存储在我的笔记本电脑上的某个位置?

这是我目前的代码:

public class DatabaseHelper extends SQLiteOpenHelper {
public static final String DATABASE_NAME = "Accounts";
public static final String TABLE_NAME = "account_table";
public static final String COL_1 = "ID";
public static final String COL_2 = "USERNAME";
public static final String COL_3 = "EMAIL";
public static final String COL_4 = "PASSWORD";

public DatabaseHelper(Context context) {
    super(context, DATABASE_NAME, null, 1);
}

@Override
public void onCreate(SQLiteDatabase db) {
    db.execSQL("create table " + TABLE_NAME + "(ID INTEGER PRIMARY KEY AUTOINCREMENT, USERNAME TEXT, EMAIL TEXT, PASSWORD TEXT)");
}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    db.execSQL("DROP TABLE IF EXISTS "+ TABLE_NAME);
    onCreate(db);
}

public boolean insertData(String username, String emailAddress, String password) {
    SQLiteDatabase  db = this.getWritableDatabase();
    ContentValues cv = new ContentValues();
    cv.put(COL_2, username);
    cv.put(COL_3, emailAddress);
    cv.put(COL_4, password);
    long result = db.insert(TABLE_NAME, null, cv);
    return (result != -1);
}

public int Login(String username,String password)
{
    String[] selectionArgs = new String[]{username, password};
    try
    {
        int i = 0;
        Cursor c = null;
        SQLiteDatabase db = this.getReadableDatabase();
        c = db.rawQuery("select * from " +  TABLE_NAME + " where username=? and password=?", selectionArgs);
        c.moveToFirst();
        i = c.getCount();
        c.close();
        return i;
    }
    catch(Exception e)
    {
        e.printStackTrace();
    }
    return 0;
  }
}

提前感谢您的任何见解!

1 个答案:

答案 0 :(得分:1)

  

是否可以保留此代码,但将数据存储在笔记本电脑的某处?

不直接。该代码用于使用Android的SQLite类写入本地SQLite数据库。

SQLite不是服务器。您在笔记本电脑上安装SQLite的事实是不够的,因为只有坐在该笔记本电脑上的人才能访问它。您需要在Android设备和笔记本之间建立某种通信,例如在笔记本电脑上实现Web服务。用于与该Web服务(或其他)进行通信的方法将导致不同的代码。

你能做的是:

  • 使用现有代码在本地存储数据,并使用一些单独的同步机制将数据传输到笔记本(例如,通过Web服务),或

  • 切换到某种自动处理此类同步的数据库(例如,Couchbase Mobile)