2014-04-01 88 views
0

我正在面對我的SQLite數據庫的一些問題。我的應用程序中有大約5個活動,但我只能從一個活動訪問它。 在這個活動中,我可以充分使用我的數據庫,並盡我所能。[Android] SQLite數據庫無法從其他活動訪問

關於其他活動,我不能使用它。我得到一個空的數據庫。

當然,我使用相同的代碼來訪問我的數據庫,而不管活動。

我使用自制類來訪問從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(); 

正如我所說的,它工作得很好,在我的活動之一,但不是在其他人。

我敢在這裏失去了^^」。

+0

任何錯誤日誌?也許缺少From'關鍵字後'一個空間? – Kedarnath

+0

請添加錯誤日誌 –

+0

添加日誌貓錯誤 – IPL10

回答

0

因此,簡而言之,這個問題從我的SQL syntaxe真的令人沮喪的事情來了,當你看到我有多少時間花在了。

謝謝大家對你的時間。

相關問題