sqlite.SQLiteException:near" =&#34 ;:语法错误(代码1):,同时编译:SELECT * from Student_Data where =sarthaknegi94@yahoo.com;

时间:2017-03-27 13:57:27

标签: java android sqlite android-sqlite

我试图从片段中调用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);

1 个答案:

答案 0 :(得分:1)

您必须添加COL_3,我猜您正在搜索电子邮件地址。

您应该使用第二个参数,选择参数:

db.rawQuery("SELECT * from " + TABLE_NAME + " where " + COL_3+" =?", new String[]{"sarthaknegi94@yahoo.com"});

如果您使用的是选择参数,请不要忘记?,如API中所述:

您可以在查询中的where子句中包含?s,它将被selectionArgs中的值替换。这些值将绑定为字符串。