0
지금까지 문제없이 데이터베이스를 업데이트 할 때까지 다른 테이블이있는 데이터베이스가 있습니다. 하지만 지금은 "TABLE_ALERTAS"데이터베이스 버전 "DATABASE_VERSION = 12"업로드 항상 새 행을 추가하려면 행을 존재하지 않는 오류를 제공하십시오. 나는 무엇을 더 시도해야할지 모른다.SQLite 데이터베이스를 업데이트 할 수 없습니다. Android
저는 앱을 열 때 다른 모든 테이블이 업데이트된다는 것을 알고 있습니다.
문제는 내가 TABLE_ALERTAS에 KEY_CODIALERTA 행을 추가 할 때입니다.
공용 클래스 DBAdapter {
public static final String KEY_ROWID = "ID";
public static final String KEY_CODIACTIVITAT = "CODIACTIVITAT";
public static final String KEY_ACTIVITAT = "ACTIVITAT";
public static final String KEY_DATA = "DATA";
public static final String KEY_HORES = "HORES";
public static final String KEY_ROWID2 = "ID2";
public static final String KEY_nomprojecte = "NOMPROJECTE";
public static final String KEY_codictivitat = "CODIACTIVITAT";
public static final String KEY_nomctivitat = "NOMACTIVITAT";
public static final String KEY_codiprojecte = "CODIPROJECTE";
// Login table name
private static final String TABLE_LOGIN = "login";
// Login Table Columns names
private static final String KEY_ID = "id";
private static final String KEY_NAME = "name";
private static final String KEY_EMAIL = "email";
private static final String KEY_UID = "uid";
private static final String KEY_DNI = "created_at";
// Alert table name
private static final String TABLE_ALERTAS = "alertas";
// Alert Table Columns names
private static final String KEY_TEXTALERTA = "TEXTALERTA";
private static final String KEY_DESCALERTA = "DESCALERTA";
private static final String KEY_NOMACTIVITAT = "NOMACTIVITAT";
private static final String KEY_TITOLPROJECTE = "TITOLPROJECTE";
private static final String KEY_CODIALERTA = "CODIALERTA";
public static final String DATABASE_NAME = "DB_Informacio";
public static final String DATABASE_TABLE = "Informacio";
public static final String DATABASE_TABLE2 = "dadesPerOmplir";
public static final int DATABASE_VERSION = 12;
public static final String TAG = "DBAdapter";
public static final String DATABASE_CREATE = "create table "+DATABASE_TABLE+"("+KEY_ROWID+" integer primary key autoincrement not null, "+
KEY_CODIACTIVITAT+" text not null, "+KEY_ACTIVITAT+" text not null, "+KEY_DATA+" text not null, "+KEY_HORES+" text not null);";
public static final String DATABASE_CREATE2 = "create table "+DATABASE_TABLE2+"("+KEY_ROWID2+" integer primary key autoincrement not null, "+
KEY_nomprojecte+" text not null, "+KEY_codictivitat+" text not null, "+KEY_nomctivitat+" text not null, "+KEY_codiprojecte+" text not null);";
public static final String CREATE_LOGIN_TABLE = "CREATE TABLE " + TABLE_LOGIN + "("
+ KEY_ID + " INTEGER PRIMARY KEY,"
+ KEY_NAME + " TEXT,"
+ KEY_EMAIL + " TEXT UNIQUE," //Es unique pq es el que utilizamos para el login "userName"
+ KEY_UID + " TEXT,"
+ KEY_DNI + " TEXT" + ")";
public static final String CREATE_ALERT_TABLE = "CREATE TABLE " + TABLE_ALERTAS + "("
+ KEY_ID + " INTEGER PRIMARY KEY,"
+ KEY_TEXTALERTA + " TEXT,"
+ KEY_DESCALERTA + " TEXT,"
+ KEY_NOMACTIVITAT + " TEXT,"
+ KEY_TITOLPROJECTE + " TEXT"
+ KEY_CODIALERTA + " TEXT" + ")";
private final Context context;
private DatabaseHelper DBHelper;
private SQLiteDatabase db;
public DBAdapter(Context ctx)
{
this.context = ctx;
DBHelper = new DatabaseHelper(context);
}
public static class DatabaseHelper extends SQLiteOpenHelper{
public DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
// TODO Auto-generated constructor stub
}
@Override
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
try{
db.execSQL(DATABASE_CREATE);
db.execSQL(DATABASE_CREATE2);
db.execSQL(CREATE_LOGIN_TABLE);
db.execSQL(CREATE_ALERT_TABLE);
}
catch(SQLException e)
{
e.printStackTrace();
}
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
Log.w(DBAdapter.TAG, "se ha actualizado la base de datos");
db.execSQL("DROP TABLE IF EXISTS '" + DBAdapter.DATABASE_TABLE + "'");
db.execSQL("DROP TABLE IF EXISTS '" + DBAdapter.DATABASE_TABLE2 + "'");
db.execSQL("DROP TABLE IF EXISTS '" + DBAdapter.TABLE_LOGIN + "'");
db.execSQL("DROP TABLE IF EXISTS '" + DBAdapter.TABLE_ALERTAS + "'");
onCreate(db);
}
}public long insertarAlerta(String txtalerta,String txtdescalerta, String txtnomactivitat, String txtnomprojecte, String intcodialerta)
{
ContentValues valores = new ContentValues();
valores.put(KEY_TEXTALERTA, txtalerta);
valores.put(KEY_DESCALERTA, txtdescalerta);
valores.put(KEY_NOMACTIVITAT, txtnomactivitat);
valores.put(KEY_TITOLPROJECTE, txtnomprojecte);
valores.put(KEY_CODIALERTA, intcodialerta);
return db.insert(TABLE_ALERTAS, null, valores);
}
와우 감사합니다. @tbkn – benLIVE
그래. * 예외가 정상적인 동작으로 발생하고 무시할 때의 결과를 알 수있을 때만 예외를 포착하고 무시하십시오. 그렇지 않으면 오류가보고되는지 확인해야하며 디버깅을 많이 절약 할 수 있습니다. – tbkn23