2014-05-22 3 views
0

안드로이드에서 두 개의 표를 원하지만 두 번째 표를 찾을 수없는 것과 같은 오류가 표시됩니다. 어떻게 해결할 수 있습니까? 데이터베이스 버전이나 onCreate 메소드에 문제가 있습니까?sqlite에서 두 개의 테이블을 만들려면 어떻게해야합니까?

public class dbHelper extends SQLiteOpenHelper{ 
    private static final String DATABASE_NAME = "DBO_Finish"; 
    private static final String TABLE_USERS = "users"; 
    private static final String TABLE_OLCUM = "olcum"; 
    private static final String TABLE_BILGI="asd"; 

    public dbHelper(Context context,Activity act) { 
     super(context, DATABASE_NAME, null, 1); 
    } 

    @Override 
    public void onCreate(SQLiteDatabase db) { 
     String sql = "CREATE TABLE IF NOT EXISTS " + TABLE_USERS + 
      "(id INTEGER PRIMARY KEY,user_name TEXT,user_password TEXT,olcum_id INTEGER" + ")"; 
     db.execSQL(sql); 

     String sql2 = "CREATE TABLE IF NOT EXISTS " + TABLE_BILGI + 
      "(id INTEGER PRIMARY KEY,shortName TEXT,longName TEXT" + ")"; 
     db.execSQL(sql2); 
    } 

    @Override 
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
     db.execSQL("DROP TABLE IF EXISTS " + TABLE_USERS); 
     db.execSQL("DROP TABLE IF EXISTS " + TABLE_BILGI); 

     onCreate(db); 
    } 
} 
+0

앱을 제거하십시오. 자세한 내용은 http://stackoverflow.com/questions/21881992/when-is-sqliteopenhelper-oncreate-onupgrade-run을 참조하십시오. – laalto

답변

0

내 테이블을 만들려면 아래 방법을 사용하십시오. u 필드를 추가하는 것처럼 테이블 구조를 수정하려면 먼저 UR 클래스를 변경하고 DatabaseHelper에서 dbVersion의 수를 하나씩 늘리십시오. 새 테이블이 생성됩니다.

같은 특정 클래스와 각 테이블 : Tbltest에 대한

TblTest.java 클래스 :

공용 클래스 TblTest {

public static final String TABLE = "Test"; 
    public static final String COLUMN_ID = "id"; 


    public int id; 

    public static final String CREATE_TABLE = "create table " 
       + TABLE + "(" 
       + COLUMN_ID + " integer primary key" 
       + ");"; 
    } 

및 데이터베이스 도우미에 대한 "DatabaseHelper.java"클래스 (만들기 표) :

public class DatabaseHelper extends SQLiteOpenHelper{ 

    private static final String DBNAME = "mytestdb"; 
    public SQLiteDatabase db; 
    private final static int dbVersion = 1; 

    public DatabaseHelper() { 
     super(AppContext.getAppContext(), DBNAME, null, dbVersion); 
     open(); 
     } 

     @Override 
     public void onCreate(SQLiteDatabase db) { 
      try { 
       db.execSQL(TblTest.CREATE_TABLE); 
     } catch (SQLException e) { 
      e.printStackTrace(); 
     } 
     } 

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

     public void open() throws SQLException { 

     db = getWritableDatabase(); 

     } 

     public void close() { 
      db.close(); 
     } 


} 
0

생성자의 3 번째 인수는 DB의 버전이 당신을 나타내는 숫자. 기본적으로 안드로이드 OS는 생성자를 해당 전화 번호로 호출 할 때마다 이미 해당 버전의 DB가 있는지 확인합니다. 더 이상 발생하지 않으면 DB가 존재하지 않거나 등록 된 버전이 낮 으면, 그러면 onUpgrade 메소드가 호출됩니다.

새 테이블을 추가하려는 경우 숫자를이 경우 '2'으로 변경하고 새 테이블을 만들 때마다 증가시킵니다.

희망, 환영합니다!

관련 문제