用对象传可以吗?public class dbtest { public boolean openOrCreateDBTable(Context context,String databaseName, String tableName) { SQLiteDatabase db = null; boolean err = false;
try { /* open or create Database */ db = context.openOrCreateDatabase(databaseName,Activity.MODE_PRIVATE, null); Log.v("tag", "open or create database success");
/* create table */ String sql = "CREATE TABLE IF NOT EXISTS " + tableName + "(ID INTEGER PRIMARY KEY, FREQUENCY INTEGER NOT NULL);"; db.execSQL(sql); Log.v("tag", "create table success");
db.close(); } catch ( Exception e ) { err = true; Log.v("tag", e.toString()); Log.v("tag", "open or create database/table error"); }
return err; }} package com.TestDb;import android.app.Activity; import android.os.Bundle;public class testDb extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); dbtest dbop = new dbtest(); //Intent in=new Intent(); //startActivity(in); dbop.openOrCreateDBTable(this,"Test.db", "testtable"); } }
我尝试了一下用
dbtest dbop = new dbtest(this);
还是报open or create database/table error
而用Activity.this,编译错误.
Content Provider好象很复杂,郁闷了.
public boolean openOrCreateDBTable(Context context,String databaseName, String tableName) {
SQLiteDatabase db = null;
boolean err = false;
try {
/* open or create Database */
db = context.openOrCreateDatabase(databaseName,Activity.MODE_PRIVATE, null);
Log.v("tag", "open or create database success");
/* create table */
String sql = "CREATE TABLE IF NOT EXISTS " + tableName
+ "(ID INTEGER PRIMARY KEY, FREQUENCY INTEGER NOT NULL);";
db.execSQL(sql);
Log.v("tag", "create table success");
db.close();
}
catch ( Exception e ) {
err = true;
Log.v("tag", e.toString());
Log.v("tag", "open or create database/table error");
}
return err;
}}
package com.TestDb;import android.app.Activity;
import android.os.Bundle;public class testDb extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main); dbtest dbop = new dbtest();
//Intent in=new Intent();
//startActivity(in);
dbop.openOrCreateDBTable(this,"Test.db", "testtable");
}
}
用对象确实可以,但不知道别的intent是否能应用这个数据库
不同的应用好象只能通过Provider接口来访问相同的数据库,要试验一下看看,你这个是否可以共巷数据库
哈,封装成对象可供不同的activity读写数据库,那就没必要用到provider了.
但是android内又有明确说明,说共享数据库的唯一方法是用provider.没搞明白.
不知道是不是会存在同步异步读写的错误.
我的理解应该是这样的provider可以共享不同应用程序的数据库,而用对象封装的数据库操作只能在本应用下面读写,但本应用下的各activity都能进行读写.