android sqlite游标计数为0?

android sqlite游标计数为0?,android,sqlite,Android,Sqlite,您好,我是新使用SQLite的。当我在getData()方法中使用原始查询创建游标时,当我希望游标的计数为1时,它会说游标的计数为0。当我将信息存储在表中时,程序运行良好,据我所知,存储正确。任何关于我的计数为何为0的信息都将不胜感激 public class DBHandler extends SQLiteOpenHelper { private static final int DATA_BASE_VERSION = 1; private static final String DATAB

您好,我是新使用SQLite的。当我在
getData()
方法中使用原始查询创建游标时,当我希望游标的计数为1时,它会说游标的计数为0。当我将信息存储在表中时,程序运行良好,据我所知,存储正确。任何关于我的计数为何为0的信息都将不胜感激

public class DBHandler extends SQLiteOpenHelper {

private static final int DATA_BASE_VERSION = 1;
private static final String DATABASE_LINK_NAME = "appData.db";

public static final String TABLE_APP_DATA = "table_data";
public static final String COLUMN_ID = "col_id";
public static final String COLUMN_PERSON1 = "col_person1";
public static final String COLUMN_PERSON2 = "col_person2";
public static final String COLUMN_DS= "col_ds";
public static final String COLUMN_GE= "col_ge";

String QUERY_DATA = "CREATE TABLE " + TABLE_APP_DATA + "(" +
        COLUMN_ID + " INTEGER PRIMARY KEY, " +
        COLUMN_PERSON1 + " TEXT, " +
        COLUMN_PERSON2 + " TEXT, " +
        COLUMN_DS + " TEXT, " +
        COLUMN_GE + " TEXT " +
        ");";

public DBHandler(Context context) {
    super(context, DATABASE_LINK_NAME, null, DATA_BASE_VERSION);
}

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

@Override
public void onCreate(SQLiteDatabase db){
    db.execSQL(QUERY_DATA);
}

//resets the data base
public void reset(){
    onUpgrade(getReadableDatabase(),0,0);
}

//saves data application
public void saveData(){
    Data data = Data.getInstance();

    //clear tables
    reset();

    //save app data
    SQLiteDatabase db = getWritableDatabase();
    ContentValues values = new ContentValues();
    values.put(COLUMN_ID, 0);
    values.put(COLUMN_PERSON1,data.getPerson1());
    values.put(COLUMN_PERSON2,data.getPerson2());
    values.put(COLUMN_DS,String.valueOf(data.doesSex()));
    values.put(COLUMN_GE,String.valueOf(data.doesGameExists()));
    db.insert(TABLE_APP_DATA, null, values);
    db.close();
    System.out.println("Successfully added app data");

}

//load app data
public void loadData(){
    SQLiteDatabase db = getWritableDatabase();

    Data.getInstance().updataDataFile(getData(db));

    db.close();
}

public Data getData(SQLiteDatabase db){
    String query = "SELECT * FROM " + TABLE_APP_DATA + " WHERE 1";

    //cursor points to location
    Cursor c = db.rawQuery(query,null);
    c.moveToFirst();

    if(c.getCount() <= 0)
        System.out.println("The Cursor count is 0!");

    String p1 = c.getString(c.getColumnIndex(COLUMN_PERSON1));
    String p2 = c.getString(c.getColumnIndex(COLUMN_PERSON2));
    boolean doesSex = Boolean.valueOf(c.getString(c.getColumnIndex(COLUMN_DS)));
    boolean gameExists = Boolean.valueOf(c.getString(c.getColumnIndex(COLUMN_GE)));

    return new Data(p1,p2,doesSex,gameExists);
}

}
public类DBHandler扩展了SQLiteOpenHelper{
私有静态最终int数据库版本=1;
私有静态最终字符串数据库\u LINK\u NAME=“appData.db”;
公共静态最终字符串TABLE\u APP\u DATA=“TABLE\u DATA”;
公共静态最终字符串列\u ID=“col\u ID”;
公共静态最终字符串列\u PERSON1=“col\u PERSON1”;
公共静态最终字符串列\u PERSON2=“col\u PERSON2”;
公共静态最终字符串列\u DS=“col\u DS”;
public static final String COLUMN\u GE=“col\u GE”;
String QUERY_DATA=“CREATE TABLE”+TABLE_APP_DATA+”(“+
列ID+“整数主键,”+
列_PERSON1+“文本,”+
第2列+文本+
列\u DS+“文本,”+
列_GE+“文本”+
");";
公共DBHandler(上下文){
超级(上下文、数据库链接名称、空、数据库版本);
}
@凌驾
public void onUpgrade(SQLiteDatabase db,int-oldVersion,int-newVersion){
db.execSQL(“如果存在,则删除表格”+表格应用程序数据);
onCreate(db);
}
@凌驾
public void onCreate(SQLiteDatabase db){
db.execSQL(查询数据);
}
//重置数据库
公共无效重置(){
onUpgrade(getReadableDatabase(),0,0);
}
//在应用程序中保存数据
公共void saveData(){
Data=Data.getInstance();
//清理桌子
重置();
//保存应用程序数据
SQLiteDatabase db=getWritableDatabase();
ContentValues=新的ContentValues();
value.put(列ID,0);
value.put(列_PERSON1,data.getPerson1());
put(第2列,data.getPerson2());
value.put(COLUMN\DS,String.valueOf(data.doesSex());
value.put(COLUMN_GE,String.valueOf(data.doesGameExists());
db.insert(表格应用数据,空,值);
db.close();
System.out.println(“成功添加应用程序数据”);
}
//加载应用程序数据
公共void loadData(){
SQLiteDatabase db=getWritableDatabase();
Data.getInstance().UpdateDataFile(getData(db));
db.close();
}
公共数据getData(SQLiteDatabase db){
String query=“选择*自”+表格\应用\数据+“其中1”;
//光标指向位置
游标c=db.rawQuery(查询,空);
c、 moveToFirst();

如果(c.getCount(),
“WHERE 1”是什么意思?
?您还需要使用列名称和WHERE conditions@ρ魈σѕρєK,您的“WHERE 1”查询被禁用。1应该是一个列名称,例如“WHERE”+“column\u name”;因此,在getData方法中,您可能希望获取列_PERSON1?您是否试图获取整个表或某个特定的值,该值等于可以位于列中的特定值?我有一个数据对象,其中包含2个字符串和2个布尔值,因此这4个值是特定的values@AdamGardner
其中1
对原始SQLite没有问题。但不确定是否Android框架会做一些额外的检查。但是如果您运行一个简单的查询,比如-
SELECT*fromMyTable,其中1
,这将返回所有行,而
SELECT*fromMyTable,其中0
返回0行