1

我创建了一个名为“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”。

在此处输入图像描述

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

在此处输入图像描述


我从 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();

        }

        });


}
4

5 回答 5

1

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

于 2012-07-14T13:06:26.867 回答
1

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

您已像上一张图​​片一样打开它,并且列名在您创建时就存在。

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

您需要用数据填充表。

于 2012-07-14T13:06:32.697 回答
1

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

您的代码没有插入任何数据,因此该表应该是空的。

于 2012-07-14T13:07:55.917 回答
1

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

于 2012-07-14T13:08:12.227 回答
0

插入错误在这个 ligne 中:

  • KEY_CATEGOIE + "文本"

    创建的表包含一个名为 "categorieTEXT" 的列: categorie 是我的列名,而 TEXT 它的类型
    我必须在 " 和 TEXT 之间留一个空格,如下所示:

  • KEY_CATEGOIE +“文本”

于 2012-07-14T15:47:43.020 回答