1

この DatabaseCreator Java ファイルがあります。

データベース作成者

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

import android.content.Context;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteException;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;

public class DataBaseCreator extends SQLiteOpenHelper {
    private static String DB_PATH = "/GetInspiredAndHaveFun/assets/Jokes.db";
    private static String DB_NAME = "Jokes.db";
    private static int DB_VERSION = 1;
    public static String DATABASE_TABLE = "myjoke";

    private SQLiteDatabase myDataBase;
    private final Context myContext;

    public DataBaseCreator(Context context) {
        super(context, DB_NAME, null, DB_VERSION);
        this.myContext = context;

    }

    public void openDatabase() throws IOException {
        boolean dbe = checkDataBase();
        if (dbe) {
            Log.i("Tag", "dbe" + dbe);

        } else {
            Log.i("Tag", "dbdoesnotexist" + dbe);
            this.getReadableDatabase();
            copyDataBase();

        }

    }

    private void copyDataBase() throws IOException {
        InputStream inp = myContext.getAssets().open(DB_NAME);
        String ofn = DB_PATH + DB_NAME;
        OutputStream oup = new FileOutputStream(ofn);
        byte[] buffer = new byte[1024];
        int length;
        while ((length = inp.read(buffer)) > 0) {
            oup.write(buffer, 0, length);
        }

        oup.flush();
        inp.close();
        oup.close();

    }

    private boolean checkDataBase() {
        SQLiteDatabase checkDB = null;
        try {
            String myPath = DB_PATH + DB_NAME;

            checkDB = SQLiteDatabase.openDatabase(myPath, null,
                    SQLiteDatabase.OPEN_READONLY);
        }

        catch (SQLiteException e) {

        }

        return checkDB != null ? true : false;
    }
    public void openDataBase() throws SQLException{
         
        //Open the database
        String myPath = DB_PATH + DB_NAME;
        myDataBase = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READONLY);
 
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        // TODO Auto-generated method stub

    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        // TODO Auto-generated method stub

    }
    
}

ここは、そのコンテンツにアクセスしたい場所です。

myJokes アクティビティ

import android.annotation.TargetApi;
import android.app.Activity;
import android.content.Context;
import android.os.Build;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.View;
import android.widget.ImageButton;
import android.widget.TextView;
import android.widget.Toast;




public class Jokes extends Activity {
    {

        DataBaseCreator myDbHelper = new DataBaseCreator(this);
     myDbHelper = new DataBaseCreator(this);
        try{
            myDbHelper.copyDataBase();
        } 
        catch (IOException ioe) {
            throw new Error("Unable to create database");
        }

        myDbHelper.openDataBase();
    }
    }

Jokes.java ファイルにそのインスタンスがあります。ジョークに保存されているジョークにアクセスして、テキストビュー (1 つずつ) に表示するにはどうすればよいですか?

4

1 に答える 1

0

最初に、データベースにはコンテンツが含まれている必要があります。そのため、列を追加します。私はidそれautoincrementをお勧めしnameます。
データベースでクエリを実行し、カーソルを反復処理する必要があります。
単純なクエリは、データベースからすべての要素を取得するだけです。次のようになります。

Cursor cursor = database.query(TABLE_NAME,allColumns, null, null, null, null,null);

カーソルを返します。これはリストであり、moveToNext(). すべてのカーソルから値を取得できます。そのため、クエリを開始した場合は、最後の ID に到達するように見える場合があります。まずcursor.moveToFirst()。クエリの最初の要素を指しています。これで、指定されたカーソルを指す最初の行から値を取得できます。
ID と名前がある場合は、クエリの最初の要素から名前を取得しますcursor.getString(1)。整数は、カーソルがある行から取得する列を表します。

わかりやすいと思います。今日の私の英語は最高ではありません。(お気軽に改善してください!) 小さなイテレーションの例

    String temp = "";
    cursor.moveToFirst();
    while (!cursor.isAfterLast()) {
        temp += curso.getString(1);
        cursor.moveToNext();
    }
于 2013-04-30T07:46:19.867 に答える