2012-03-17 10 views

答えて

1

SQLiteOpenHelperのサブクラスを使用して、データベースにアクセスしてください。 onCreateは、データベースの作成時に1回呼び出されます。

DBHelper db = new DBHelper(context); 
db.getReadableDatabase().query(....); 
db.close(); 

SQLiteOpenHelperのような何かを拡張するには:

あなたが行うことができ、あなたのDBを使用するには(テストされていないテーブルを作成するためのSQLを!):

public class DBHelper extends SQLiteOpenHelper { 

private static final String DATABASE_NAME = "database.db"; 
private static final Integer DATABASE_VERSION = 1; 


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


/* 
* Called ONCE on the very first db access (when the db file is created) 
*/ 
@Override 
public void onCreate(SQLiteDatabase db) { 
    db.execSQL("CREATE TABLE mytable (_id PRIMARY KEY AUTOINCREMENT, value TEXT); \n" + 
      "INSERT INTO mytable (value) VALUES ('data'));"); 
} 

/* 
* Called every time you open a database 
*/ 
@Override 
public void onOpen(SQLiteDatabase db) { 
} 

/* 
* Called ONCE if DATABASE_VERSION has changed since the last instantiation of DBHelper 
*/ 
    @Override 
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
} 

}

+0

ご返信ありがとうございますが、私はさらに質問があります。私はあなたのDBHelperのようなクラスを使用しています。別のクラス - 私はDBAdapterと呼んでいます。私はあなたのようにDBHelperのインスタンスを作成しています。ただし、アプリケーションの起動ごとに呼び出されます。私はテーブルを作成して一度データを挿入したい。これをどうすれば解決できますか? 編集:メソッドonUpgradeで、私はすべてのテーブルを削除し、再びonCreateを呼び出します。これは問題ですか? – adaclks

+0

すべてを削除して最初から作り直しても大丈夫です。 onUpgrade内からonCreateを呼び出すことでこれをやりたい場合は、それもOKです。 – thaussma

+0

ありがとうございますが、すべてのアプリケーションの開始時に挿入操作を避けるにはどうすればよいですか? DBAdapterでDBHelperのインスタンスを作成しています。私のMainActivityでは、DBAdapterのインスタンスを作成しています。 – adaclks

関連する問題