如何将从一个应用程序的数据库中检索的值插入另一个应用程序?

时间:2016-08-03 10:53:58

标签: android android-sqlite android-contentprovider

我可以使用ContentProvider将一个应用程序数据库的数据显示给另一个应用程序。它正常工作。但我需要在第二个应用程序的数据库中插入相同的值。我该怎么做? 下面是显示数据的代码段。

    public void onLoadFinished(Loader<Cursor> loader, Cursor cursor) {
    cursor.moveToFirst();
    StringBuilder res=new StringBuilder();
    while (!cursor.isAfterLast()) {
        String id=cursor.getString(cursor.getColumnIndex("id"));
        String name=cursor.getString(cursor.getColumnIndex("name"));
        boolean result=dbhelper.insertData(id,name);
        res.append("\n"+id+ "-"+ name);
        cursor.moveToNext();
    }

    resultView.setText(res);

}

这是我插入数据的db类方法。

 public boolean insertData(String id,String name){
    SQLiteDatabase db=this.getWritableDatabase();
    ContentValues values=new ContentValues();
    values.put("id",id);
    values.put("name",name);
    long res=db.insert(TABLE_NAME,null,values);
    if (res==-1){
        return false;
    }else {
        return true;
    }

Logcat是:

       Process: com.canre.backup1, PID: 2953
                                                  java.lang.NullPointerException: Attempt to invoke virtual method 'void android.database.sqlite.SQLiteDatabase.execSQL(java.lang.String)' on a null object reference
                                                 at com.canre.backup1.DatabaseHelper.onCreate(DatabaseHelper.java:25)
                                                 at android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked(SQLiteOpenHelper.java:251)
                                                 at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:163)
                                                 at com.canre.backup1.DatabaseHelper.insertData(DatabaseHelper.java:34)
                                                 at com.canre.backup1.MainActivity.onLoadFinished(MainActivity.java:58)
                                                 at com.canre.backup1.MainActivity.onLoadFinished(MainActivity.java:22)

1 个答案:

答案 0 :(得分:-1)

创建一个在数据库处理程序类中插入数据的方法

  public long insert(String id,String name)
{
    SQLiteDatabase db=getWritableDatabase();
    ContentValues values=new ContentValues();
    values.put("name",name);
    values.put("id",id);
    return db.insert("test",null,values);
}

然后按一个按钮设置数据库中的数据

button_ins.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            long i=hlpr.insert(id,name);
            Toast.makeText(getApplicationContext(),i+": is Inserted",Toast.LENGTH_SHORT).show();

        }
    });

测试 - &gt;班级名称

hlpr - &gt;数据库助手类的对象

插入 - &gt;插入方法