2012-02-17 4 views
0
public class SQLiteTestActivity extends SQLiteOpenHelper { 

private static final int DATABASE_VERSION = 2; 
private static final String DATABASE_NAME = "MP_DB.db"; 
private static final String MP_TABLE_NAME = "MPDetails"; 

SQLiteTestActivity (Context context) { 
    super(context, DATABASE_NAME, null, DATABASE_VERSION); 
}// end of 

@Override 
public void onCreate(SQLiteDatabase db) { 
    // TODO Auto-generated method stub 
    db.execSQL(" CREATE TABLE " + MP_TABLE_NAME + " (" + 
      BaseColumns._ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + 
      " name TEXT, " + 
      " lat REAL, "+ 
      " lng REAL,"+ 
      " roll REAL,"+ 
      " pitch REAL,"+ 
      " yaw REAL,"+ 
      " path TEXT"+ 
      ");"); 
} 

@Override 
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
    // TODO Auto-generated method stub 

} 


public String getMP_Name(long id) { 
    SQLiteDatabase db = this.getReadableDatabase(); 
    SQLiteCursor c = (SQLiteCursor) db.rawQuery("SELECT name FROM MP_Data WHERE "+ 
               BaseColumns._ID+" = "+ 
               Long.toString(id), null); 
    c.moveToFirst(); 
    String r = c.getString(0); 
    return r;  
} 

public Double getMP_Lat(long id) { 
    SQLiteDatabase db = this.getReadableDatabase(); 
    SQLiteCursor c = (SQLiteCursor) db.rawQuery("SELECT lat FROM MP_Data WHERE "+ 
               BaseColumns._ID+" = "+ 
               Long.toString(id), null); 
    c.moveToFirst(); 
    Double r = c.getDouble(0); 
    return r;  
} 

public int getRowsCounter() { 
    SQLiteDatabase db = this.getReadableDatabase(); 
    SQLiteCursor c = (SQLiteCursor) db.rawQuery("SELECT COUNT (*) FROM MPDetails ", null); 
    c.moveToFirst(); 
    int r = c.getCount(); 
    return r;  
} 

public void deleteMP(long id) { 
    SQLiteDatabase db = this.getWritableDatabase(); 
    db.delete(MP_TABLE_NAME, BaseColumns._ID+"="+Long.toString(id),null); 
} 

public void deleteALLMP() { 
    SQLiteDatabase db = this.getWritableDatabase(); 
    db.delete(MP_TABLE_NAME,null, null);  
} 

}Ошибка SQLite при очистке всех строк таблицы?

OnClickListener save_btnListener = new OnClickListener() { 

    @Override 
    public void onClick(View v) { 
     // TODO Auto-generated method stub 

     db = mphelper.getWritableDatabase(); 
     cv = new ContentValues(); 

     String str1 = et01.getText().toString(); 
     String str2 = et02.getText().toString(); 

     if((("").equals(str1) ||("").equals(str2))) { 
      Toast.makeText(getBaseContext(), "both or either fields are empty", Toast.LENGTH_SHORT).show(); 
     } else{ 

     cv.put("name", str1); 
     cv.put("lat", Double.valueOf(str2)); 


     long newID = db.insert("MPDetails", null, cv); 
     count = mphelper.getRowsCounter(); 

     if (newID != -1){ 
      Toast.makeText(getBaseContext(), 
          "data saved ", 
          Toast.LENGTH_SHORT).show();    
     }// end if 
     }txt04.setText(String.valueOf(count));  
    } 
}; 

OnClickListener clear_btnListener = новый OnClickListener() {

@Override 
    public void onClick(View v) { 
     // TODO Auto-generated method stub 
     txt04 = (TextView) findViewById(R.id.txt04); 
     mphelper.deleteALLMP(); 
     count = mphelper.getRowsCounter(); 
     txt04.setText(String.valueOf(count)); 
    } 
}; 

1-Когда я очищаю БД с "clear_btnListener" и нажмите кнопку Сохранить "save_btnListener" приложение сбой, несмотря на то, что я написал if statement, чтобы проверить, будут ли поля, которые нужно сохранить, пустыми или нет.

2-Когда я очищаю БД и показываю число строк в таблице, я ожидаю, что получится ноль, но на самом деле, я получаю 1 ???

+1

добавьте выход LogCat или указать ошибку в LogCat – user936414

ответ

0

AS настолько, насколько я мог сказать ... все, что было сделано в sqlite, лучше сделать это на SqliteActivity и сделать объект этого класса и использовать его.

1

Вы должны удалить существующий MP_DB.db на свой эмулятор/телефон. и воссоздать базу данных, имеющую следующий изменил в SQLiteTestActivity:

private static final String MP_TABLE_NAME = "MPDetails"; 

в

private static final String MP_TABLE_NAME = "MP_Data"; 

и SQLSaveData:

long newID = db.insert("MPDetails", null, cv); 

в

long newID = db.insert("MP_Data", null, cv); 

и установите следующие

et02.setInputType(InputType.TYPE_CLASS_NUMBER|InputType.TYPE_NUMBER_FLAG_DECIMAL|InputType.TYPE_NUMBER_FLAG_SIGNED); 

иначе вы получите NumberFormatException


Приветствия

+0

установить его в качестве ответа, пожалуйста, –

Смежные вопросы