[Android] SQLite DB无法从其他活动中访问

时间:2014-04-01 07:00:43

标签: android sqlite

我的SQLite数据库遇到了一些问题。我的应用程序中有大约5个活动,但我只能通过一个活动访问它。 在这项活动中,我可以充分利用我的数据库并完成我想做的一切。

在其他活动中,我无法使用它。我得到一个空的DB。

当然,无论活动如何,我都使用相同的代码来访问我的数据库。

我使用自制类来访问从SQLiteOpenHelper派生的数据库,并使用另一个类来操作第一个类。数据库从在线服务器下载到“/data/data/com.example.btc_pe/databases/”文件夹中。

我的第一堂课,访问数据库。

public final class BtcDb extends SQLiteOpenHelper
{ 
    public BtcDb(Context context, String name, CursorFactory factory, int version) 
    {
        super(context, name, factory, version);
    }

    @Override
    public void onCreate(SQLiteDatabase db)
    {   
        // TODO Auto-generated method stub
        Log.d("BTC","Db created");
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)
    {
        // TODO Auto-generated method stub
        //db.execSQL("DROP TABLE "+ TABLE_PRODUITS +";");
        //onCreate(db);
    }

}

我的操纵课:

public final class DbHelper
{
    public static int version=1;
    private static final String nomDb="basesqlite.db";

    private int num_id=0;
    private int num_tension=1;
    private int num_typeRacc=2;
    private int num_nbCond=3;
    private int num_technique=4;
    private int num_typeConn=5;
    private int num_conn=6;
    private int num_desiConn=7;
    private int num_refProd=8;
    private int num_desiProd=9;
    private int num_diamMin=10;
    private int num_diamMax=11;
    private int num_section=12;
    private int num_diamConnMax1=13;
    private int num_diamConnMax2=14;
    private int num_diamConnMax3=15;
    private int num_diamConnMax4=16;
    private int num_diamConnMax5=17;

    private String tableProduits = "produit";

    private SQLiteDatabase bdd;
    private BtcDb btcDb1;

    public DbHelper(Context context)
    {
        btcDb1=new BtcDb(context,nomDb,null,version);
    }

    public void open()
    {
        bdd=btcDb1.getReadableDatabase();
    }
    public void close()
    {
        bdd.close();
    }
    public SQLiteDatabase getBdd()
    {
        return bdd;
    }   

    public int getCountDb()
    {
        Cursor c = bdd.rawQuery("SELECT COUNT(*) FROM"+ tableProduits, null);

        return cursorToCount(c);
    }   

    public int cursorToCount(Cursor c)
    {
        c.moveToFirst();
        int i=c.getInt(0);

        return i;
    }
}

在我的活动中,我必须实现DBHelper类,它实现了BtcDB。 所以我应该做的就是:

DBHelper dbHelper1 = new DBHelper(this);
dbHelper1.open();
//Manipulation of the DB
int i=dbHelper1.getCountDB(); //In example...
Log.d("BTC","DB Count : "+i);
//Other manipulations of the DB.
dbHelper1.closer(); 

正如我所说,它在我的一项活动中运作得很好,但在其他活动上却没有。

我在这里迷失了^^“。

1 个答案:

答案 0 :(得分:0)

因此,简而言之,问题来自我的SQL语法。当你看到我花了多少时间时真的很令人沮丧。

感谢大家的时间。