2013-07-08 2 views
1

Я создал таблицу базы данных для создания и вставки данных. Это «виртуальная таблица», которую я сделал для полнотекстового поиска. Но когда я запускаю свое приложение, появляется предупреждение о том, что «такая таблица не найдена».Нет такой таблицы: Ошибка в android

Пожалуйста, помогите мне. Я отправляю свой файл базы данных. Заранее спасибо ...

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; 
    } 
} 
+0

Является предупреждением или по ошибке? –

+0

Ошибка, а не предупреждение. Пожалуйста помоги. –

+0

@SubhajeetParia Почему вы создаете виртуальный стол? Не могли бы вы попробовать, не создавая его? –

ответ

3

Первая линия OnCreate пытается удалить все строки из таблицы, но вы еще не создали таблицу еще. Это вызывает ошибку.

+0

Нет, его все еще не работает, если я удалю метод db.delete(). Ошибка: android.database.sqlite.SQLiteException: нет такой таблицы: cpy_fts (код 1): при компиляции: заголовок SELECT, автор, издатель, издание FROM cpy_fts WHERE content MATCH 'system' –

+0

Является ли заявление create успех? –

+0

yeah..it должен работать. Это способ создать виртуальную таблицу для полнотекстового поиска в SQLite. Я уверен, что утверждение верно. –

0

Первая ошибка я вижу:

db.execSQL("Drop table if exists" + TABLE_NAME); 

Пожалуйста, замените на

db.execSQL("Drop table if exists " + TABLE_NAME); 

в методе onUpgrade.

Тогда, пожалуйста, сообщите строке ошибки? Или лучше написать сообщение LogCat