サンプル集  >  Android  >  SQLite
SQLite
2014/04/04

Androidアプリで、SQLiteへデータの書き込みをします。

◆環境
OS Windows 7 Professional Service Pack 1 64bit
eclipse 4.2.2
Android 4.4
Android端末 Nexus7

@eclipseで[File]-[New]-[Project]を選択します。

ANew Projectウィンドウが開いたら[Android]-[Android Application Project]を選択し「Next」ボタンを押します。

BNew Android Applicationウィンドウが開いたら「Aplication Name」に AndroidSQLiteTest と入力し「Next」ボタンを押します。

CConfigure Projectウィンドウが開いたらそのまま「Next」ボタンを押します。

DConfigure the attributes of the icon setウィンドウが開いたらそのまま「Next」ボタンを押します。

ECreate Activityウィンドウが開いたらそのまま「Next」ボタンを押します。

FBlank Activityウィンドウが開いたらそのまま「Finish」ボタンを押します。

編集

ボタンを追加します。

activity_main.xml にボタンを押したときに呼ばれる関数名を追記します。

android:onClick="button1_click"

activity_main.xml
 1: 

 2: 
 3: 
 4: 
 5: 
 6: 
 7: 
 8: 
 9: 
10: 
11: 
12: 
13: 
14: 
15: 
16: 
17: 
18: 
19: 
20: 
21: 
22: 
23: 
24: 
25: 
26: 
27: 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res
/android"

    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/hello_world" />

    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/textView1"
        android:layout_below="@+id/textView1"
        android:layout_marginTop="14dp"
        android:onClick="button1_click"
        android:text="Button" />

</RelativeLayout>

データベースの処理クラスを作成します。 SQLiteの処理には SQLiteOpenHelperクラスを使います。 データベースファイルの名前は SQLiteTestDB.db にしました。

プロジェクトを右クリックし[New]-[Class]を選択します。 Name は MyOpenHelperに、Superclass には SQLiteOpenHelper を指定しました。

MyOpenHelper.java
 1: 
 2: 
 3: 
 4: 
 5: 
 6: 
 7: 
 8: 
 9: 
10: 
11: 
12: 
13: 
14: 
15: 
16: 
17: 
18: 
19: 
20: 
21: 
22: 
23: 
24: 
25: 
26: 
27: 
28: 
29: 
30: 
31: 
32: 
33: 
34: 
35: 
36: 
37: 
38: 
39: 
40: 
41: 
42: 
43: 
44: 
package com.example.androidsqlitetest;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

public class MyOpenHelper extends SQLiteOpenHelper
{
    static final String DB_NAME = "SQLiteTestDB.db";

    static final int DB_VER = 1;

    static final String TBL_CREATE
    = "CREATE TABLE myTbl "
    + "("
    +    "uid INTEGER PRIMARY KEY AUTOINCREMENT"
    +  ", data TEXT"
    + ");"
    ;

    static final String TBL_DROP
    = "DROP TABLE myTbl;";

    public MyOpenHelper( Context c )
    {
        super( c, DB_NAME, null, DB_VER );
    }

    @Override
    public void onCreate( SQLiteDatabase arg0 )
    {
        arg0.execSQL( TBL_CREATE );
    }

    @Override
    public void onUpgrade( SQLiteDatabase arg0
                         , int arg1
                         , int arg2
                         )
    {
        arg0.execSQL( TBL_DROP );
        onCreate( arg0 );
    }
}

MainActivity.java にボタンを押されたらデータベースへ1レコード追加する処理を入れます。

MainActivity.java
 1: 
 2: 
 3: 
 4: 
 5: 
 6: 
 7: 
 8: 
 9: 
10: 
11: 
12: 
13: 
14: 
15: 
16: 
17: 
18: 
19: 
20: 
21: 
22: 
23: 
24: 
25: 
26: 
27: 
28: 
29: 
30: 
31: 
32: 
33: 
34: 
35: 
36: 
37: 
38: 
39: 
40: 
41: 
42: 
43: 
44: 
package com.example.androidsqlitetest;

import android.os.Bundle;
import android.app.Activity;
import android.content.ContentValues;
import android.database.sqlite.SQLiteDatabase;
import android.util.Log;
import android.view.Menu;
import android.view.View;

public class MainActivity extends Activity
{
    SQLiteDatabase mydb;

    @Override
    protected void onCreate( Bundle savedInstanceState )
    {
        super.onCreate( savedInstanceState );
        setContentView( R.layout.activity_main );

        MyOpenHelper hlpr
        = new MyOpenHelper( getApplicationContext() );

        mydb = hlpr.getWritableDatabase();
    }

    @Override
    public boolean onCreateOptionsMenu( Menu menu )
    {
        getMenuInflater().inflate( R.menu.main, menu );
        return true;
    }

    public void button1_click( View v )
    {
        ContentValues val = new ContentValues();

        val.put( "data""DATA" );

        mydb.insert( "myTbl", null, val );

        Log.d( "INFO""insert OK!!" );
    }
}

実行してボタンを押したところ、以下のログが出力されました。 試しに3回押してみました。

04-04 16:57:35.707: D/INFO(19550): insert OK!!
04-04 16:57:40.187: D/INFO(19550): insert OK!!
04-04 16:57:43.437: D/INFO(19550): insert OK!!

Exception も出ていないのでうまくったように見えます。

SQLiteデータベースは SQLiteの取得と内容確認 で確認しました。

▲ PageTop  ■ Home


Copyright (C) 2013 ymlib.com