0

「ユーザーログイン」ページのあるAndroidアプリを作成しています。私はSQliteを使ってみましたが、これが私のコードです。

package tsu.ccs.capstone;

import android.content.ContentValues;  
import android.content.Context;  
import android.database.Cursor;  
android.database.SQLException;  
import android.database.sqlite.SQLiteDatabase;  
import android.database.sqlite.SQLiteOpenHelper;  
import android.util.Log;  

public class DBUser {
    public static final String KEY_ROWID = "_id";  
    public static final String KEY_USERNAME= "username";  
    public static final String KEY_PASSWORD = "password";  
    private static final String TAG = "DBAdapter";  

private static final String DATABASE_NAME = "usersdb";  
private static final String DATABASE_TABLE = "users";  
private static final int DATABASE_VERSION = 1;  

private static final String DATABASE_CREATE =  
    "create table users (_id integer primary key autoincrement, "  
    + "username text not null, "  
    + "password text not null);";  

private Context context = null;  
private DatabaseHelper DBHelper;  
private SQLiteDatabase db;  

public DBUser(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 users");  
        onCreate(db);  
    }  
}      

public void open() throws SQLException  
{  
    db = DBHelper.getWritableDatabase();  
}  

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

public long AddUser(String username, String password)  
{  
     ContentValues initialValues = new ContentValues();  
     initialValues.put(KEY_USERNAME, "p");  
     initialValues.put(KEY_PASSWORD, "p");  
     return db.insert(DATABASE_TABLE, null, initialValues);  

}  

public boolean Login(String username, String password) throws SQLException  
{  
    Cursor mCursor = db.rawQuery("SELECT * FROM " + DATABASE_TABLE + " WHERE username=? AND password=?", new String[]{username,password});  
    if (mCursor != null) {  
        if(mCursor.getCount() > 0)  
        {  
            return true;  
        }  
    }  
 return false;  
}  

}

ご覧のとおり、レイアウトのユーザー名とパスワードのフィールドにInitialValueがあります。私の問題は、設定したデフォルトのユーザー名とパスワードを変更するオプションをユーザーに提供したいということです。簡単に言えば、InitialValuesを上書きして、データベースを保存するだけです。

誰かが私を助けることができますか、私はアンドロイドプログラミングを始めたばかりで、これで迷っています。

4

1 に答える 1

0

Javaはデフォルトのパラメータ値をサポートしていないため、AddUser関数をオーバーロードする必要があります。

    public long AddUser(){  
     ContentValues initialValues = new ContentValues();  
     initialValues.put(KEY_USERNAME, "p");  
     initialValues.put(KEY_PASSWORD, "p");  
     return db.insert(DATABASE_TABLE, null, initialValues);
   }

これにより、デフォルトのユーザー名とパスワードでユーザーが作成されます。

   public long AddUser(String username, String password){  
     ContentValues initialValues = new ContentValues();  
     initialValues.put(KEY_USERNAME, username);  
     initialValues.put(KEY_PASSWORD, password);  
     return db.insert(DATABASE_TABLE, null, initialValues);
  }

この関数は、userによって提供された値でuserを作成します。

于 2013-01-27T19:17:19.923 に答える