Тестовая активность SQLite получает ошибку - PullRequest
1 голос
/ 16 февраля 2012

Я изучаю SQLite и написал следующий класс

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 Double[] getMP_RPY(long id) {
    SQLiteDatabase db = this.getReadableDatabase();
    SQLiteCursor c = (SQLiteCursor) db.rawQuery("SELECT roll,pitch,yaw FROM MP_Data WHERE "+
                                                BaseColumns._ID+"="+
                                                Long.toString(id), null);
    c.moveToFirst();
    Double[] r = { c.getDouble(0), c.getDouble(1), c.getDouble(2) };
    return r;       
}

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

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 void deleteMP(long id) {
    SQLiteDatabase db = this.getWritableDatabase();
    db.delete(MP_TABLE_NAME, BaseColumns._ID+"="+Long.toString(id),null);   
}

, а также следующая деятельность:

public class SQLSaveData extends Activity{

EditText et01, et02;
Button btn;
SQLiteTestActivity mphelper;
SQLiteDatabase db ;
ContentValues cv;

OnKeyListener et01Listener = new OnKeyListener() {

    @Override
    public boolean onKey(View v, int keyCode, KeyEvent event) {
        // TODO Auto-generated method stub

        if ( (event.getAction() == KeyEvent.ACTION_DOWN) &&
              ( keyCode == KeyEvent.KEYCODE_ENTER ) ) {

            save("name", et01.getText().toString());

            return true;
        }
        return false;
    }
};

OnKeyListener et02Listener = new OnKeyListener() {

    @Override
    public boolean onKey(View v, int keyCode, KeyEvent event) {
        // TODO Auto-generated method stub

        if ( (event.getAction() == KeyEvent.ACTION_DOWN) &&
                  ( keyCode == KeyEvent.KEYCODE_ENTER ) ) {

            save("lat", et02.getText().toString()); 
                return true;
            }
        return false;
    }
};


public void save(String key, String value)
{
    cv.put(key, Double.valueOf(value));
    long newID = db.insert("MPDetails", null, cv);
}

@Override    
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    et01 = (EditText) findViewById(R.id.et01);
    et02 = (EditText) findViewById(R.id.et02);
    btn = (Button) findViewById(R.id.btn01);

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

    et01.setOnKeyListener(et01Listener);
    et02.setOnKeyListener(et02Listener);
}

но я всегда получаю сообщение об ошибке: «Приложение неожиданно остановлено»; когда я отключаю «комментировать» следующие три строки: приложение. не дает этой ошибки, но когда я включаю следующие три строки это терпит крах

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

1 Ответ

0 голосов
/ 16 февраля 2012

Я думаю, вам нужно поставить пробел в конце строки CREATE, если только у вас нет пробела в начале MP_TABLE_NAME, что было бы нечетным.

"CREATE TABLE " + MP_TABLE_NAME

Это может не решитьваша проблема, но это начало.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...