【发布时间】:2019-05-18 09:04:36
【问题描述】:
我是应用程序开发的新手,正在尝试构建一个搜索名为“All”的数据库表的应用程序,但不断收到此错误:
E/SQLiteLog: (1) "All" 附近:语法错误
错误代码:1 (SQLITE_ERROR) 原因:SQL(查询)错误或缺少数据库。 (“All”附近:语法错误(代码 1):,编译时:SELECT Phrase FROM All)
我认为这一定是我的数据库设置有问题,但找不到问题。
这是我的代码:
public class Database extends SQLiteAssetHelper {
private static final String DB_NAME="DoYouGetMeDoc.db";
private static final int DB_VER=1;
public Database(Context context) {
super(context, DB_NAME, null, DB_VER);
}
public List<Items> getall(){
SQLiteDatabase db = getReadableDatabase();
SQLiteQueryBuilder qb = new SQLiteQueryBuilder();
String[] sqliteSelect={"Phrase","Description","Example", "Chapter"};
String tableName="All";
qb.setTables(tableName);
Cursor cursor = qb.query(db,sqliteSelect,null,null,null,null,null);
List<Items> results = new ArrayList<>();
if (cursor.moveToFirst()){
do {
Items items = new Items();
items.setPhrase(cursor.getString(cursor.getColumnIndex("Phrase")));
items.setDescription(cursor.getString(cursor.getColumnIndex("Description")));
items.setExample(cursor.getString(cursor.getColumnIndex("Example")));
items.setChapter(cursor.getString(cursor.getColumnIndex("Chapter")));
results.add(items);
}while (cursor.moveToNext());
}
return results;
}
public List<String> getPhrases(){
SQLiteDatabase db = getReadableDatabase();
SQLiteQueryBuilder qb = new SQLiteQueryBuilder();
String[] sqliteSelect={"Phrase"};
String tableName="All";
qb.setTables(tableName);
Cursor cursor = qb.query(db,sqliteSelect,null,null,null,null,null);
List<String> results = new ArrayList<>();
if (cursor.moveToFirst()){
do {
results.add(cursor.getString(cursor.getColumnIndex("Phrase")));
}while (cursor.moveToNext());
}
return results;
}
public List<Items> getPhrasesbyPhrase(String phrase)
{
SQLiteDatabase db = getReadableDatabase();
SQLiteQueryBuilder qb = new SQLiteQueryBuilder();
String[] sqliteSelect={"Phrase","Description","Example","Chapter"};
String tableName="All";
qb.setTables(tableName);
Cursor cursor = qb.query(db,sqliteSelect,"Phrase like ?",new String[]{"%"+phrase+"%"},null,null,null);
List<Items> results = new ArrayList<>();
if (cursor.moveToFirst()){
do {
Items items = new Items();
items.setPhrase(cursor.getString(cursor.getColumnIndex("Phrase")));
items.setDescription(cursor.getString(cursor.getColumnIndex("Description")));
items.setExample(cursor.getString(cursor.getColumnIndex("Example")));
items.setChapter(cursor.getString(cursor.getColumnIndex("Chapter")));
results.add(items);
}while (cursor.moveToNext());
}
return results;
} }
简而言之,我的应用程序应该允许用户使用我在 MainActivity.xml 中设置的搜索栏搜索数据库,但每次我尝试打开应用程序时它都会崩溃。
我完全被难住了,如果能得到一些建议,我真的很感激。
更新: 我将表名从“All”更改为“FullBook”,现在出现此错误:
E/SQLiteLog: (1) no such table: FullBook
【问题讨论】:
-
嗨 Rehman,ALL 是 SQLLITE 中的保留关键字(请参阅 sqlite.org/lang_keywords.html)。我会尝试重新命名您的表,然后再试一次。
标签: android sql sqlite syntax-error