2011-01-05 184 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");