2012-04-23 2 views
0

아래 코드를 실행하면 사용자 문자열을 미리 지정된 문자열로 바꾸더라도 항상 "유효하지 않은"결과를 계속 제공합니다 .. 내 쿼리에 구문 문제가 있습니까?Sqlite 쿼리 구문?

체크 로그인 방법이 유효한 로그인으로 확인 다른 클래스에

여기
public void checklogin(String usertry){ 


    DatabaseHelper dbh = new DatabaseHelper(LoginActivity.this); 
    DatabaseAdapter dba = new DatabaseAdapter(LoginActivity.this); 
    db= dbh.getReadableDatabase(); 
    TextView usernametry = (TextView) findViewById(R.id.usernametry); 
    usertry = usernametry.getText().toString(); 

    Cursor mCursor = db.query(dba.TABLE_USERS,new String[]{dba.COLUMN_ID,dba.COLUMN_NAME}, dba.COLUMN_NAME + "=" + "?", new String[]{usertry},null,null,null,null); 

    if (mCursor.moveToFirst()){ 
     Toast.makeText(LoginActivity.this, "Yaaaay", Toast.LENGTH_LONG).show(); 
    } 

     Toast.makeText(LoginActivity.this, "invalid", Toast.LENGTH_LONG).show();     
     } 
} 

내 DB 어댑터 클래스입니다 :

public class DatabaseAdapter { 

public static final String COLUMN_ID = "ID"; 
public static final String COLUMN_NAME = "Name"; 
public static final String COLUMN_AGE = "Age"; 
public static final String COLUMN_GENDER = "Gender"; 
public static final String COLUMN_WEIGHT = "Weight"; 
public static final String COLUMN_HEIGHT = "Height"; 
public static final String COLUMN_ACTIVITY = "Activitylevel"; 
public static final String COLUMN_CALORIES = "numCal"; 
public static final String FOOD_ID = "food_ID"; 
public static final String FOOD_NAME = "food_name"; 
public static final String FOOD_CALS = "food_cals"; 
public static final String FOOD_FAT = "food_fat"; 
public static final String FOOD_PRO = "food_protein"; 
public static final String FOOD_CRAB = "food_crabs"; 

public static final String TABLE_USERS = "users"; 
public static final String TABLE_FOOD = "food"; 
private static final int DATABASE_VERSION = 1; 
private static final String DATABASE_NAME = "nutriwellness.db"; 

private static final String CREATE_TABLE_USERS = "create table users(id integer primary key autoincrement, " 
     + "Name text, Age integer, Gender text, Weight text, Height text, Activitylevel text, numCal float);"; 

private static final String CREATE_TABLE_FOOD = "create table food(food_ID integer primary key autoincrement," 
     + "food_name text,food_cals integer, food_fat integer, food_protein integer, food_crabs integer);"; 

private SQLiteDatabase database; 
private DatabaseHelper dbHelper; 

private String[] allColumnsofuserstable = { COLUMN_ID, COLUMN_NAME, 
     COLUMN_AGE, COLUMN_GENDER, COLUMN_WEIGHT, COLUMN_HEIGHT }; 

private String[] allColumnoffoodtable = { FOOD_ID, FOOD_NAME, FOOD_FAT, 
     FOOD_PRO, FOOD_CRAB }; 


public DatabaseAdapter(Context context) { 

    dbHelper = new DatabaseHelper(context); 
} 

public static class DatabaseHelper extends SQLiteOpenHelper { 

    public DatabaseHelper(Context context) { 
     super(context, DATABASE_NAME, null, 5); 
    } 

    @Override 
    public void onCreate(SQLiteDatabase db) { 
     try { 
      db.execSQL(CREATE_TABLE_USERS); 
      db.execSQL(CREATE_TABLE_FOOD); 
     } catch (SQLException e) { 

      e.printStackTrace(); 
     } 
    } 

    @Override 
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
     Log.w(DatabaseHelper.class.getName(), 
       "Upgrading database from version " + oldVersion 
         + "to version " + newVersion); 

     db.execSQL("DROP TABLE IF EXISTS users"); 
     onCreate(db); 

    } 

} 

public DatabaseAdapter open() throws SQLException { 
    database = dbHelper.getWritableDatabase(); 
    return this; 
} 

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

// create a user 
public long createUser(String name, String age, String gender, 
     String weight, String height, String level, float calnum) { 

    ContentValues values = new ContentValues(); 
    values.put(COLUMN_NAME, name); 
    values.put(COLUMN_AGE, age); 

    values.put(COLUMN_GENDER, gender); 

    values.put(COLUMN_WEIGHT, weight); 
    values.put(COLUMN_HEIGHT, height); 
    values.put(COLUMN_ACTIVITY, level); 
    values.put(COLUMN_CALORIES, calnum); 

    return database.insert(TABLE_USERS, COLUMN_ID, values); 
} 

// delete a user by ID 
public boolean deleteUser(long rowId) { 
    return database.delete(TABLE_USERS, COLUMN_ID + "=" + rowId, null) > 0; 
} 

// retrieve a list of all users 
public Cursor getAllUsers() { 
    return database.query(TABLE_USERS, allColumnsofuserstable, null, null, 
      null, null, null); 

} 

// retrieve a particular user 
public Cursor getUser(long rowId) throws SQLException { 
    Cursor mCursor = database.query(true, TABLE_USERS, 
      allColumnsofuserstable, COLUMN_ID + "=" + rowId, null, null, 
      null, null, null); 
    if (mCursor != null) { 
     mCursor.moveToFirst(); 
    } 
    return mCursor; 

} 

// update a user 
public boolean updateUser(long rowId, String Name, int age, String gender, 
     String weight, String height, String level, float calnum) { 
    ContentValues values = new ContentValues(); 
    values.put(COLUMN_NAME, Name); 
    values.put(COLUMN_AGE, age); 

    values.put(COLUMN_GENDER, gender); 

    values.put(COLUMN_WEIGHT, weight); 
    values.put(COLUMN_HEIGHT, height); 
    values.put(COLUMN_ACTIVITY, level); 
    values.put(COLUMN_CALORIES, calnum); 
    return database.update(TABLE_USERS, values, COLUMN_ID + "=" + rowId, 
      null) > 0; 
} 


// FOOD METHODS ! 

//Create a new food row 
public long createFood(String name, int food_cal, int food_fat, int food_proteins, int food_carbs){ 
    ContentValues Fvalues = new ContentValues(); 
    Fvalues.put(FOOD_NAME, name); 
    Fvalues.put(FOOD_CALS, food_cal); 
Fvalues.put(FOOD_FAT, food_fat); 
    Fvalues.put(FOOD_PRO, food_proteins); 
    Fvalues.put(FOOD_CRAB, food_carbs); 
    return database.insert(TABLE_FOOD, FOOD_ID, Fvalues);  
} 


// delete a Food by ID 
public boolean deleteFood(long rowId) { 
    return database.delete(TABLE_FOOD, FOOD_ID + "=" + rowId, null) > 0; 
} 
// retrieve a list of all FOOD 
public Cursor getAllfood() { 
    return database.query(TABLE_FOOD, allColumnoffoodtable, null, null, 
      null, null, null); 

} 

// Retrieve a specific Food 


public Cursor getFood(long rowId) throws SQLException { 
    Cursor mCursor = database.query(true, TABLE_FOOD, 
      allColumnoffoodtable, FOOD_ID + "=" + rowId, null, null, 
      null, null, null); 
    if (mCursor != null) { 
     mCursor.moveToFirst(); 
    } 
    return mCursor; 

} 

// Update a food 

public boolean updateFood(long rowId,String name, int food_cal, int food_fat, int food_proteins, int food_carbs){ 
    ContentValues Fvalues = new ContentValues(); 
    Fvalues.put(FOOD_NAME, name); 
    Fvalues.put(FOOD_CALS, food_cal); 
Fvalues.put(FOOD_FAT, food_fat); 
    Fvalues.put(FOOD_PRO, food_proteins); 
    Fvalues.put(FOOD_CRAB, food_carbs); 
    return database.update(TABLE_FOOD, Fvalues, FOOD_ID+"="+rowId, null)>0; 
} 
} 

답변

0

분명히이 토스트 메시지가 항상 표시 한 것입니다 경우에도 귀하의 쿼리가 작동합니다. 다음과 같이 시도해야합니다.

if (mCursor.moveToFirst()){ 
     Toast.makeText(LoginActivity.this, "Yaaaay", Toast.LENGTH_LONG).show(); 
    }else{ 
     Toast.makeText(LoginActivity.this, "invalid", Toast.LENGTH_LONG).show(); 
    } 

하지만 실제 문제는 아니지만 다른 문제는 발생하지 않습니다. 어쩌면 우리는 당신의 DatabaseAdapter 클래스를 볼 필요가있을 것입니다.

+0

DBadapter를 삽입했습니다. 필자는 하루 종일이 오류를 찾고있었습니다. – callback

+0

** DDMS **가로드되었는지 확인 했습니까 ** – RMH

+0

데이터베이스가 정상적으로 작동하고 있습니다. 나는 그것을 저장하고 Sqlite 브라우저로 그것을 읽었다. – callback