Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/209.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android SQlite返回0_Android_Sqlite - Fatal编程技术网

Android SQlite返回0

Android SQlite返回0,android,sqlite,Android,Sqlite,首先,让我解释一下如何从SQLite插入和返回数据 首先,我创建如下表: private static final String CREATE_TABLE_STUDENT_LESSON = " create table STUDENTSPECIFICLESSON ( _id TEXT , _viewID INTEGER PRIMARY KEY AUTOINCREMENT , _LESSON_TITLE TEXT , _LESSON_DATE TEXT , _LESSON_PROBLEM TEXT

首先,让我解释一下如何从SQLite插入和返回数据

首先,我创建如下表:

private static final String CREATE_TABLE_STUDENT_LESSON = " create table STUDENTSPECIFICLESSON ( _id TEXT , _viewID INTEGER PRIMARY KEY AUTOINCREMENT , _LESSON_TITLE TEXT , _LESSON_DATE TEXT , _LESSON_PROBLEM TEXT );";

public void onCreate(SQLiteDatabase db) {
    db.execSQL(CREATE_TABLE_STUDENT_LESSON);
}
sqLiteHelper.insertLesson(id,etLessonTitle.getText().toString(),currentDateandTime,etLessonProbStu.getText().toString());
然后我在SQLite中插入如下表:

public void insertLesson(String _id, String lessonTitle, String lessonDate, String lessonProblem) {
    ContentValues contentValue = new ContentValues();
    contentValue.put(SQLiteHelper._ID, _id);
    contentValue.put(SQLiteHelper.LESSON_TITLE, lessonTitle);
    contentValue.put(SQLiteHelper.LESSON_DATE, lessonDate);
    contentValue.put(SQLiteHelper.LESSON_PROBLEM, lessonProblem);
    this.getWritableDatabase().insert(SQLiteHelper.TABLE_NAME_STUDENTSPECIFICLESSON, null, contentValue);
}
我从活动中插入如下内容:

private static final String CREATE_TABLE_STUDENT_LESSON = " create table STUDENTSPECIFICLESSON ( _id TEXT , _viewID INTEGER PRIMARY KEY AUTOINCREMENT , _LESSON_TITLE TEXT , _LESSON_DATE TEXT , _LESSON_PROBLEM TEXT );";

public void onCreate(SQLiteDatabase db) {
    db.execSQL(CREATE_TABLE_STUDENT_LESSON);
}
sqLiteHelper.insertLesson(id,etLessonTitle.getText().toString(),currentDateandTime,etLessonProbStu.getText().toString());
您会注意到,我已经创建了
\u viewID INTEGER主键AUTOINCREMENT
,我正在使用它获取适配器中的特定ViewHolder

我通过执行以下操作获得此
\u viewID

public String getLessonViewHolderID(String _path){
    String id = null;

    Cursor cursor = getReadableDatabase().rawQuery("Select "+SQLiteHelper._viewID+" from "+SQLiteHelper.TABLE_NAME_STUDENTSPECIFICLESSON+" Where "
            +SQLiteHelper.LESSON_TITLE +"='"+_path+"'",null);

    if (cursor != null) {
        cursor.moveToFirst();
    }
    if (cursor == null) {
    } else if (cursor.moveToFirst()) {
        do {
            id = String.valueOf(cursor.getInt(cursor.getColumnIndex(SQLiteHelper._viewID)));

        } while (cursor.moveToNext());
        cursor.close();
    } else {

    }
    return id;
}
public String getLessonProblem(String _id){


    String id = null;

    Cursor cursor = getReadableDatabase().rawQuery("Select _LESSON_PROBLEM from "+SQLiteHelper.TABLE_NAME_STUDENTSPECIFICLESSON+" Where "
            +SQLiteHelper._viewID +"='"+_id+"'",null);


    if (cursor != null) {
        cursor.moveToFirst();
    }
    if (cursor == null) {
    } else if (cursor.moveToFirst()) {
        do {
            id = String.valueOf(cursor.getInt(cursor.getColumnIndex("_LESSON_PROBLEM")));

        } while (cursor.moveToNext());
        cursor.close();
    } else {

    }
    return id;

}
这项功能工作正常,并按预期正确返回
\u viewId


然后,我尝试通过执行以下操作从SQLite获取
\u LESSON\u PROBLEM

public String getLessonViewHolderID(String _path){
    String id = null;

    Cursor cursor = getReadableDatabase().rawQuery("Select "+SQLiteHelper._viewID+" from "+SQLiteHelper.TABLE_NAME_STUDENTSPECIFICLESSON+" Where "
            +SQLiteHelper.LESSON_TITLE +"='"+_path+"'",null);

    if (cursor != null) {
        cursor.moveToFirst();
    }
    if (cursor == null) {
    } else if (cursor.moveToFirst()) {
        do {
            id = String.valueOf(cursor.getInt(cursor.getColumnIndex(SQLiteHelper._viewID)));

        } while (cursor.moveToNext());
        cursor.close();
    } else {

    }
    return id;
}
public String getLessonProblem(String _id){


    String id = null;

    Cursor cursor = getReadableDatabase().rawQuery("Select _LESSON_PROBLEM from "+SQLiteHelper.TABLE_NAME_STUDENTSPECIFICLESSON+" Where "
            +SQLiteHelper._viewID +"='"+_id+"'",null);


    if (cursor != null) {
        cursor.moveToFirst();
    }
    if (cursor == null) {
    } else if (cursor.moveToFirst()) {
        do {
            id = String.valueOf(cursor.getInt(cursor.getColumnIndex("_LESSON_PROBLEM")));

        } while (cursor.moveToNext());
        cursor.close();
    } else {

    }
    return id;

}
然后从我的
适配器
调用:

String lessonProblem = helper.getLessonProblem(viewId);
上面的
字符串lessonProblem
将返回
0

我已检查我的数据库,所有数据都已正确插入,以下是我的数据库的图像:

我不明白为什么它返回0,但显然不是,有人能帮我指出可能是什么问题吗

您将获取一个字符串值作为int,然后将其转换为字符串。把它改成

id = cursor.getString(cursor.getColumnIndex("_LESSON_PROBLEM"));

草率的错误。你应该使用而不是

以字符串形式返回请求列的值。结果及 当列值为null时,此方法是否引发异常 或者列类型不是实现定义的字符串类型

最后

cursor.getString(cursor.getColumnIndex("_LESSON_PROBLEM"));

非常感谢您的回答,我将接受@laalto的回答,因为他先回答了。再次感谢您。值得一提的是,您链接到了错误的getString(),还有一个额外的
关闭paren。感谢您的回答。