- Android
- 2011-11-05 - 更新:2015-12-03
この記事は最終更新日から1年以上経過しています。
データベースが簡単に利用できるSQLiteOpenHelperクラスを使用します。
プラットフォームは1.6で作成。
【HelloSqliteActivity.java】
package android.sample.sqlite; import android.app.Activity; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.os.Bundle; import android.widget.TextView; public class HelloSqliteActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); MySqlite helper = new MySqlite(this); SQLiteDatabase db = helper.getReadableDatabase(); Cursor c = db.query("TABLE_NAME", new String[] { "number", "latitude", "longitude" }, null, null, null, null, null); startManagingCursor(c); //リソースの扱いをActivityに委ねます boolean isEof = c.moveToFirst(); TextView textView1 = (TextView)findViewById(R.id.textView1); String text=""; while (isEof) { text += String.format("物件番号 : %s\r\n緯度 : %.6f\r\n経度 : %.6f\r\n\r\n", c.getString(0), c.getDouble(1), c.getDouble(2)); isEof = c.moveToNext(); } textView1.setText(text); c.close(); db.close(); } @Override protected void onDestroy() { super.onDestroy(); } }
【MySqlite.java】
package android.sample.sqlite; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; import android.database.sqlite.SQLiteStatement; public class MySqlite extends SQLiteOpenHelper { public MySqlite(Context context) { super(context, null, null, 1); // 2番目の引数は、データベース名です。 // nullにした場合はメモリ上に、データベース名を指定した場合はデータベースファイルが作成されます。 } @Override public void onCreate(SQLiteDatabase db) { db.execSQL( "create table TABLE_NAME" + "( _id integer primary key autoincrement, number text not null, latitude double, longitude double );"); db.beginTransaction(); try { SQLiteStatement stmt = db.compileStatement( "insert into TABLE_NAME" + "( number, latitude, longitude )" + " values ( ?, ?, ? );" ); stmt.bindString(1, "1000000"); stmt.bindDouble(2, 34.1250); stmt.bindDouble(3, 135.12); stmt.executeInsert(); db.setTransactionSuccessful(); } finally { db.endTransaction(); } } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { db.execSQL("drop table if exists TABLE_NAME;"); onCreate(db); } }
onCreateはまだデータベースがない場合の初期化に使用されます。
onUpgradeはデータベースのアップグレードが必要な時に呼ばれます。
また、データ挿入の際は以下のような方法も可能です。
@Override public void onCreate(SQLiteDatabase db) { db.execSQL( "create table TABLE_NAME" + "( _id integer primary key autoincrement, number text not null, latitude double, longitude double );"); ContentValues cv = new ContentValues(3); cv.put("number", "1000000"); cv.put("latitude", 34.1250); cv.put("longitude", 135.12); db.insert(TABLE_NAME, null, cv); }
簡単にデータを挿入するには以下のように
try { db.execSQL("insert into " + SerializeData.tblName + "( number, latitude, longitude )" + " values ( " + number + ", " + latitude + ", " + longitude + " );"); } catch (SQLException e) { e.printStackTrace(); }
5,543 views