2011-06-02 94 views
0

所以我创建了一个数据库使用SQLiteOpenHelper,我试图查询它。它返回游标,但是当我打电话moveToFirst()它与错误SQL Logic Error or Missing Database.Android SQLiteDatabase查询SQL逻辑错误或丢失的数据库

我按照这个网站的代码来创建和查询我的数据库崩溃了:http://www.vogella.de/articles/AndroidSQLite/article.html

编辑:

我的数据库:

public class Database{ 
    private static final String DATABASE_NAME = "MyDatabase"; 
    private static final int DATABASE_VERSION = 1; 
    private static final String TABLE_NAME = "MyTable"; 

    // Column Names 
    public static final String ID = "_id";     // INTEGER 
    public static final String NUMBER = "number";   // TEXT 

    private SQLiteDatabase database; 
    private DatabaseHelper mDatabaseOpenHelper; 

    public Database(Context context){ 
      mDatabaseOpenHelper = new DatabaseHelper(context); 
      database = mDatabaseOpenHelper.getWritableDatabase(); 
    } 

    public void close(){ 
      database.close(); 
    } 

    public long addNumber(String number){ 
      ContentValues values = new ContentValues(); 
      values.put(NUMBER, number); 
      return database.insert(TABLE_NAME, null, values); 
    } 

    public Cursor getNumber(String number){ 
      String selection = NUMBER + " MATCH ?"; 
      String[] selectionArgs = new String[] {number}; 
      return database.query(TABLE_NAME, null, selection, selectionArgs, null, null, null); 
    } 

    private class DatabaseHelper extends SQLiteOpenHelper{ 

      private static final String CREATE_TABLE = "CREATE TABLE " + TABLE_NAME + "(_id INTEGER PRIMARY KEY AUTOINCREMENT, " + NUMBER + " TEXT)"; 

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

      public void onCreate(SQLiteDatabase db) { 
       db.execSQL(CREATE_TABLE); 
      } 

      public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
       db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME); 
       onCreate(db); 
      } 
     } 
} 

而且这是我的查询:

Database database = new Database(this); 

Cursor cursor = database.getTrUpdate("1234"); 

if (cursor.moveToFirst()){ 
     do{ 
      int d = cursor.getInt(cursor.getColumnIndex(Database.ID)); 
     } while(cursor.moveToNext()); 
} 
+0

你还可以发布你的DataBaseHelper代码吗? – Albinoswordfish 2011-06-02 15:24:01

回答

-1

你检查过它返回的数组是不是空的?

+0

你在说什么? – Hank 2011-06-03 16:43:58

0

我认为这个错误与我的getNumber方法中的selection和selectionArgs有关,因为如果我将它们移除,没有任何问题。