SQL精简版Android应用程序登录 [英] SQL Lite android app login

查看:154
本文介绍了SQL精简版Android应用程序登录的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我工作的一个游戏的时刻,我要的是我的登录屏幕,以便能够确认我已经保存在我的数据库中的用户名和密码是正确的,当它是正确的,并在日志中按钮点击打开一个新的活动。我有我的数据库建立,也登录我只需要弄清楚如何核对我的数据库不只是在字段中的文本。

我已经有存储在数据库中的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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆