2011-01-05 185 views
0

我做一個登錄註冊頁面,使用用戶名密碼&領域的EditText和button.When單擊該按鈕在編輯字段中輸入值後,應登記到DB.But它沒有那樣做,我該怎麼做?登錄註冊在android系統

我的註冊代碼如下所示。

公共類註冊延伸活動{ 將對DBAdapter分貝=新將對DBAdapter(本); /**當活動首次創建時調用。 */ @Override public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.register); final EditText set1 =(EditText)findViewById(R.id.set1); final EditText set2 =(EditText)findViewById(R.id.set2);

Button reg=(Button)findViewById(R.id.reg); 
    Button reset=(Button)findViewById(R.id.reset); 

    reg.setOnClickListener(new OnClickListener() { 
     @Override 
     public void onClick(View v) 
     { 
      String str1=set1.getText().toString(); 
      String str2=set2.getText().toString(); 
      db.open(); 
      ContentValues initialValues = new ContentValues(); 
      initialValues.put("Username",str1); 
      initialValues.put("Password",str2);    

      //long n = dbAdapter.insertRecordsInDB("user", null, initialValues); 
      db.insertTitle("login",initialValues);   
      db.close(); 
      Toast.makeText(Registration.this,"Registration done",Toast.LENGTH_SHORT).show(); 
       } 
     }); 

reset.setOnClickListener(new OnClickListener() { 
    @Override 
    public void onClick(View v) 
    { 
     set1.setText(""); 
     set2.setText(""); 
     set3.setText(""); 
     set4.setText(""); 
     set5.setText(""); 
    } 
    }); 

} } 而我將對DBAdapter類如下所示..

公共類將對DBAdapter { 公共靜態最終字符串KEY_ROWID = 「_id」; public static final String KEY_USER =「user」; public static final String KEY_PASS =「pass」;
private static final String TAG =「DBAdapter」;

private static final String DATABASE_NAME = "login"; 
private static final String DATABASE_TABLE = "userpass"; 
private static final int DATABASE_VERSION = 1; 

private static final String DATABASE_CREATE = 
    "create table userpass (_id integer primary key autoincrement, " 
    + "user text not null, pass text not null); "; 


private final Context context; 

private 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 db) 
    { 
     db.execSQL(DATABASE_CREATE); 
    } 



    @Override 
    public void onUpgrade(SQLiteDatabase db, int oldVersion, 
          int newVersion) 
    { 
     Log.w(TAG, "Upgrading database from version " + oldVersion 
       + " to " 
       + newVersion + ", which will destroy all old data"); 
     db.execSQL("DROP TABLE IF EXISTS titles"); 
     onCreate(db); 
    } 

} 
    //---opens the database--- 
    public DBAdapter open() throws SQLException 
    { 
     db = DBHelper.getWritableDatabase(); 
     return this; 
    } 

    //---closes the database---  
    public void close() 
    { 
     DBHelper.close(); 
    } 

    //---insert a title into the database--- 
    public long insertTitle(String DATABASE_TABLE,String nullColumnHack,ContentValues initialValues) 
    { 
     //ContentValues initialValues = new ContentValues(); 
     //initialValues.put(KEY_USER, user); 
     //initialValues.put(KEY_PASS, pass); 
     return db.insert(DATABASE_TABLE,initialValues); 
    } 

    //---deletes a particular title--- 
    public boolean deleteTitle(long rowId) 
    { 
     return db.delete(DATABASE_TABLE, KEY_ROWID + 
       "=" + rowId, null) > 0; 
    } 

    //---retrieves all the titles--- 
    public Cursor getAllTitles() 
    { 
     return db.query(DATABASE_TABLE, new String[] { 
       KEY_ROWID, 
       KEY_USER, 
       KEY_PASS}, 
       null, 
       null, 
       null, 
       null, 
       null); 
    } 


     //---retrieves a particular title--- 
     public Cursor getTitle(long rowId) throws SQLException 
     { 
      Cursor mCursor = 
        db.query(true, DATABASE_TABLE, new String[] { 
          KEY_ROWID, 
          KEY_USER, 
          KEY_PASS, 

          }, 
          KEY_ROWID + "=" + rowId, 
          null, 
          null, 
          null, 
          null, 
          null); 
      if (mCursor != null) { 
       mCursor.moveToFirst(); 
      } 
      return mCursor; 
     } 


    //---updates a title--- 
    public boolean updateTitle(long rowId, String isbn, 
    String title, String publisher) 
    { 
     ContentValues args = new ContentValues(); 
     args.put(KEY_USER, isbn); 
     args.put(KEY_PASS, title); 

     return db.update(DATABASE_TABLE, args, 
         KEY_ROWID + "=" + rowId, null) > 0; 
    } 

} 
+0

您是否在用戶嘗試註冊後檢查了insertTitle的值?此外,您可以嘗試使用db.execSQL(「INSERT INTO ...」)來檢查是否存在將ContentValues傳遞給db.insert語句的問題。 – indyfromoz 2011-01-05 06:35:47

+0

我在DBAdapter類的「insert」方法上出現紅線錯誤。 – sanjay 2011-01-05 06:47:35

+0

你在哪裏爲DBAdpater和DBHelper創建對象? – Ishant 2018-03-08 13:22:04

回答

2

一兩件事我注意到的是,在你的onUpgrade函數調用execSQL不正確。根據您的命名慣例,聲明應該是:

db.execSQL("DROP TABLE IF EXISTS userpass");