如何在sqlite中找到我的.db文件?

时间:2012-07-14 13:04:12

标签: android sqlite ddms

我创建了一个名为“enigmeDB”的数据库和一个表“table_enigme”:

public class EnigmeDatabase extends SQLiteOpenHelper {
    private static final int DATABASE_VERSION = 1;
    private static final String DATABASE_NAME = "enigmeBD";
    private static final String TABLE_ENIGME = "table_enigme";

    // fields 
    private static final String KEY_ID = "id";
    private static final String KEY_DESCRIPTION = "description";
    private static final String KEY_REPONSE="reponse";
    private static final String KEY_CATEGORIE="categorie";      

    public EnigmeDatabase(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }

    // creation of the table
    @Override
    public void onCreate(SQLiteDatabase db) {
        String CREATE_ENIGME_TABLE = 
            "CREATE TABLE " + TABLE_ENIGME
            + "("
            + KEY_ID + " INTEGER PRIMARY KEY AUTOINCREMENT," 
            + KEY_DESCRIPTION + " TEXT,"
            + KEY_REPONSE + " TEXT,"
            + KEY_CATEGORIE + "TEXT"
            + ")";
        db.execSQL(CREATE_ENIGME_TABLE);    
    }

    // Update
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        db.execSQL("DROP TABLE IF EXISTS " + TABLE_ENIGME);
                onCreate(db);
    }....

当我打开我的DDMS透视图并打开文件资源管理器:/data/data/com.android.enigme(我的软件包)时,我找到“enigmeDB”,但我找不到“table_enigme”。

enter image description here

虽然在Sqlite数据库浏览器中我的表看起来是空的:

enter image description here


我从一个Activity插入数据,这是我的类:

公共类EnigmeActivity扩展了Activity {

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    //recuperation des champs depuis main.xml
    final EditText description=(EditText) this.findViewById(R.id.description);
    final EditText reponse=(EditText)this.findViewById(R.id.reponse);
    final EditText categorie=(EditText)this.findViewById(R.id.categorie);
    Button ajouter = (Button)this.findViewById(R.id.ajouter);


   final EnigmeDatabase db=new EnigmeDatabase(this);


    ajouter.setOnClickListener(new OnClickListener() {


        public void onClick(View v) {
            Log.d("Etape : " , "Recuperation");
            Log.i("description : ", description.getText().toString());
            Log.i("reponse : ", reponse.getText().toString());
            Log.i("categorie : ", categorie.getText().toString());
            //add a new Enigme
            Log.d("Etape : ","Insertion" );
            db.ajouterEnigme(new EnigmeBean(description.getText().toString(),reponse.getText().toString(),categorie.getText().toString()));      
            Toast.makeText(EnigmeActivity.this, "Ajout avec succes!", Toast.LENGTH_SHORT).show();

        }

        });


}

5 个答案:

答案 0 :(得分:1)

在SQLite中,数据库的所有表都在一个文件中。

答案 1 :(得分:1)

这是一个包含所有表的数据库文件。

您已在上一张照片中打开它,并且在创建列名时存在列名称。

它为“空”的原因是因为其中没有数据。

您需要使用数据填充表格。

答案 2 :(得分:1)

“table_enigme”在enigmBD中。该文件包含您的数据库。资源管理器中的该文件是数据库。不确定你是否在寻找更多东西。

您的代码未插入任何数据,因此该表应为空。

答案 3 :(得分:1)

“databases”文件夹包含您的数据库(单个文件)。没有其他名为“table”的文件。

答案 4 :(得分:0)

插入错误出现在这个方面:

  • KEY_CATEGORIE +“TEXT”

    创建的表包含名为“categorieTEXT”的列: categoriesie是我的列名,TEXT是其类型
    我不得不在“和TEXT之间划一个空格,就像这样:

  • KEY_CATEGORIE +“TEXT”