android studio与sqlite错误
问题描述:
我想用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;
}
}
答
错误是在你GETALL()方法,通过异常详细说明:
String selectQuery = "SELECT " +
COLUMN_GNAME + " , " +
" FROM " + TABLE_KUNDEN_LIST;
语法错误在你的SELECT查询,逗号旁边FROM。更改为:
String selectQuery = "SELECT " +
COLUMN_GNAME +
" FROM " + TABLE_KUNDEN_LIST;
答
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等等。
您的选择查询错误。你最有可能错过'',''''之前的'''''FROM'之后的一列。 – user8