2013-03-08 29 views
0

我希望根據數據庫中已存在的表來查詢我的用戶名。但是,當我執行我的代碼,我的應用程序強制關閉是由於「SQLite的返回錯誤代碼:1,味精=近‘=’:語法錯誤在打開之前在SQLite中創建數據庫

這裏是DBAdapter.java文件

package com.example.usernammepassword; 


import android.content.ContentValues; 

public class DBAdapter { 
    public static final String KEY_NAME = "UserName"; 
    public static final String KEY_PASS = "Password"; 
    private static final String TAG = "DBAdapter"; 
    private static final String DATABASE_NAME = "Test"; 
    private static final String DATABASE_TABLE = "UsernamePassword"; 
    private static final int DATABASE_VERSION = 1; 


private static final String DATABASE_CREATE = 
     "create table if not exists UsernamePassword (UserName text not null primary key, Password text not null);"; 

private final Context context; 
DatabaseHelper DBHelper; 
private SQLiteDatabase db; 

public DBAdapter(Context ctx) 
{ 
    this.context = ctx; 
    DBHelper = new DatabaseHelper(context); 
} 


private static class DatabaseHelper extends SQLiteOpenHelper 
{ 
    DatabaseHelper(Context context) { 
     super(context, DATABASE_NAME, null, DATABASE_VERSION); 
    } 

    @Override 
    public void onCreate(SQLiteDatabase db1) { 
     try { 
      db1.execSQL(DATABASE_CREATE); 
     } catch (SQLException e) { 
      e.printStackTrace(); 
     } 
    } 

    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
} 

public DBAdapter open() throws SQLException { 

public void close() { 

public long insertNewUser(String UserName, String Password) { 

public boolean deleteUser(String UserName) 

public Cursor getAllUserNamesAndPasswords() 
{ 
    return db.query(DATABASE_TABLE, new String[] { KEY_NAME, 
      KEY_PASS}, null, null, null, null, null); 
} 

public Cursor getPasswordForUserName(String UserName) throws SQLException 

public boolean updatePasswordForUserName(String UserName, String Password) { 

}

而且MainActivity.java文件

package com.example.usernammepassword; 

import android.os.Bundle; 




public class MainActivity extends Activity { 

    private String md5(String in) { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 

     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

    Button btn = (Button) findViewById(R.id.button1); 
    btn.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      EditText text = (EditText)findViewById(R.id.editText1); 
      EditText text1 = (EditText)findViewById(R.id.editText2); 
      String userid = text.getText().toString(); 
      String pass = text1.getText().toString(); 

      Toast.makeText(MainActivity.this,"Entered "+userid+" and password entered is "+pass,Toast.LENGTH_LONG).show(); 

      pass = md5(pass + "@string/salt"); 

      Toast.makeText(MainActivity.this,"Password after adding a salt and md5 hashing is now equal to " + pass,Toast.LENGTH_LONG).show(); 

      DBAdapter db = new DBAdapter(MainActivity.this); 
      db.open(); 
      Cursor c = db.getPasswordForUserName(userid); 
      if(c.moveToFirst()) 
      { 
       if(c.getString(1) == pass) 
       { 
        Toast.makeText(MainActivity.this, "Authentication Succeded", Toast.LENGTH_SHORT).show(); 
        //proceed 
       } 
       else 
       { 
        Toast.makeText(MainActivity.this, "@string/AuthFail", Toast.LENGTH_SHORT).show(); 
        //AuthFailure 
       } 
      } 
      else 
      { 
       Toast.makeText(MainActivity.this,"@string/UserNotFound", Toast.LENGTH_SHORT).show(); 
       //where to from here 
      } 

     } 

    }); 

} 

public boolean onCreateOptionsMenu(Menu menu) { 

}

的Logca T: enter image description here

+0

是的,它沒有因爲「沒有這樣的桌子」而崩潰,但由於其他原因,我現在將修復:) 非常感謝。你能否也請解釋爲什麼這有所作爲? @Hoan – tMJ 2013-03-08 00:12:00

回答

0

你可能更新您的表名從東西UserNamePassword,但並沒有改變DATABASE_VERSION,這將觸發onUpgrade()。 當然也必須實施onUpgrade()以創建適當的表格。

+0

不,這不是。我試圖在模擬器上調試應用程序,我不知道爲什麼,但模擬器沒有SD卡。所以應用程序會崩潰。 我在一個真實的設備上調試了一下,然後在DB適配器類中編輯了一些代碼,並刪除了一些錯誤。它像一個魅力。 – tMJ 2013-03-25 08:57:26

+0

和另一個錯誤是我比較字符串與'=='運算符,這是行不通的。它應該是.isequal() – tMJ 2013-03-25 08:58:43