Java sqlite.SQLiteException:near"=&引用;:语法错误(代码1):,编译时:从学生\ U数据中选择*,其中=sarthaknegi94@yahoo.com;
我试图从一个片段调用getAllData方法。在下面的代码中,我手动传递了email的值,因此它给出了错误SQLiteException:near“=”:。但当我尝试通过参数时,它也给了我一个错误SQLiteException:near“@yahoo”:。我不知道我做错了什么 代码:DatabaseHelper.javaJava sqlite.SQLiteException:near"=&引用;:语法错误(代码1):,编译时:从学生\ U数据中选择*,其中=sarthaknegi94@yahoo.com;,java,android,sqlite,android-sqlite,Java,Android,Sqlite,Android Sqlite,我试图从一个片段调用getAllData方法。在下面的代码中,我手动传递了email的值,因此它给出了错误SQLiteException:near“=”:。但当我尝试通过参数时,它也给了我一个错误SQLiteException:near“@yahoo”:。我不知道我做错了什么 代码:DatabaseHelper.java public class DatabaseHelper extends SQLiteOpenHelper { private static final String D
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);
您必须添加
COL_3
,我猜您正在搜索电子邮件地址
应使用第二个参数,即选择参数:
db.rawQuery("SELECT * from " + TABLE_NAME + " where " + COL_3+" =?", new String[]{"sarthaknegi94@yahoo.com"});
如果您使用的是选择参数,请不要忘记API中所述的?
:
您可以在查询中的where子句中包含?s,该子句将被selectionArgs中的值替换。值将被绑定为字符串。使用参数…您的查询语法无效,因此从那里开始。其中something=”sarthaknegi94@yahoo.com“就像@Selvin所说的:调用
rawQuery()
方法时使用selectionArgs
(第二个参数)第二个解决方案是首选方案,这就是为什么selectionArgs
是的,我同意…对于第一个,我不确定是否将其设置为单引号,,,,我只是对SQLite有点生疏…第一个将从某个\u表(其中某个\u字段=sarthaknegi94@yahoo.com);代码>,它应该如何工作?