0

我有很多 BDD 文件。我想打开第一个,提取数据,然后关闭,打开第二个,提取数据,关闭等...

我想在我的 Main 中做这样的事情。

         LivresBDD livreBdd = new LivresBDD(this);
// open the 1st BDD
         livreBdd.open();
         Livre livreFromBdd = livreBdd.getLivreWithTitre(livre.getTitre()); //extract data
         livreBdd.close();
// open the 2nd BDD
         livreBdd.open();
         Livre livreFromBdd = livreBdd.getLivreWithTitre(livre.getTitre()); //extract data
         livreBdd.close();

LivreBDD.java:

public class LivresBDD {

        private static final int VERSION_BDD = 1;
        private static final String NOM_BDD = "eleves.db";
    private static final String TABLE_LIVRES = "table_livres";
    private static final String COL_ID = "ID";
    private static final int NUM_COL_ID = 0;
    private static final String COL_ISBN = "ISBN";
    private static final int NUM_COL_ISBN = 1;
    private static final String COL_TITRE = "Titre";
    private static final int NUM_COL_TITRE = 2;

        private SQLiteDatabase bdd;
        private MaBaseSQLite maBaseSQLite;

        public LivresBDD(Context context){  //e
            //On créer la BDD et sa table
            maBaseSQLite = new MaBaseSQLite(context, NOM_BDD, null, VERSION_BDD);
        }

        public void open(){
            //on ouvre la BDD en écriture
            bdd = maBaseSQLite.getWritableDatabase();
        }

        public void close(){
            //on ferme l'accès à la BDD
            bdd.close();
        }

        public Livre getLivreWithTitre(String titre){
            Cursor c = bdd.query(TABLE_LIVRES, new String[] {COL_ID, COL_ISBN, COL_TITRE}, COL_TITRE + " LIKE \"" + titre +"\"", null, null, null, null);
            return cursorToLivre(c);
        }



        //Cette méthode permet de convertir un cursor en un livre
        private Livre cursorToLivre(Cursor c){
            //si aucun élément n'a été retourné dans la requête, on renvoie null
            if (c.getCount() == 0)
                return null;

            //Sinon on se place sur le premier élément
            c.moveToFirst();
            //On créé un livre
            Livre livre = new Livre();
            //on lui affecte toutes les infos grâce aux infos contenues dans le Cursor
            livre.setId(c.getInt(NUM_COL_ID));
            livre.settype_t(c.getString(NUM_COL_TYPE_T));
            livre.setnum_question(c.getString(NUM_COL_NUM_QUESTION));
            livre.setquestion(c.getString(NUM_COL_QUESTION));

            //On ferme le cursor
            c.close();

            //On retourne le livre
            return livre;
        }

}

每次都打开一个相同的 BDD,但是如何指定要打开的 BDD 名称?对不起,我是新手 ;)

编辑:我已经这样做了:

     LivresBDD livreBdd = new LivresBDD(this,BDD_NAME1);                                                         //Création d'une instance de ma classe LivresBDD
     livreBdd.open();
     [...]
     livreBdd.close();

     LivresBDD livreBdd = new LivresBDD(this,BDD_NAME2);                                                         //Création d'une instance de ma classe LivresBDD
     livreBdd.open();
     [...]
     livreBdd.close();
4

1 回答 1

0

数据库名称是 NOM_BDD(来自 LivresBDD)。我没有测试过,但我认为你应该在 LivresBBD 中添加一个参数来指示你要打开哪个数据库。

    public void open(String name){
        //on ouvre la BDD en écriture
        maBaseSQLite = new MaBaseSQLite(context, name, null, VERSION_BDD);
        bdd = maBaseSQLite.getWritableDatabase();
    }
于 2013-06-11T11:40:23.367 回答