2012-04-25 4 views
3

データベースを作成して値を表示することはできますが、EclipseのAndroid仮想デバイスを閉じて再度開くとデータベース値がなくなった! :O 私を助けてください!Androidの仮想デバイスを開くたびに値を保持していないAndroid SQLiteデータベース

3つのクラスがあります(データベースと2つの活動を扱う1)

は、それが私に世界を意味します! :O 私はcoudlの場合私は+担当者 soooたくさんありがとう!@ !!! `

package com.jeux; 

import android.content.ContentValues; 
import android.content.Context; 
import android.database.Cursor; 
import android.database.SQLException; 
import android.database.sqlite.SQLiteDatabase; 
import android.database.sqlite.SQLiteOpenHelper; 


public class Database2 { 

private static final String DATABASE_NAME = "JeuxMotActivity"; 

private static final int DATABASE_VERSION = 1; 

public static final String TABLE_CATEGORIE = "Categorie"; 
public static final String KEY_CATEGORIE_ID_CATEGORIE = "IDCategorie"; 
public static final String KEY_CATEGORIE_NOM_CATEGORIE = "NomCategorie"; 

public static final String TABLE_MOT = "Mot"; 
public static final String KEY_MOT_ID_MOT = "IDMot"; 
public static final String KEY_MOT_MOT = "Mot"; 
public static final String KEY_MOT_EMAIL = "Email"; 
public static final String KEY_MOT_ID_CATEGORIE = "IDCategorie"; 

public static final String TABLE_ADMINISTRATEUR = "Administrateur"; 
public static final String KEY_ADMINISTRATEUR_EMAIL = "Email"; 
public static final String KEY_ADMINISTRATEUR_PASSWORD = "Password"; 


public static final String TABLE_SCORE = "Score"; 
public static final String KEY_SCORE_ID_JEU = "IDJeu"; 
public static final String KEY_SCORE_USERNAME = "Username"; 
public static final String KEY_SCORE_SCORE = "Score"; 
public static final String KEY_SCORE_INITIALES = "Initiales"; 

public static final String TABLE_UTILISATEUR = "Utilisateur"; 
public static final String KEY_UTILISATEUR_USERNAME = "Username"; 
public static final String KEY_UTILISATEUR_PASSWORD = "Password"; 

public static final String TABLE_JEU = "jeu"; 
public static final String KEY_JEU_ID_JEU = "IDJeu"; 
public static final String KEY_JEU_NOM_JEU = "NomJeu"; 
public static final String KEY_JEU_COMMENTAIRES = "Commentaires"; 


private DBHelper ourHelper; 
private final Context ourContext; 
private SQLiteDatabase ourDatabase; 


private static class DBHelper extends SQLiteOpenHelper { 

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

    @Override 
    public void onCreate(android.database.sqlite.SQLiteDatabase nb) { 
     //TODO check teh constraints and the relations 
     nb.execSQL("CREATE TABLE " + TABLE_CATEGORIE + " (" + 
       KEY_CATEGORIE_ID_CATEGORIE + " INTEGER PRIMARY KEY AUTOINCREMENT, " + 
       KEY_CATEGORIE_NOM_CATEGORIE + " TEXT NOT NULL" +  ");" 
       ); 

     nb.execSQL("CREATE TABLE " + TABLE_MOT + " (" + 
       KEY_MOT_ID_MOT + " INTEGER PRIMARY KEY  AUTOINCREMENT, " + 
       KEY_MOT_MOT + " TEXT NOT NULL," + 
       KEY_MOT_EMAIL + " TEXT NOT NULL," + 
       KEY_MOT_ID_CATEGORIE + " TEXT NOT NULL," + 
       "FOREIGN KEY(" + KEY_MOT_ID_CATEGORIE + ") REFERENCES " + TABLE_CATEGORIE + "(" + KEY_CATEGORIE_ID_CATEGORIE + ")," + 
       "FOREIGN KEY(" + KEY_MOT_EMAIL + ") REFERENCES " + TABLE_ADMINISTRATEUR + "(" + KEY_ADMINISTRATEUR_EMAIL + ")" + 
       ");" 
       ); 

     nb.execSQL("CREATE TABLE " + TABLE_ADMINISTRATEUR + " (" + 
       KEY_ADMINISTRATEUR_EMAIL + " TEXT PRIMARY KEY , " + 
       KEY_ADMINISTRATEUR_PASSWORD + " TEXT NOT NULL" +  ");" 
       ); 

     nb.execSQL("CREATE TABLE " + TABLE_SCORE + " (" + 
       KEY_SCORE_ID_JEU + " TEXT NOT NULL, " + 
       KEY_SCORE_USERNAME + " TEXT NOT NULL," + 
       KEY_SCORE_SCORE + " INTEGER NOT NULL," + 
       KEY_SCORE_INITIALES + " TEXT NOT NULL," + 
       "FOREIGN KEY(" + KEY_SCORE_ID_JEU + ") REFERENCES "  + TABLE_JEU + "(" + KEY_JEU_ID_JEU + ")," + 
       "FOREIGN KEY(" + KEY_SCORE_USERNAME + ") REFERENCES  " + TABLE_UTILISATEUR + "(" + KEY_UTILISATEUR_USERNAME + ")" + 
       ");" 
       ); 

     nb.execSQL("CREATE TABLE " + TABLE_UTILISATEUR + " (" + 
       KEY_UTILISATEUR_USERNAME + " TEXT PRIMARY KEY , " + 
       KEY_UTILISATEUR_PASSWORD + " TEXT NOT NULL" + ");" 
       ); 
     nb.execSQL("CREATE TABLE " + TABLE_JEU + " (" + 
       KEY_JEU_ID_JEU + " INTEGER PRIMARY KEY  AUTOINCREMENT, " + 
       KEY_JEU_NOM_JEU + " TEXT NOT NULL UNIQUE," + 
       KEY_JEU_COMMENTAIRES + " TEXT" + 
       ");" 
       ); 
    } 

    @Override 
    public void onUpgrade(android.database.sqlite.SQLiteDatabase db, 
      int oldversion, int newversion) { 
    // db.execSQL("DROP TABLE IF EXISTS " + TABLE_CATEGORIE); 
    // onCreate(db); 
    } 

} 

    public Database2(Context c){ 
     ourContext = c; 
    } 

    public Database2 open() throws SQLException { 
     ourHelper = new DBHelper(ourContext); 
     ourDatabase = ourHelper.getWritableDatabase(); 
     return this; 
    } 

    public void close() throws SQLException{ 
     ourHelper.close(); 
    }  

    public long createCategorie(String name) { 
     ContentValues cv = new ContentValues(); 
     cv.put(KEY_CATEGORIE_NOM_CATEGORIE, name); 
     return ourDatabase.insert(TABLE_CATEGORIE, null, cv); 
    } 

    public String getCategorieData(){ 
     String result = ""; 
     String[] columns = new String[] {KEY_CATEGORIE_ID_CATEGORIE,  KEY_CATEGORIE_NOM_CATEGORIE}; 
     Cursor c = ourDatabase.query(TABLE_CATEGORIE, columns,null, null,  null, null, null); 

     int id = c.getColumnIndex(KEY_CATEGORIE_ID_CATEGORIE); 
     int name = c.getColumnIndex(KEY_CATEGORIE_NOM_CATEGORIE); 

     for(c.moveToFirst(); !c.isAfterLast(); c.moveToNext()){ 
      result += c.getString(id) + " " + c.getString(name) + "\n"; 
     } 

     return result; 
    } 

    } 

`

Event Manager : 



package com.jeux; 

import android.app.Activity; 
import android.app.Dialog; 
import android.content.Intent; 
import android.os.Bundle; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.TextView; 

public class Jeuxdemots2Activity extends Activity implements OnClickListener { 


    Button sqlUpdate, sqlView; 
    EditText nameText; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    sqlUpdate = (Button) findViewById(R.id.updatebutton); 
    sqlView = (Button) findViewById(R.id.afficherbutton); 
    nameText = (EditText) findViewById(R.id.nametext); 

    sqlUpdate.setOnClickListener(this); 
    sqlView.setOnClickListener(this);  
    } 

@Override 
public void onClick(View arg0) { 
    // TODO Auto-generated method stub 

    switch (arg0.getId()){ 
    case R.id.updatebutton: 
     try{ 
    String name = nameText.getText().toString(); 
    Database2 entry = new Database2(Jeuxdemots2Activity.this); 
    entry.open(); 
    entry.createCategorie(name); 
    entry.close(); 
     }catch (Exception e){ 
      String error = e.toString(); 

      Dialog d = new Dialog(this); 
      d.setTitle("Dang it!"); 
      TextView tv = new TextView(this); 
      tv.setText(error); 
      d.setContentView(tv); 
      d.show(); 
     }finally{ 

     } 


    break; 

    case R.id.afficherbutton: 
     Intent i = new Intent("android.intent.action.SQLVIEW"); 
     startActivity(i); 
    break; 

    } 


} 
} 

`

ビュー#3:

package com.jeux; 

import android.app.Activity; 
import android.os.Bundle; 
import android.widget.TextView; 

public class SQLview extends Activity { 

protected void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.afficherlayout); 
    TextView tv = (TextView) findViewById(R.id.affichertextview); 
    Database2 info = new Database2(this); 
    info.open(); 
    String data = info.getCategorieData(); 
    info.close(); 
    tv.setText(data); 
} 
} 
ここ

は私のコード

データベース・マネージャーでありますそれは完全なブートアップするたびに(画面のロックを解除するには光沢のあるAndroidのワード、スワイプなど)をやっているよう

A photo to put context to my situation

答えて

5

あなたが閉じるときに/あなたの仮想デバイスを再度開いて、それが見えますか?その場合は、アプリケーションを実行するたびにすべてをに再初期化することができます。そうであれば、あなたはアプリケーションであり、データベースはもはやデバイス上に存在しないので、データは保持されません。

エミュレータを作成するときに、「スナップショット」オプションをチェックしていますか?私はあなたのエミュレータを閉じる/再オープンするときに同じポイントから再開できるようにファイルにあなたのデバイスの状態を保存すると思います。

関連する問題