我可以使用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)
答案 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;插入方法