本帖最后由 cancel_li 于 2010-04-01 18:16:51 编辑

解决方案 »

  1.   

    dbtest dbop = new dbtest();dbtest 这个数据库类创建一个带Context的构造器,然后在Activity中构建数据库实例时把这个Activity传给dbop;dbtest dbop = new dbtest(Activity.this);
      

  2.   


    我尝试了一下用
    dbtest dbop = new dbtest(this);
    还是报open or create database/table error
    而用Activity.this,编译错误.
      

  3.   

    在不同intent之间访问数据库是不是该用Content Provider.
      

  4.   

    最主要还是this.openOrCreateDatabase的问题 dbtest并没start 大概也就不能用它来创建数据库
      

  5.   

    我查了一下,android自己建立的数据库只能自己访问.要共享的话只有用Content Provider.
    Content Provider好象很复杂,郁闷了.
      

  6.   

    Android都是这种机制阿 自己程序的数据 只能用provider接口提供出去
      

  7.   

    用对象传可以吗?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");
            }
    }
      

  8.   


    用对象确实可以,但不知道别的intent是否能应用这个数据库
      

  9.   


    不同的应用好象只能通过Provider接口来访问相同的数据库,要试验一下看看,你这个是否可以共巷数据库
      

  10.   


    哈,封装成对象可供不同的activity读写数据库,那就没必要用到provider了.
    但是android内又有明确说明,说共享数据库的唯一方法是用provider.没搞明白.
    不知道是不是会存在同步异步读写的错误.
      

  11.   


    我的理解应该是这样的provider可以共享不同应用程序的数据库,而用对象封装的数据库操作只能在本应用下面读写,但本应用下的各activity都能进行读写.