代码之家  ›  专栏  ›  技术社区  ›  Paris B. G.

创建SQlite数据库时遇到问题,没有这样的列吗?

  •  -1
  • Paris B. G.  · 技术社区  · 6 年前

    让我先说,是的,我已经从我的模拟器卸载应用程序,每次我重新尝试!!

    好吧,希望这个很简单。我正在学习androidsqlite,下面是一个非常简单的数据库,我将文本值设置为默认值。很自然,人们会认为通过设置一个列默认值,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) {
    
    }
    
    }
    

    这是一个实例化的按钮onClick

     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 回复  |  直到 6 年前
        1
  •  1
  •   navylover    6 年前

    试试这个:

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

    " ,双引号的数字是奇数,所以它是错误的。

    在您的第1期中,特殊单引号应改为双引号,

    ' shoule be ''
    

    sqlEscapeString