0

アンドロイド 2.3.3

static String name = "Database";
static int version = 1;

static SQLiteDatabase sqlDB;
static Cursor c;


public Database(Context context) {
    super(context, name, null, version);
    // TODO Auto-generated constructor stub

    sqlDB = getWritableDatabase();

    }

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


    sqlDB.execSQL("create table if not exists Operations(Command Text, Pos1 Text, " +
                "Pos2 Text, Pos3 Text, Pos4 Text, Pos5 Text, Pos6 Text, Pos7 Text, Pos8 Text, Pos9 Text, Pos10 Text)");

        insertData();
    }

private void insertData() {
        // TODO Auto-generated method stub

        String addQuery ="ADD, add, and, had, ad, anddd, anndd, null, null, null, null";

                sqlDB.execSQL("insert into Operations values("+ addQuery +")"); 
                     //Exception at the above line
}

柱は全部で11本。

データベースに NULL を挿入できますか? はいの場合、データベースにデータを挿入しようとしている方法に問題はありますか?

rekire が指摘したように、問題は getWritableDatabase() にあるようです。Database db = new Database(this); でコンストラクターを呼び出しています。名前とバージョンのローカル変数を宣言し、ファクトリにnullを提供したため、これまで他のすべてのプロジェクトで機能していました。

答え ::: すみません、私のミスです。object(db) の代わりに Database.method() を使用して、データベース内のメソッドを呼び出しました。これにより、SQLiteDatabase および Cursor オブジェクトが Database.java ファイルで静的になりました。db.method() に変更し、 static キーワードを削除すると、正常に動作します。

お時間をいただきありがとうございます..そして、ご迷惑をおかけして申し訳ありません.

4

4 に答える 4

0
private void insertData() {
    if(sqlDB == null) sqlDB.open();
    String addQuery ="ADD, add, and, had, ad, anddd, anndd, null, null, null, null";
    sqlDB.execSQL("insert into Operations values("+ addQuery +")");
}
于 2012-12-21T08:48:03.513 に答える
0

クエリを作成する前に、open() メソッドを呼び出す必要があります。

mDbHelper.open(); //whitout this call mdb will be NULL
于 2012-12-21T08:35:50.443 に答える
0

私が正しいと思うなら、あなたの関数getWritableDatabase()はnullを返します。

于 2012-12-21T08:10:24.230 に答える
0

あなたの

 public void onCreate(SQLiteDatabase sqlDB)

割り当てsqlDB = sqlDB; てから、insertData() で sqlDB を使用できます

于 2012-12-21T08:56:48.710 に答える