我正在尝试将用户名和密码(uname和pword)添加到sqlite数据库,但我无法这样做 . 我使用以下方法调用了我的DatabaseConnector类:
Activity1.java
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().requestFeature(Window.FEATURE_ACTION_BAR);
setContentView(R.layout.ui1);
addListenerOnButton();
DatabaseConnector dConnector = new DatabaseConnector(this);
dConnector.addUser(null, null);
然后我尝试使用addUser方法在这里添加一个新的用户名和密码:
DatabaseConnector.java
public class DatabaseConnector extends SQLiteOpenHelper {
private static final int Version =1;
private static final String firstName="FIRST_NAME";
private static final String lastName="LAST_NAME";
private static final String email="EMAIL";
private static final String phoneNumber="PHONE_NUMBER";
private static final String username="USERNAME";
private static final String password="PASSWORD";
private static final String databaseName="FORM";
private static final String tableName="USER_RECORDS";
private static final String id = "ID";
public DatabaseConnector(Context context) {
super(context, databaseName, null, Version);
}
@Override
public void onCreate(SQLiteDatabase database) {
String createTableSQL = "CREATE TABLE " + tableName + " (" + id +" INTEGER NOT NULL PRIMARY KEY, " + firstName +" TEXT, " + lastName
+ " TEXT, " +email + " TEXT, " + phoneNumber + " TEXT, " + username + " TEXT, " + password + " TEXT)";
Log.d("onCreate()", createTableSQL);
database.execSQL(createTableSQL);
}
@Override
public void onUpgrade(SQLiteDatabase database, int arg1, int arg2) {
}
public void addUser(String uname, String pword ) {
String insertSQL = "INSERT INTO " + tableName + " (" + username + " ," + password + ") "
+ "VALUES" + " ('" + uname + "', '" + pword + "')" ;
Log.d("addRecord()", insertSQL);
SQLiteDatabase dataBase = this.getWritableDatabase();
dataBase.execSQL(insertSQL);
dataBase.close();
}
public void addRecord(String firstname, String lastname, String emailAddress, String phone, String uname, String pword ) {
String insertSQL = "INSERT INTO " + tableName + " (" + firstName + ", " + lastName + " ," + email + " ," + phoneNumber + " ," + username + " ," + password + ") "
+ "VALUES" + " ('" + firstname + "', '" + lastname + "', '" + emailAddress + "', '" + phone + "', '" + uname + "', '" + pword + "')" ;
Log.d("addRecord()", insertSQL);
SQLiteDatabase dataBase = this.getWritableDatabase();
dataBase.execSQL(insertSQL);
dataBase.close();
}
public List<String> getRecord(String uname, String pword) {
List<String> recordList = new ArrayList<String>();
SQLiteDatabase dataBase = this.getReadableDatabase();
String getSQL = "SELECT * FROM " + tableName + " WHERE " + username + " = '" + uname + "' AND " + password + " = '" + pword + "'";
Cursor cursor = dataBase.rawQuery(getSQL , null);
Log.d("getRecord()", getSQL + "##Count = " + cursor.getCount());
cursor.moveToFirst();
String fName = cursor.getString(1);
String lName = cursor.getString(2);
String eMail = cursor.getString(3);
String ph = cursor.getString(4);
Log.d("getRecord()", "FirstName: " + fName + "LastName: " + lName + "Email: " + eMail + "Phone" + ph);
recordList.add(fName);
recordList.add(lName);
recordList.add(eMail);
recordList.add(ph);
dataBase.close();
return recordList;
}
}
问题:
每次尝试使用凭据uname和pword登录时都会失败 .
1 回答
我不明白你为什么从
onCreate()
传递null
到uname
和pword
. 无论如何你在这里存储username
和password
而不是已经初始化的uname
和pword
这样的常量 .如果这不能解决,请进行更多澄清,以便有可能编辑我的答案 .