1

我正在做一个带有用户名和密码 EditText字段和一个按钮的登录注册页面。在编辑字段上输入值后单击按钮时,应将其注册到DB. 但它没有这样做。我怎么能这样做?

我的注册码如下所示。

public class Registration extends Activity {
    DBAdapter db = new DBAdapter(this);
    /** Called when the activity is first created. */
    @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 类如下所示..

public class DBAdapter 
{
    public static final String 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;
    }
}
4

1 回答 1

2

我注意到的一件事是,在你的 onUpgrade 函数中你调用execSQL不正确。根据您的命名约定,该语句应为:

db.execSQL("DROP TABLE IF EXISTS userpass");
于 2011-10-19T22:14:48.837 回答