Java sqlite.SQLiteException:near"=&引用;:语法错误(代码1):,编译时:从学生\ U数据中选择*,其中=sarthaknegi94@yahoo.com;

Java 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

我试图从一个片段调用getAllData方法。在下面的代码中,我手动传递了email的值,因此它给出了错误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);

您必须添加
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);,它应该如何工作?