2012-03-10 1 views
0

안드로이드에서 데이터베이스에 추가 테이블을 생성하려고하는데 테이블에 관한 나의 이전 질문에 이어 계속하십시오.안드로이드에서 테이블 생성 SQL 명령어 실행하기

기본적으로,이 코드에 의해 그렇게되어 생성 될 데이터베이스 싶습니다 : 사용자가 계정을 추가 할 때 내가 좋아하는 것 그리고

public void onCreate(SQLiteDatabase db) { 
     db.execSQL(DATABASE_CREATE); 
    } 

을 테이블 계정의 이름을 사용자로 추가 입력되었습니다. 내가 만든 createTable() 메서드를 호출하려고합니다.

public void createAccount(String account) { 
     DATABASE_TABLE = account; 
     db.execSQL(TABLE_CREATE); 
     System.out.println(DATABASE_NAME);  
} 

그러나 이클립스는 변수를 찾을 수 없으므로 db가 작동하지 않습니다. mDb 내 SQLiteDatabase 시도하지만 null 포인터 예외가 나타납니다.

* 편집 *

정말 데이터베이스 주위에 내 머리를 얻을 수 없습니다. 나는 Dummies For 책과 데이터베이스 도우미를 사용하고 있지만, 지금 나는 어디에서부터 코드가 많이 발생하고 따르기가 어렵다고 느낍니다. 내의 createAccount 클래스에 호출

public void changeDatabase(String account) { 
    DATABASE_TABLE = account; 
    mDbHelper.createAccount(account); 
} 

private static class DatabaseHelper extends SQLiteOpenHelper { 

    DatabaseHelper(Context context) { 
     super(context, DATABASE_NAME, null, DATABASE_VERSION); 
    } 


    public void onCreate(SQLiteDatabase db) { 
     System.out.println(DATABASE_TABLE); 
     db.execSQL(TABLE_CREATE); 
    } 

    @Override 
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
     Log.w(TAG, "Upgrading database from version " + oldVersion + " to " 
       + newVersion + ", which will destroy all old data"); 
     db.execSQL("DROP TABLE IF EXISTS " + DATABASE_TABLE); 
     onCreate(db); 
    } 

    public void createAccount(String account) { 
     DATABASE_TABLE = account; 
     /* SQLiteDatabase db = this.getWritableDatabase(); 
     db.execSQL("create table long (" 
       + KEY_ROWID + " integer primary key autoincrement, " 
       + KEY_DESCRIPTION + " text not null, " 
       + KEY_DEBIT + " text not null);"); 
    }  
} 

클래스의 하단 :

이 내 데이터베이스 클래스의 일부이다.

널 포인트 예외가 발생합니다. 이 코드를 보지 않고있다

+0

당신은 CreateTable에서 방법을 공유 할 수 있습니까? – Soham

+0

Soham, createAccount는 createTable 메소드입니다. 죄송합니다. –

답변

0

...

난 당신이 SQLite는 클래스 중 하나를 확장/상속 한 같은데요. 당신이에서 onCreate()를 구현했습니다 및 매개 변수로 데이터베이스를 제공하는 방법을 참조

,

당신은 다음과 같이 DB의 핸들을 얻을 필요가의 createAccount 기능과 같은 새로운 기능을 작성하는 경우 : -

public void createAccount(String account) { 
    DATABASE_TABLE = account; 
    SQLiteDatabase db = this.getWritableDatabase(); 
    db.execSQL(TABLE_CREATE); 
    System.out.println(DATABASE_NAME);  
} 
  • 앤서니
+0

Anthony 그 덕분에 도움이되었습니다. 나는 여전히 문제가 있으며 첫 번째 게시물을 업데이트했습니다. –

+0

mDBHelper는 어디에 설정되어 있습니까? 내가 제공 한 코드에서 이것을 볼 수 없습니다. 마지막 함수가 다른 메소드와 같은 클래스에 있으면 함수를 직접 호출하면됩니다. 또한 여러 줄을 주석 처리하는 코드에/*가 있습니다. DATABASE_TABLE은 각 사용자 이름에 대한 테이블을 작성하려는 경우 create table 명령에서 사용해야합니다. –

+0

Anthony, 다시 한 번 감사드립니다. mDBHelper는 파일의 맨 위에 설정되었고/*는 실제 코드에 없습니다. 내가 생각하기에 작동합니다. 나는 데이터베이스를 열지 않았다! Ooops. –

관련 문제