2012-06-09 95 views
0

我創建一個有2列的數據庫時出現問題。 第一個應該有一個名字,第二個是一個數字。 創建名稱數據庫是沒有問題的,但是當我嘗試添加第二列時,我收到錯誤消息「I/Database(13531):sqlite返回:error code = 1,msg = no such column:zahl」SQLite> 1列表錯誤代碼= 1

我的代碼是在這裏

第一經理

package my.studienarbeit.bestimmung.database; 

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

public class DatenbankManager extends SQLiteOpenHelper { 

private static final String DB_NAME = "carbohydrates.db"; 
private static final int DB_VERSION = 1; 

private static final String WEIGHT_CREATE = 
     "CREATE TABLE weight (" 
     + "_id INTEGER PRIMARY KEY AUTOINCREMENT, " 
     + "name TEXT NOT NULL, " + 
    // + "zahl INTEGER" + 
     ")"; 


public DatenbankManager(Context context) { 
    super(context, DB_NAME, null, DB_VERSION); 
} 

@Override 
public void onCreate(SQLiteDatabase db) { 
    db.execSQL(WEIGHT_CREATE); 

} 

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

} 

和我的數據庫:

package my.studienarbeit.bestimmung.database; 

import my.studienarbeit.bestimmung.R; 
import android.app.ListActivity; 
import android.content.ContentValues; 
import android.database.Cursor; 
import android.database.sqlite.SQLiteDatabase; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.EditText; 
import android.widget.SimpleCursorAdapter; 
import android.widget.Toast; 

public class Datenbanken extends ListActivity { 

private SQLiteDatabase mDatenbank; 
private DatenbankManager mHelper; 
/*/ private static final String WEIGHT_SELECT_RAW = 
     "SELECT _id, name, zahl FROM weight" ; //*/ 

//*/ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.daten_datenbanken); 
    mHelper = new DatenbankManager(this); 
    mHelper.getWritableDatabase(); 

} 

@Override 
protected void onPause() { 
    super.onPause(); 
    mDatenbank.close(); 
    Toast.makeText(this, 
       getResources().getString(R.string.tx_daten_datenbanken_db_geschlossen), 
      Toast.LENGTH_SHORT).show(); 
} 

@Override 
protected void onResume() { 
    super.onResume(); 
    mDatenbank = mHelper.getWritableDatabase(); 
    Toast.makeText(
      this, 
      getResources().getString(
        R.string.tx_daten_datenbanken_db_geoeffnet 
        ), 
      Toast.LENGTH_SHORT) 
    .show(); 
    ladeDaten(); 

} 

private void ladeDaten() { 
    // Cursor weightCursor = mDatenbank.rawQuery(WEIGHT_SELECT_RAW, null); 
Cursor weightCursor = mDatenbank.query("weight", 
      new String [] { 
        "_id", 
        "name", 
       // "zahl", 
      }, 
      null, null, null, null, null     
     ); 

    startManagingCursor(weightCursor); 
    SimpleCursorAdapter weightAdapter = 
      new SimpleCursorAdapter(this, 
        android.R.layout.simple_list_item_2, 
        weightCursor, 
        new String [] { 
        "name", 
       // "zahl" 
        }, 
        new int[] { 
         android.R.id.text1 
        } 

      ); 

setListAdapter(weightAdapter); 
} 

public void onNavButtonClick(View view) { 
    EditText et_c = 
      (EditText) findViewById(R.id.editText_name_c); 
// EditText et_w = 
    //  (EditText) findViewById(R.id.editText_weight_c); 

    ContentValues werte = new ContentValues(); 
    werte.put("name", et_c.getText().toString()); 
// werte.put("zahl", et_w.getText().toString()); 
    mDatenbank.insert("weight", null, werte); 
    ladeDaten(); 
    et_c.setText(""); 
// et_w.setText(""); 

的第2列,現在是不活動的調試函數的納秒。 我真的希望你能幫助我。我對現在3天stucked ...

非常感謝

回答

0

如果你第一次創建你的表沒有「zahl」一欄,然後添加了「zahl」欄,然後重新運行你的應用程序中,OpenHelper沒有再次用新的價值觀來做「onCreate」。我的建議是,你首先刪除表(在模擬器上,進入設置>應用程序> Yourapp>點擊「清除數據」按鈕),然後取消註釋「zahl」行(特別是在DatenbankManager.java),然後重新編譯+運行。再次運行您的應用程序,使用空數據庫將重新創建帶有「zahl」列的表格。 托馬斯。

+0

謝謝。可以用你的方法解決問題:) – user1446175

+0

請不要猶豫「+1」我的答案......聲譽有點高不會傷害我! :) thx提前! – TomTomZJ