2013-12-12 45 views
0

我想在SQLite中創建2個(或更多)表,但有問題。我創建了一個表之前,這是工作,但現在當我嘗試製作第二個表並插入一些數據它說'沒有這樣的表'無法在Android SQLite中創建兩個表

爲什麼這不工作?

@Override 
    public void onCreate(SQLiteDatabase db) { 


     // create wedstrijden table 
     String CREATE_WEDSTRIJD_TABLE = "CREATE TABLE wedstrijd (" + 
       "id     INTEGER PRIMARY KEY, " + 
       "datum    TEXT, " + 
       "thuisclub   NUMERIC, " + 
       "bezoekers   NUMERIC, " + 
       "thuistenue   TEXT, " + 
       "bezoekerstenue  TEXT, " + 
       "aftrap    TEXT, " + 
       "begintijd1ehelft TEXT, " + 
       "eindtijd1ehelft TEXT, " + 
       "extratijd1ehelft TEXT, " + 
       "begintijd2ehelft TEXT, " + 
       "eindtijd2ehelft TEXT, " + 
       "extratijd2ehelft TEXT, " + 
       "verlengen   NUMERIC, " + 
       "penalties   NUMERIC, " + 
       "begintijdverlengen TEXT, " + 
       "eindtijdverlengen TEXT, " + 
       "totalespeeltijd TEXT, " + 
       "begintijdpenalties TEXT, " + 
       "eindtijdpenalties TEXT, " + 
       "doelpuntenthuis NUMERIC, " + 
       "doelpuntenuit  NUMERIC)"; 
     db.execSQL(CREATE_WEDSTRIJD_TABLE); 

     // create teams table 
     String CREATE_TEAM_TABLE = "CREATE TABLE teams (" + 
       "id  INTEGER PRIMARY KEY, " + 
       "naam TEXT, " + 
       "trainer TEXT, " + 
       "tenue TEXT)"; 
     db.execSQL(CREATE_TEAM_TABLE); 

    } 

,並添加數據我這樣做:

db.addTeam(new DatabaseTeams(bezoekersTeam,bezoekersTrainer,bezoekersTenue)); 

public void addTeam(DatabaseTeams team){ 
// 1. get reference to writable DB 
SQLiteDatabase db = this.getWritableDatabase(); 
// 2. create ContentValues to add key "column"/value 
ContentValues values = new ContentValues(); 
values.put(KEY_NAAM_TEAM, team.getTeamNaamThuis()); 
values.put(KEY_TRAINER_TEAM, team.getTeamTrainerThuis()); 
values.put(KEY_TENUE_TEAM, team.getTeamTenueThuis()); 
// 3. insert 
long lastId = db.insert(TABLE_TEAM, // table 
null, //nullColumnHack 
values); // key/value -> keys = column names/ values = column values 
Log.d("Insert new team "+lastId+" invoeren", team.toString()); 
// 4. close 
db.close(); 
} 

值是:

// Team Info 
    // Team table name 
    private static final String TABLE_TEAM = "teams"; 

    // Team table Columns names 
    private static final String KEY_ID_TEAM = "id"; 
    private static final String KEY_NAAM_TEAM = "naam"; 
    private static final String KEY_TRAINER_TEAM = "trainer"; 
    private static final String KEY_TENUE_TEAM = "tenue"; 

    private static final String[] COLUMNS_TEAM = {KEY_ID_TEAM,KEY_NAAM_TEAM,KEY_TRAINER_TEAM,KEY_TENUE_TEAM}; 
+1

'TABLE_TEAM'的價值是什麼? – Apoorv

+1

把你的logcat錯誤,如果你有任何崩潰? –

+0

一旦你創建了一個表,然後如果你想添加另一個表,那麼你需要更改數據庫版本,否則它將始終引用舊的數據庫。 – GrIsHu

回答

3

你的問題可能是onCreate()不會被調用。

每次更改數據庫結構時,都需要增加SQLiteOpenHelper中的int DATABASE_VERSION數據庫版本。您還必須正確執行onUpgrade(),因爲當Android檢測到數據庫版本已增加時會調用它。像這樣做:

@Override 
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
     // drop old tables 
     onCreate(db); 
    } 

一個更詳盡的解釋和代碼示例見android tutorial on creating an sqlite helper