查询中的Where子句
问题描述:
我想在Android Studio中使用SQLite创建查询,但我遇到了很大的麻烦。
我想select * from Student.db where name = Mike
查询中的Where子句
这里是我的代码片段:一个事实,问题是我的查询中
package com.example.lyubo.database;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
/**
* Created by LYUBO on 2017/08/07.
*/
public class DatabaseHelper extends SQLiteOpenHelper {
public static final String DATABASE_NAME = "Student.db";
public static final String TABLE_NAME = "student_table";
public static final String COL_1 = "ID";
public static final String COL_2 = "NAME";
public static final String COL_3 = "SURNAME";
public static final String COL_4 = "MARKS";
public DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, 1);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("create table " + TABLE_NAME +" (ID INTEGER PRIMARY KEY AUTOINCREMENT,NAME TEXT,SURNAME TEXT,MARKS INTEGER)");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS "+TABLE_NAME);
onCreate(db);
}
public Cursor getAllData() {
SQLiteDatabase db = this.getWritableDatabase();
Cursor res = db.rawQuery("select * from "+TABLE_NAME + " WHERE " + COL_2 + " = Mike",null);
return res;
}
}
我知道。我不确定我是否缺少一些东西。
请协助。谢谢。
答
使用res.moveToFirst()
为什么? 基本上光标不知道要去哪里或找到自己(不知道如何把它放在实际的词),所以你需要把它放在列表为了执行数据库查询。
尝试微调串,以确保没有多余的空格:
Cursor res = db.rawQuery("select * from "+TABLE_NAME.trim()+" WHERE "+COL_2.trim()+" = Mike" , null);
需要引用的字符串比较:... =“迈克” – ednincer
OMG!我只是浪费了2个小时。 非常感谢你这位先生。问题解决了! – Lyubomir
如果我想根据用户的输入来查看它,我只需要替换Mike部分,并写入像这样: Cursor res = db.rawQuery(“select * from”+ TABLE_NAME +“WHERE”+ COL_2 +“=”+ mainAct.editName.getText()。toString(),null); – Lyubomir