SQL精简版Android应用程序登录 [英] SQL Lite android app login
问题描述
我工作的一个游戏的时刻,我要的是我的登录屏幕,以便能够确认我已经保存在我的数据库中的用户名和密码是正确的,当它是正确的,并在日志中按钮点击打开一个新的活动。我有我的数据库建立,也登录我只需要弄清楚如何核对我的数据库不只是在字段中的文本。
我已经有存储在数据库中的pre-加入登录:
用户名:测试
密码:1234
在此先感谢PS我是完全新的Java和SQL精简版,这是仅适用于学校工作,是绝不会在现实生活中我只希望它是简单的使用:)
登录屏幕活动:
包com.C05025.noughtsandcrosses;
进口android.os.Bundle;
进口android.app.Activity;
进口android.content.Intent;
进口android.view.View;
进口android.widget.EditText;
公共类LogInScreen延伸活动{
的EditText txtUsername;
的EditText txtPassword;
@覆盖
保护无效的onCreate(包savedInstanceState){
super.onCreate(savedInstanceState);
的setContentView(R.layout.loginscreen);
txtUsername =(EditText上)findViewById(R.id.EditUsername);
txtPassword =(EditText上)findViewById(R.id.EditPassword);
}
公共无效newLogIn(查看视图){
如果(txtUsername.getText()的toString()等于(测试)及。&安培;
txtPassword.getText()的toString()。等于(1234)){
意向意图=新的意图(LogInScreen.this,MainMenu.class);
startActivity(意向);
}
}
}
数据库类:
包com.C05025.noughtsandcrosses;
进口android.content.ContentValues;
进口android.content.Context;
进口android.database.Cursor;
进口android.database.sqlite.SQLiteDatabase;
进口android.database.sqlite.SQLiteDatabase.CursorFactory;
进口android.database.sqlite.SQLiteOpenHelper;
公共类DBHandler扩展SQLiteOpenHelper {
私有静态最终诠释DATABASE_VERSION = 1;
私有静态最后弦乐DATABASE_NAME =userDB.db;
私有静态最后弦乐TABLE_USERS =用户;
公共静态最后弦乐COLUMN_NAME =名;
公共静态最后弦乐COLUMN_PASSWORD =密码;
公共DBHandler(上下文的背景下,字符串名称,CursorFactory厂,
INT版){
超(背景下,DATABASE_NAME,工厂,DATABASE_VERSION);
}
@覆盖
公共无效的onCreate(SQLiteDatabase DB){
字符串CREATE_USER_TABLE =CREATE TABLE+ TABLE_USERS +(
+INTEGER PRIMARY KEY,+ COLUMN_NAME +TEXT
+ COLUMN_PASSWORD +整数+);
db.execSQL(CREATE_USER_TABLE);
}
@覆盖
公共无效onUpgrade(SQLiteDatabase为arg0,诠释ARG1,ARG2 INT){
}
公共无效ADDUSER(登录用户){
ContentValues值=新ContentValues();
values.put(列,user.getName());
values.put(COLUMN_PASSWORD,user.getPassword());
SQLiteDatabase DB = this.getWritableDatabase();
db.insert(TABLE_USERS,空,价值观);
db.close();
}
一些公开的登录findUser(用户名字符串){
查询字符串=SELECT * FROM+ TABLE_USERS +WHERE+ COLUMN_NAME += \+
用户名+\;
SQLiteDatabase DB = this.getWritableDatabase();
光标光标= db.rawQuery(查询,NULL);
登录用户=新的登录名();
如果(cursor.moveToFirst()){
cursor.moveToFirst();
User.setName(cursor.getString(1));
User.setPassword(的Integer.parseInt(cursor.getString(2)));
cursor.close();
} 其他 {
用户=无效;
}
db.close();
返回用户;
}
}
您可以试试下面的方法。
创建类名为 DBAdapter.java 并添加下列code。
公共类DBAdapter
{
私有静态最后弦乐DATABASE_NAME =你的数据库名;
私有静态最后弦乐DATABASE_CREATE_USERS =CREATE TABLE TABLE_NAME(用户ID整数主键自动增量,
+用户名文本,密码文本);
私有静态最后弦乐DATABASE_SELECT_USERS =用户;
公共静态最后弦乐USER_ID =用户名;
公共静态最后弦乐USER_NAME =用户名;
公共静态最后弦乐USER_PASSWORD =密码;
私人最终上下文的背景下;
私人DatabaseHelper DBHelper;
私人SQLiteDatabase分贝;
DBAdapter(Contex的CTX){
this.context = CTX;
DBHelper =新DatabaseHelper(上下文);
}
私有静态类DatabaseHelper扩展SQLiteOpenHelper
{
DatabaseHelper(上下文的背景下)
{
超(背景下,DATABASE_NAME,空,DATABASE_VERSION);
}
公共无效的onCreate(SQLiteDatabase DB)
{
的System.out.println(创建表);
db.execSQL(DATABASE_CREATE_USERS);
}
公共无效onUpgrade(SQLiteDatabase为arg0,诠释ARG1,ARG2 INT){
}
}
公共DBAdapter的open()抛出的SQLException
{
DB = DBHelper.getWritableDatabase();
回到这一点;
}
公共无效的close()
{
DBHelper.close();
}
公共光标fetchUser(字符串用户名,字符串密码)
{
光标myCursor = db.query(DATABASE_SELECT_USERS,
新的String [] {USER_ID,USER_NAME,USER_PASSWORD},
USER_NAME +=+用户名+和+
USER_PASSWORD +=+密码+,NULL,NULL,NULL,NULL);
如果(myCursor!= NULL){
myCursor.moveToFirst();
}
返回myCursor;
}
公共无效InsertData(字符串用户名,字符串密码)
{
字符串SQL =INSERT INTO用户(用户名,密码)VALUES('+用户名+,+密码+');
db.execSQL(SQL);
}
}
,然后创建你的Java文件
Login.java
公共类登录扩展活动
{
公共无效的onCreate(包savedInstanceState)
{
super.onCreate(savedInstanceState);
的setContentView(R.layout.main);
最后的EditText txt_username =(EditText上)findViewById(R.id.editText1);
最后的EditText txt_psw =(EditText上)findViewById(R.id.editText2);
按钮btn_signin =(按钮)findViewById(R.id.button1);
//内部类实现按钮监听按钮被点击时。
btn_signin.setOnClickListener(新OnClickListener()
{
公共无效的onClick(视图v)
{
DBAdapter DB =新DBAdapter(getBaseContext());
db.open();
db.InsertData(潮,1234);
Log.v(LoginDetails,txt_username.getText()的toString()+../ ..+ txt_psw.getText()的toString());
//利用我们在DBAdapter创建的fetchUser方法访问用户
光标CUR = db.fetchUser(txt_username.getText()的toString(),txt_psw.getText()的toString());
//如果你想看到用户与这些登录信息的数量,使用此线
的System.out.println(cur.getCount()+ cur.getCount());
如果(cur.getCount()!= 0)
{
串USN = cur.getString(1);
如果(usn.equals(潮))
{ }其他{ }
的System.out.println(查询succedded);
Toast.makeText(getBaseContext(),成功有效的用户名和密码!,Toast.LENGTH_LONG).show();
db.close();
}
其他
Toast.makeText(getBaseContext(),请输入有效的用户名和密码,Toast.LENGTH_LONG).show();
} //关闭onClick的方法
} //关闭内部类
); //关闭onClickListener
}
}
I am working on a game at the moment and all I want is my login screen to be able to check that the username and password I have already stored in my database is correct and when it is correct and the log in button is clicked to open a new activity. I have my database built and also a login I just need to figure out how to check against my database not just the text in the fields.
I already have a pre-added login stored in the database:
Username: test
Password: 1234
Thanks in advance p.s I am completely new to Java and SQL lite this is only for school work and is in no way going to be used in the real world I only want it to be simple :)
Login Screen Activity:
package com.C05025.noughtsandcrosses;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.View;
import android.widget.EditText;
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);
}
public void newLogIn(View view) {
if(txtUsername.getText().toString().equals("test") &&
txtPassword.getText().toString().equals("1234")){
Intent intent = new Intent(LogInScreen.this, MainMenu.class);
startActivity(intent);
}
}
}
Database Class:
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, DATABASE_NAME, factory, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
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) {
}
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;
}
}
You can try below way.
Create class called DBAdapter.java and add following code.
public class DBAdapter
{
private static final String DATABASE_NAME = "Your database name";
private static final String DATABASE_CREATE_USERS = "create table TABLE_NAME (UserID integer primary key autoincrement, "
+ "Username text, Password text);";
private static final String DATABASE_SELECT_USERS="users";
public static final String USER_ID = "UserID";
public static final String USER_NAME = "Username";
public static final String USER_PASSWORD = "Password ";
private final Context context;
private DatabaseHelper DBHelper;
private SQLiteDatabase db;
DBAdapter(Contex ctx){
this.context = ctx;
DBHelper = new DatabaseHelper(context);
}
private static class DatabaseHelper extends SQLiteOpenHelper
{
DatabaseHelper(Context context)
{
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
public void onCreate(SQLiteDatabase db)
{
System.out.println("Creating table");
db.execSQL(DATABASE_CREATE_USERS);
}
public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) {
}
}
public DBAdapter open() throws SQLException
{
db = DBHelper.getWritableDatabase();
return this;
}
public void close()
{
DBHelper.close();
}
public Cursor fetchUser(String username, String password)
{
Cursor myCursor = db.query(DATABASE_SELECT_USERS,
new String[] { USER_ID, USER_NAME, USER_PASSWORD },
USER_NAME + "='" + username + "' AND " +
USER_PASSWORD + "='" + password + "'", null, null, null, null);
if (myCursor != null) {
myCursor.moveToFirst();
}
return myCursor;
}
public void InsertData(String username, String password)
{
String sql="INSERT INTO users (Username,Password) VALUES('"+username+"','"+password+"')";
db.execSQL(sql);
}
}
and then create your Java file
Login.java
public class Login extends Activity
{
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
final EditText txt_username = (EditText) findViewById(R.id.editText1);
final EditText txt_psw = (EditText) findViewById(R.id.editText2);
Button btn_signin=(Button) findViewById(R.id.button1);
//Inner class to implement Button Listener when button is clicked.
btn_signin.setOnClickListener(new OnClickListener()
{
public void onClick(View v)
{
DBAdapter db= new DBAdapter(getBaseContext());
db.open();
db.InsertData("Chao", "1234");
Log.v("LoginDetails", txt_username.getText().toString()+"../.."+txt_psw.getText().toString());
//Accessing user using the fetchUser method we created in DBAdapter
Cursor cur = db.fetchUser( txt_username.getText().toString() , txt_psw.getText().toString());
//Use this line if you want to see the number of users with these login details
System.out.println("cur.getCount() "+cur.getCount());
if(cur.getCount()!=0)
{
String usn=cur.getString(1);
if(usn.equals("Chao"))
{ }else{ }
System.out.println("Query succedded");
Toast.makeText(getBaseContext(), "Success! Valid User name and password", Toast.LENGTH_LONG).show();
db.close();
}
else
Toast.makeText(getBaseContext(), "Please enter Valid User name and password", Toast.LENGTH_LONG).show();
} //Closes the onClick method
}//Closes the inner class
); //Closes the onClickListener
}
}
这篇关于SQL精简版Android应用程序登录的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!