2017-02-03 12 views
0

アンドロイドスタジオにSQLiteデータベースでアプリを書いてみたい。データベーステーブルの1つの列はスピナーで読み出されます。しかし、私は次のエラーでアプリがクラッシュし、スピナーで活動を開始しようとすると:ここ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'の前に '' -comma ''の後ろにある列を見逃したでしょう。 – user8

答えて

1

エラーはエラーの詳細が述べたように、あなたのgetAll()メソッドです:あなたからの横に、クエリ、コンマを選択

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

構文エラーに。

String selectQuery = "SELECT " + 
    COLUMN_GNAME + 
    " FROM " + TABLE_KUNDEN_LIST; 
0
ブールのSQLiteに存在しない
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);"; 

、それはそれが解析整数列でなければならない:

//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などに精通する必要があります。

関連する問題