【发布时间】:2016-08-03 10:53:57
【问题描述】:
我可以使用 ContentProvider 将一个应用程序数据库的数据显示到另一个应用程序。它工作正常。但我需要将相同的值插入到第二个应用程序的数据库中。我该怎么做? 下面是显示数据的代码sn-p。
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)
【问题讨论】:
-
这不是很明显吗?在 while 循环中调用
insertData... 对其进行一点优化,最好在事务中执行此操作 -
嘿@Selvin 我已经完成了,但它抛出了 nullpointerexception。
标签: android android-sqlite android-contentprovider