2017-02-03 67 views
0

我想用android studio中的SQLite数据库编写应用程序。数据库表的一列应该在微调器中读出。但是,当我尝试启动微调活动中,应用程序崩溃,并出现以下错误:android studio与sqlite错误

Error Code : 1 (SQLITE_ERROR) Caused By : SQL(query) error or missing database. (near "FROM": syntax error (code 1): , while compiling: SELECT Gruppe , FROM Kunden_list)

这里我类之一的代码。我认为错误是在这个班上,还是我错了?

package com.example.katjarummler.hundeschule_petra_bennemann; 



import android.content.Context; 
import android.database.Cursor; 
import android.database.sqlite.SQLiteDatabase; 
import android.database.sqlite.SQLiteOpenHelper; 
import android.util.Log; 

import java.util.ArrayList; 
import java.util.List; 

public class HundeschuleMemoDBHelper extends SQLiteOpenHelper { 


private static final String LOG_TAG =    
HundeschuleMemoDBHelper.class.getSimpleName(); 



public static final String DB_NAME = "Kunden_list.db"; 
public static final int DB_VERSION = 6; 

public static final String TABLE_KUNDEN_LIST = "Kunden_list"; 


public static final String COLUMN_ID = "_id"; 
public static final String COLUMN_KName = "Name"; 
public static final String COLUMN_GNAME = "Gruppe"; 
public static final String COLUMN_KTELEFON = "Telefon"; 
public static final String COLUMN_HUND = "Hund"; 
public static final String COLUMN_BEGINN = "Beginn"; 
public static final String COLUMN_CHECKED = "checked"; 



public static final String SQL_CREATE = "CREATE TABLE " + 
TABLE_KUNDEN_LIST + 
     "(" + COLUMN_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + 
     COLUMN_KName + " TEXT NOT NULL, " + 
     COLUMN_GNAME + " TEXT NOT NULL, " + 
     COLUMN_KTELEFON + " TEXT NOT NULL, " + 
     COLUMN_HUND + " TEXT NOT NULL, " + 
     COLUMN_BEGINN + " TEXT NOT NULL, " + 
     COLUMN_CHECKED + " BOOLEAN NOT NULL DEFAULT 0);"; 


public static final String SQL_DROP = "DROP TABLE IF EXISTS " + 
TABLE_KUNDEN_LIST; 



public HundeschuleMemoDBHelper(Context context) { 
    super(context, DB_NAME, null, DB_VERSION); 
    Log.d(LOG_TAG, "DBHelper hat die Datenbank: " + getDatabaseName() + 
" erzeugt."); 
} 



//Die onCreate-Methode wird nur aufgerufen, falls die Datenbank noch 
nicht existiert 
public void onCreate(SQLiteDatabase db) { 
    try{ 
     Log.d(LOG_TAG, "Die Tabelle wird mit SQL-Befehl: " + SQL_CREATE 
+ " angelegt."); 
     db.execSQL(SQL_CREATE); 

    } 
    catch(Exception ex){ 
     Log.e(LOG_TAG, "Fehler beim Anlegen der Tabelle: " +  
ex.getMessage()); 
    } 

} 


// Die onUpgrade-Methode wird aufgerufen, sobald die neue 
Versionsnummer höher 
// als die alte Versionsnummer ist und somit ein Upgrade notwendig wird 

public void onUpgrade(SQLiteDatabase db, int oldVersion, int 
newVersion) { 
    Log.d(LOG_TAG, "Die Tabelle mit Versionsnummer " + oldVersion + " 
wird entfernt."); 
    db.execSQL(SQL_DROP); 

    onCreate(db); 
} 


public List<HundeschuleMemoKunden> getAll(){ 

    SQLiteDatabase database = this.getReadableDatabase(); 
    String selectQuery = "SELECT " + 
      COLUMN_GNAME + " , " + 
      " FROM " + TABLE_KUNDEN_LIST; 

    List<HundeschuleMemoKunden> gruppenList = new 
ArrayList<HundeschuleMemoKunden>(); 
    Cursor cursor = database.rawQuery(selectQuery, null); //The mark 
of the error is here 

    //looping through all rows and adding to list 
    if(cursor.moveToFirst()){ 
     do{ 

      HundeschuleMemoKunden gruppe = new 
HundeschuleMemoKunden("kName", "gName", "kTelefon", "hName", "beginn"); 

gruppe.setgName(cursor.getString(cursor.getColumnIndex 
(this.COLUMN_GNAME)) 
); 
      gruppenList.add(gruppe); 

     }while(cursor.moveToNext()); 
    } 

    cursor.close(); 
    database.close(); 
    return gruppenList; 
} 



} 
+0

您的选择查询错误。你最有可能错过'',''''之前的'''''FROM'之后的一列。 – user8

回答

1

错误是在你GETALL()方法,通过异常详细说明:

String selectQuery = "SELECT " + 
     COLUMN_GNAME + " , " + 
     " FROM " + TABLE_KUNDEN_LIST; 

语法错误在你的SELECT查询,逗号旁边FROM。更改为:

String selectQuery = "SELECT " + 
    COLUMN_GNAME + 
    " FROM " + TABLE_KUNDEN_LIST; 
0
public static final String SQL_CREATE = "CREATE TABLE " + 
TABLE_KUNDEN_LIST + 
    "(" + COLUMN_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + 
    COLUMN_KName + " TEXT NOT NULL, " + 
    COLUMN_GNAME + " TEXT NOT NULL, " + 
    COLUMN_KTELEFON + " TEXT NOT NULL, " + 
    COLUMN_HUND + " TEXT NOT NULL, " + 
    COLUMN_BEGINN + " TEXT NOT NULL, " + 
    COLUMN_CHECKED + " BOOLEAN NOT NULL DEFAULT 0);"; 

布尔不存在sqlite的,它应该是一个整数列,其中解析是:

//value is 1 then true else false 
value > 0 ? true : false 

和插入应该

//value is true = 1 else 0 
value ? 1 : 0 

如果这个数据是准确的,那么表格就不能正确创建。 也从您的select语句中删除逗号。也不要做原始查询,你应该熟练掌握database.query,database.insert,database.delete等等。