1

私はテーブルを動的に作成し、必要に応じてそれらにアクセスしようとしていました...しかし、コードを実行すると、エラーや例外が発生したり、データベースが作成されたりすることはありません...デバッグすると、oncreateメソッドが常に呼び出されることがわかりました出会いgetWritableDatabase()ます。

ここに私の SQLOpenHelper クラスがあります -

package com.example.launch;

import java.util.ArrayList;

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

public class db extends SQLiteOpenHelper {

    SQLiteDatabase db12;

    public db(Context context) {
        super(context, null, null, 1);

    }

    public void onCreate(SQLiteDatabase b) {
        b.execSQL("CREATE TABLE IF NOT EXISTS sample1 (col1 TEXT_TYPE,col2 TEXT_TYPE,message TEXT_TYPE )");

    }

    public void create(String name) {
        db12 = getWritableDatabase();
        db12.execSQL("CREATE TABLE IF NOT EXISTS " + name
                + "(col1 TEXT_TYPE,col2 TEXT_TYPE,message TEXT_TYPE )");
        db12.close();
        Log.e("create", "successful");
    }

    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    }

    public void insert(String name, String message, String col1, String col2) {
        create(name);
        db12 = getWritableDatabase();
        ContentValues v = new ContentValues();
        v.put("col1", col1);
        v.put("col2", col2);
        v.put("message", message);
        db12.insert(name, null, v);
        Log.e("insert", "may be successful");
        db12.close();
    }

    public ArrayList<String> getArray() {

        ArrayList<String> tableList = new ArrayList<String>();
        String SQL_GET_ALL_TABLES = "SELECT name FROM "
                + "sqlite_master WHERE type='table' ORDER BY name";
        db12 = getWritableDatabase();
        Log.e("here", "came");
        Cursor cursor = db12.rawQuery(SQL_GET_ALL_TABLES, null);
        try {
            if (cursor.moveToFirst())
                ;
            {
                while (!cursor.isAfterLast()) {
                    tableList.add(cursor.getString(0));
                    cursor.moveToNext();
                }
            }
        } finally {
            cursor.close();
            db12.close();
        }
        return tableList;
    }

    public String gettable(String name) {

        Cursor cursor = null;
        String ss = "";
        db12 = getWritableDatabase();

        try {
            cursor = db12.rawQuery("select * from " + name, null);
            if (cursor.moveToFirst()) {
                int col2in = cursor.getColumnIndex("col2");
                int msg = cursor.getColumnIndex("message");
                while (!cursor.isAfterLast()) {
                    if (cursor.getString(col2in) == "1") {

                        ss = ss + "/n " + name + " : " + cursor.getString(msg);

                    }

                    else {

                        ss = ss + "/n I : " + cursor.getString(msg);

                    }

                }

            }
        } finally {
            cursor.close();
            db12.close();
        }
        return ss;
    }

}

どんな助けでも大歓迎です....

4

0 に答える 0