0

SQLLIte を使用して簡単なログイン システムを作成したい データベースを作成しましたが、カーソルでエラーが発生しました。

私のデータベースコードは

public static final String KEY_RAWID = "_id";
    public static final String KEY_RAWNAME = "name";
    public static final String KEY_PASSWORD = "password";
    public static final String KEY_EMAIL = "email";
        private static final String DATABASE_NAME = "users_DB";
    private static final String DATABASE_TABLE = "users";
    private dbusers ourhelper;
    private final Context ourcontext;
    private SQLiteDatabase ourDatabase;

    private static class dbusers extends SQLiteOpenHelper {

        public dbusers(Context context) {
            super(context, DATABASE_TABLE, null, DATABASE_VERSION);
            // TODO Auto-generated constructor stub
        }

        @Override
        public void onCreate(SQLiteDatabase db) {
            // TODO Auto-generated method stub

            db.execSQL("CREATE TABLE " + DATABASE_TABLE + "(" + KEY_RAWID
                    + " INTEGER PRIMARY KEY AUTOINCREMENT, " +    KEY_RAWNAME
                    + " TEXT NOT NULL, " + KEY_PASSWORD + " TEXT NOT   NULL, "
                    + KEY_EMAIL + " TEXT NOT NULL);");



        }

        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
            // TODO Auto-generated method stub
            db.execSQL("DROP TABLE IF EXISTS" + DATABASE_TABLE);
            onCreate(db);
        }

    }

    public Dbinfo(Context c) {
        ourcontext = c;
    }

    public Dbinfo open() {
        ourhelper = new dbusers(ourcontext);
        ourDatabase = ourhelper.getWritableDatabase();
        return this;
    }

    public void close() {
        ourhelper.close();
    }

この関数でエラーが発生しました

public Boolean check(String nameS, String passwordS) {
        // TODO Auto-generated method stub
        String[] columns = new String[] { KEY_RAWID, KEY_RAWNAME, KEY_PASSWORD,
                KEY_EMAIL };
        Cursor c = null;
        Boolean check = true;

        c=ourDatabase.rawQuery("SELECT name,password FROM users WHERE name="+nameS,null);



        if (c.getCount() > 0)// && c2.getCount() > 0) {
        {   check = false;
            return check;
        }

        return check;

エラー:

04-15 00:29:23.302: E/AndroidRuntime(1300): android.database.sqlite.SQLiteException: no such column: khaled: , while compiling: SELECT name,password FROM users WHERE name=khaled

データベースにデータを追加しましたが、データベースのデータが正常に追加されたことを確認しました。何か助けはありますか?

4

3 に答える 3

1

推奨される方法は次のとおりです。

c = ourDatabase.rawQuery("SELECT name, password FROM users WHERE name = ?",
  new String[]{nameS});
于 2012-04-14T23:06:07.853 に答える
0

nameS は引用符で囲む必要があります:

c=ourDatabase.rawQuery("SELECT name,password FROM users WHERE name='"+nameS+"'",null);
于 2012-04-14T22:59:35.683 に答える
-1

この行は次から変更する必要があります。

c=ourDatabase.rawQuery("SELECT name,password FROM users WHERE name="+nameS,null);

c=ourDatabase.rawQuery("SELECT name,password FROM users WHERE name='"+nameS+"'",null);
于 2012-04-14T23:01:38.697 に答える