Возникли проблемы при создании базы данных SQlite, такого столбца нет? - PullRequest
0 голосов
/ 06 сентября 2018

Позвольте мне начать с того, что да, я удаляю приложение из эмулятора каждый раз, когда я пытаюсь его повторить !!

Хорошо, надеюсь, это довольно просто. Я изучаю Android SQLITE и ниже очень простую базу данных, в которой я устанавливаю текстовое значение по умолчанию. Естественно, можно подумать, что, установив столбец по умолчанию, тогда Sqlite автоматически вставит строку, верно? независимо от того, я продолжаю получать такой столбец, как ошибка myColumn. пожалуйста, помогите!

public class DatabaseTestHelper extends SQLiteOpenHelper{
    private static final String DB_NAME = "DB_NAME";
    private static final int DB_VERSION = 1;

private static final String DATABASE_CREATE =
        "CREATE TABLE SORT_TABLE (_id INTEGER PRIMARY KEY AUTOINCREMENT, 
myColumn TEXT DEFAULT 'IT WORKED!!');";


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

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

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

}

}

это инстанцированные кнопки на клике

 public void onClickYo(View view) {
    new AsyncTaskTest().execute(true);
}

here is the Async in the same class
  private class AsyncTaskTest extends AsyncTask<Boolean,Void,String>{
        String success;

        @Override
        protected String doInBackground(Boolean... sortTests) {
            try {
                SQLiteOpenHelper dbHelper =
                        new DatabaseTestHelper(titleActivity.this);
                SQLiteDatabase theDb = dbHelper.getReadableDatabase();
                Cursor cursor = theDb.query(
                        "SORT_TABLE",new String[]{"myColumn"},
                        null,null,null,
                        null,null);

                if (cursor.moveToFirst()) {

                     success = cursor.getString(0);
                } else {
                    success = "MOVE TO FIRST TRIPPIN";
                }

                cursor.close();
                theDb.close();

            } catch(SQLiteException e){
                e.printStackTrace();
            }
            return success;
        }

        @Override
        protected void onPostExecute(String dbString) {
            textView.setText(dbString);

        }
    }
}


09-05 18:32:31.935 10341-10387/com.hf.mysquad E/SQLiteLog: (1) no such column: myColumn

1 Ответ

0 голосов
/ 06 сентября 2018

Попробуйте это:

  private static final String DATABASE_CREATE = 
         "CREATE TABLE SORT_TABLE (_id INTEGER PRIMARY KEY AUTOINCREMENT,myColumn TEXT);";

  db.execSQL(DATABASE_CREATE);

В вашем выпуске № 2 пять ", число двойных кавычек нечетное, поэтому его неправильно.

и в вашем выпуске# 1, специальная одинарная кавычка должна быть заменена на одинарную кавычку doulbe,

' shoule be ''

Лучший способ - использовать нативный метод Android, предназначенный именно для этой цели. sqlEscapeString

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