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 からデータを挿入します。ここに私のクラスがあります:

public class EnigmeActivity extends 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では、データベースのすべてのテーブルが1つのファイル内にあります。

于 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

挿入のエラーは次の行にありました:

  • KEY_CATEGORIE + "テキスト"

    作成されたテーブルには「categorieTEXT」という名前の列が含まれています: categorie は私の列名であり、 TEXT そのタイプ
    は、次のように " と TEXT の間にスペースを作成する必要がありました。

  • KEY_CATEGORIE + "テキスト"

于 2012-07-14T15:47:43.020 に答える