我试图从片段中调用getAllData方法。在下面的代码中,我手动传递了电子邮件的值,因此它给了我错误SQLiteException:near" =":。但是当我尝试通过参数时,它给了我一个错误SQLiteException:near" @ yahoo" :.我不知道我做错了什么。
代码:DatabaseHelper.java
public class DatabaseHelper extends SQLiteOpenHelper {
private static final String DATABASE_NAME = "Students.db";
private static final String TABLE_NAME = "Student_Data";
private static final String COL_1 = "USERNAME";
private static final String COL_2 = "FULLNAME";
private static final String COL_3 = "EMAIL";
private static final String COL_4 = "PASSWORD";
private static final String COL_5 = "COURSE";
private static final String COL_6 = "SEMESTER";
private static final String COL_7 = "ROLLNO";
private static final String COL_8 = "MOBILE";
long result;
public DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, 1);
}
@Override
public void onCreate(SQLiteDatabase db) {
//Creating a Table
db.execSQL("create table " + TABLE_NAME + "(USERNAME TEXT PRIMARY KEY, FULLNAME TEXT, EMAIL TEXT, PASSWORD TEXT, COURSE TEXT, SEMESTER TEXT, ROLLNO TEXT, MOBILE TEXT);" );
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
public long insertData(String Username, String FullName, String Email, String Password, String Course, String Semester, String RollNo, String Mobile){
SQLiteDatabase db = this.getWritableDatabase();
ContentValues contentValues = new ContentValues();
contentValues.put(COL_1, Username);
contentValues.put(COL_2, FullName);
contentValues.put(COL_3, Email);
contentValues.put(COL_4, Password);
contentValues.put(COL_5, Course);
contentValues.put(COL_6, Semester);
contentValues.put(COL_7, RollNo);
contentValues.put(COL_8, Mobile);
try{
result = db.insertOrThrow(TABLE_NAME, null, contentValues);
}catch (SQLException e){
e.printStackTrace();
result = -1;
}
return result;
}
//To get all data
public Cursor getAllData(String email){
SQLiteDatabase db = this.getWritableDatabase();
return db.rawQuery("SELECT * from " + TABLE_NAME + " where" + " =" + "sarthaknegi94@yahoo.com" + ";", null);
}
//When updating the data
public boolean updateData(String Username, String FullName, String Email, String Password, String Course, String Semester, String RollNo, String Mobile){
SQLiteDatabase db = this.getWritableDatabase();
ContentValues contentValues = new ContentValues();
contentValues.put(COL_1, Username);
contentValues.put(COL_2, FullName);
contentValues.put(COL_3, Email);
contentValues.put(COL_4, Password);
contentValues.put(COL_5, Course);
contentValues.put(COL_6, Semester);
contentValues.put(COL_7, RollNo);
contentValues.put(COL_8, Mobile);
int result = db.update(TABLE_NAME, contentValues, " Username = ?", new String[] {Username});
if (result > 0) {
return true;
} else {
return false;
}
}
}
片段内
db = new DatabaseHelper(getContext());
Cursor res = db.getAllData(email);
答案 0 :(得分:1)
您必须添加COL_3
,我猜您正在搜索电子邮件地址。
您应该使用第二个参数,选择参数:
db.rawQuery("SELECT * from " + TABLE_NAME + " where " + COL_3+" =?", new String[]{"sarthaknegi94@yahoo.com"});
如果您使用的是选择参数,请不要忘记?
,如API中所述:
您可以在查询中的where子句中包含?s,它将被selectionArgs中的值替换。这些值将绑定为字符串。