java - 没有这样的表 : Error in android

标签 java android xml sqlite

我制作了一个用于创建和插入数据的数据库表。这是我为全文搜索制作的“虚拟表”。但是当我运行我的应用程序时,警告显示“找不到这样的表”。

请帮帮我。我正在发布我的数据库文件。提前致谢...

package com.search.wordfinder;

import java.util.ArrayList;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.content.ContentValues;
import android.util.*;

public class DatabaseCreation extends SQLiteOpenHelper {

String sString;
SQLiteDatabase mDatabase;
String query;
public static final String DATABASE_NAME = "wor.db";
public static final int DATABASE_VERSION = 1;
public static final String TABLE_NAME = "cpy_fts";
public static final String DATABASE_CREATE =  "CREATE VIRTUAL TABLE " + TABLE_NAME + " USING FTS3" + "(" + "title TEXT, " + "author TEXT, " + "publisher TEXT, " + "edition TEXT, " + "content TEXT" + ")";

public DatabaseCreation(Context context) {
    super(context, DATABASE_NAME,null,DATABASE_VERSION);
}

@Override
    public void onCreate(SQLiteDatabase db) {

    try{
        db.delete(TABLE_NAME, null, null);
        db.execSQL(DATABASE_CREATE);

        insertData("Operating System", "PeterGalvin", "Willey", "Eight", "An operating System (OS) is a collection of software that manages computer hardware resources and provides common services for computer programs.");
        insertData("Database Management System", "Korth", "McGraw-Hill", "Fourth", "A DataBase Management System (DBMS) is a software system that manages execution of users applications to access and modify database.");         
        } catch (Exception e){ 
            e.printStackTrace();
            }
    }

@Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        Log.w(DatabaseCreation.class.getName(),"Upgrading database from version " + 
        oldVersion + " to " + newVersion + ",which will destroy all old data");
        db.execSQL("Drop table if exists" + TABLE_NAME);
        onCreate(db);
}

public void insertData(String ttl, String athr, String pub, String ed, String cnt)  {
    mDatabase = this.getWritableDatabase();
    ContentValues values = new ContentValues();
    values.put("title", ttl);
    values.put("author", athr);
    values.put("publisher", pub);
    values.put("edition", ed);
    values.put("content", cnt);
    mDatabase.insert(TABLE_NAME, null, values);
    mDatabase.close();
}

public ArrayList<String> queryDatabase(String id){
    sString=id;
    ArrayList<String> data = new ArrayList<String>();
    try{
    query = "SELECT title,author,publisher,edition FROM " + TABLE_NAME + " WHERE content MATCH '"+sString+"'";
    Cursor c = this.getReadableDatabase().rawQuery(query, null);
        c.moveToFirst();
        while(c.isAfterLast()==false){
            String str = "Title: " + c.getString(0) +"\n"+ "Author: " + c.getString(1)+ "\n" + "Publisher: " + c.getString(2) + "\n" +
                    "Edition: " + c.getString(3);
            data.add(str);
            c.moveToNext();
        }   
        c.close();
    } catch(Exception e) {
        e.printStackTrace();
    }
    return data;
    }
}

最佳答案

YOur onCreate 的第一行尝试删除表中的所有行,但您尚未创建表。这就是导致错误的原因。

关于java - 没有这样的表 : Error in android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17520580/

相关文章:

java - 在同一个Android Studio页面中显示两个listView

html - 对实体 "subset"的引用必须以 ';' 分隔符结尾

xml - 向嵌套元素添加命名空间

java - hadoop 中用于映射器和组合器的不同上下文类型

android - 从 fragment 设置适配器时 CustomListAdapter 中的 NullPointerException

java - 如何编写允许特殊字符 DOT 的正则表达式?

android - Android M Preview 3 上的接近传感器卡住问题

android - 将 Android 移植到新的 LWUIT 1.5

Java 数据库添加到我删除的行?

java - 由于缺少 tools.jar,Maven AspectJ 插件无法使用 Java 9 构建