0
我有一個與我的應用程序的SQLite登錄正在進行的問題。我有一個簡單的DBHandler類創建了一個數據庫,在數據庫中我存儲了一個用戶:用戶名:test密碼:1234簡單的Android應用程序SQLite登錄
我也有一個LogInScreen類來處理登錄視圖,驗證登錄的方法。
我希望用戶輸入他們的登錄詳細信息到文本字段中,當他們按登錄按鈕來驗證我的數據庫。正如你在附圖中看到的那樣。
我已經存儲了用戶名,這是我的代碼
代碼的工作,但你可以在LogInScreen類看它是不是檢查,對我的數據庫,但實際的文本字段。不幸的是,我對SQLite和編程完全陌生,所以我無法弄清楚。任何幫助將不勝感激:)
package com.C05025.noughtsandcrosses;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;
public class DBHandler extends SQLiteOpenHelper {
private static final int DATABASE_VERSION = 1;
private static final String DATABASE_NAME = "userDB.db";
private static final String TABLE_USERS = "users";
public static final String COLUMN_NAME = "name";
public static final String COLUMN_PASSWORD = "password";
public DBHandler(Context context, String name, CursorFactory factory,
int version) {
//super(context, name, factory, version);
super(context, DATABASE_NAME, factory, DATABASE_VERSION);
// TODO Auto-generated constructor stub
}
@Override
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
String CREATE_USER_TABLE = "CREATE TABLE " + TABLE_USERS + "("
+ " INTEGER PRIMARY KEY," + COLUMN_NAME + " TEXT,"
+ COLUMN_PASSWORD + " INTEGER" + ")";
db.execSQL(CREATE_USER_TABLE);
}
@Override
public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) {
// TODO Auto-generated method stub
}
public void addUser(LogIn user) {
ContentValues values = new ContentValues();
values.put(COLUMN_NAME, user.getName());
values.put(COLUMN_PASSWORD, user.getPassword());
SQLiteDatabase db = this.getWritableDatabase();
db.insert(TABLE_USERS, null, values);
db.close();
}
public LogIn findUser(String Username) {
String query = "Select * FROM " + TABLE_USERS + " WHERE " + COLUMN_NAME + " = \"" +
Username + "\"";
SQLiteDatabase db = this.getWritableDatabase();
Cursor cursor = db.rawQuery(query, null);
LogIn User = new LogIn();
if (cursor.moveToFirst()) {
cursor.moveToFirst();
User.setName(cursor.getString(1));
User.setPassword(Integer.parseInt(cursor.getString(2)));
cursor.close();
} else {
User = null;
}
db.close();
return User;
}
}
LoginScreen類:
package com.C05025.noughtsandcrosses;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;
public class LogInScreen extends Activity {
EditText txtUsername;
EditText txtPassword;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.loginscreen);
txtUsername = (EditText) findViewById(R.id.EditUsername);
txtPassword = (EditText) findViewById(R.id.EditPassword);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
public void newLogIn(View view) {
if(txtUsername.getText().toString().equals("test") &&
txtPassword.getText().toString().equals("1234")){
Intent i = new Intent(LogInScreen.this, MainMenu.class);
startActivity(i);
LogInScreen.this.finish();
}
else{
Toast.makeText(getApplicationContext(), "Wrong Credentials",
Toast.LENGTH_SHORT).show();
}
}
}
請不要重複您自己的問題,並盡力而爲。 – Merlevede
我對這個地方完全陌生,我試圖刪除我的另一個問題,但它不會讓,我試圖讓我的問題在這篇文章中更清晰一點,我不想惹惱任何人:) –