2012-06-09 5 views
0

2 개의 열이있는 데이터베이스를 만드는 데 문제가 있습니다. 첫 번째에는 이름이 있어야하고 두 번째에는 숫자가 있어야합니다. 이름 데이터베이스를 만드는 데는 문제가 없지만 두 번째 열을 추가하려고하면 "I/Database (13531) : sqlite가 반환했습니다 : 오류 코드 = 1, msg = 해당 열 : 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 열은 디버그 능을 위해 지금 활성화되지 않습니다 ns. 정말 저를 도울 수 있기를 바랍니다. 나는 ...

덕분에 많은 지금 3 일간이에 stucked 오전 먼저 다음은 "Zahl"(갯수) 열없이 테이블을 만든 "Zahl"(갯수) 열을 추가하고 응용 프로그램의 OpenHelper를 다시 실행하면

답변

0

새로운 값으로 "onCreate"를 다시하지 않았습니다. 내 제안은 당신이 먼저 에뮬레이터에서 에뮬레이터에서 Settings> Applications> Yourapp> "Clear Data"버튼을 클릭 한 다음 "zahl"행 (특히 DatenbankManager.java)의 주석 처리를 제거한 다음 다시 컴파일하고 실행하는 것입니다. 빈 데이터베이스로 앱을 다시 실행하면 열 "zahl"이있는 테이블이 다시 생성됩니다. 토마스.

+0

감사합니다. 당신의 방법으로 문제를 해결할 수 있습니다 :) – user1446175

+0

"+1"내 대답을 망설이지 말아주세요 ... 조금 더 높은 평판을 가지고 나를 해가되지 않을 것입니다! :) thx 사전에! – TomTomZJ