1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > Android studio—SQlite数据库注册登录

Android studio—SQlite数据库注册登录

时间:2024-01-22 06:07:26

相关推荐

Android studio—SQlite数据库注册登录

Android studio—SQlite数据库注册登录

文章目录

Android studio—SQlite数据库注册登录创建用户类创建数据库注册写入数据库登录读取数据库效果展示布局文件注册页面登录页面

首先展示一下效果:

创建用户类

创建一个用户类,自动补全Get、Set方法

public class User {private int id;private String name;private String password;public User(String name,String password){super();this.name = name;this.password = password;}public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}@Overridepublic String toString() {return "User{id ="+ id + ", name = "+ name +",password ="+password +"}";}}

创建数据库

创建数据库在我上一篇博客中有详细提及:/genijmni/article/details/106605955

有兴趣的朋友可以去看看,这里我们就简单介绍。

创建SQLite类继承SQLiteOpenHelper帮助类

写一个这个类的构造函数,参数为上下文context,所谓上下文就是这个类所在包的路径

指明上下文,数据库名,工厂默认空值,版本号默认从1开始

super(context,"db_test",null,1);

把数据库设置成可写入状态,当内存满后,会自动设置为只读模式

db = getReadableDatabase();

完整代码:

public class SQlite extends SQLiteOpenHelper {private SQLiteDatabase db;public SQlite(Context context){super(context,"db_test",null,1);db = getReadableDatabase();}

完善数据表属性:ID、用户名、密码:

@Overridepublic void onCreate(SQLiteDatabase db) {db.execSQL("CREATE TABLE IF NOT EXISTS user(" +"_id INTEGER PRIMARY KEY AUTOINCREMENT," +"name TEXT," +"password TEXT)");}

完善数据表功能,由于我们目前只需要完成注册功能,所以只需要添加数据库的增加数据功能即可:

@Overridepublic void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {db.execSQL("DROP TABLE IF EXISTS user");onCreate(db);}public void add(String name,String password ){db.execSQL("INSERT INTO user(name,password)VALUES(?,?)",new Object[]{name,password});}public ArrayList<User> getAllDATA(){ArrayList<User> list = new ArrayList<User>();Cursor cursor = db.query("user",null,null,null,null,null,"name DESC");while(cursor.moveToNext()){String name = cursor.getString(cursor.getColumnIndex("name"));String password = cursor.getString(cursor.getColumnIndex("password"));list.add(new User(name,password));}return list;}}

name DESC为排序方式,把读取的数据放入list例表中

注册写入数据库

创建一个Register类,完善控件定义,和取消事件触发,我们不多说,随后会贴到完整代码上。

重点讲注册按钮完成对数据库的写入:

String name = username.getText().toString().trim();String password = userpassword.getText().toString().trim(); //获取输入的用户名和密码mSQlite = new SQlite(Register.this);

==mSQlite = new SQlite(Register.this);==实例化mSQLite,用于登录数据验证

该方法在onCreate方法内实现。

完整代码:

public class Register extends AppCompatActivity {private SQlite mSQlite;private EditText username;private EditText userpassword;private Button reday;private Button back;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_register);reday = findViewById(R.id.reday);back = findViewById(R.id.back);username = findViewById(R.id.userName);userpassword =findViewById( R.id.userpassword);back.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {Intent intent = new Intent(Register.this,MainActivity.class);startActivity(intent);finish();}});reday.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {String name = username.getText().toString().trim();String password = userpassword.getText().toString().trim();if(!TextUtils.isEmpty(name)&&!TextUtils.isEmpty(password)){mSQlite.add(name,password);Intent intent1 = new Intent(Register.this,MainActivity.class);startActivity(intent1);finish();Toast.makeText(Register.this,"注册成功",Toast.LENGTH_SHORT).show();}else {Toast.makeText(Register.this,"信息不完备,注册失败",Toast.LENGTH_SHORT).show();}}});mSQlite = new SQlite(Register.this);}}

登录读取数据库

控件的完善定义,和注册跳转按钮事件不多说,随后会贴在完整代码上。

重点讲如何验证数据库,完成注册登录功能。

先读取用户输入的信息:

String name = username.getText().toString().trim();String password = userpassword.getText().toString().trim();

先验证输入是否为空:

if (!TextUtils.isEmpty(name) && !TextUtils.isEmpty(password)) {}

若不为空,进行判断是否与数据库数据匹配,如果匹配正确,则输出ture,跳出循环,进行登录操作,匹配不正确,则输出flase,提示账号或密码错误。通过for()循环查询数据库是否有用户数据:

ArrayList<User> data = mSQlite.getAllDATA();boolean userdata = false;for (int i = 0; i < data.size(); i++) {User user = data.get(i); //可存储账号数量if (name.equals(user.getName())) {userdata = true;break;} else {userdata = false;}}

完整代码:

public class MainActivity extends AppCompatActivity {private SQlite mSQlite;private EditText username;private EditText userpassword;private Button login;private Button register;private User view;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);login = findViewById(R.id.login);register = findViewById(R.id.register);username = findViewById(R.id.userName);userpassword = findViewById(R.id.userpassword);register.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {Intent intent5 = new Intent(MainActivity.this, Register.class);startActivity(intent5);finish();}});login.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {String name = username.getText().toString().trim();String password = userpassword.getText().toString().trim();if (!TextUtils.isEmpty(name) && !TextUtils.isEmpty(password)) {ArrayList<User> data = mSQlite.getAllDATA();boolean user = false;for (int i = 0; i < data.size(); i++) {User userdata= data.get(i); //可存储账号数量if (name.equals(user.getName()) && password.equals(user.getPassword())) {userdata = true;break;} else {userdata = false;}}if (userdata) {Toast.makeText(MainActivity.this, "登录成功", Toast.LENGTH_SHORT).show();Intent intent = new Intent(MainActivity.this, Main2.class);intent.putExtra("username",name);intent.putExtra("password",password); //展示账号密码功能startActivity(intent);finish();} else {Toast.makeText(MainActivity.this, "用户名或密码不正确", Toast.LENGTH_SHORT).show();}} else {Toast.makeText(MainActivity.this, "用户名或密码不能为空", Toast.LENGTH_SHORT).show();}}});mSQlite = new SQlite(MainActivity.this);}}

为了验证我们的登陆数据是否正确,我们还要新建一个Main2Acitity。

具体方法参考我之前的博客:初级登录页面里的展示账号密码功能:/genijmni/article/details/106240013

TextView textView = findViewById(R.id.textT);Intent intent =getIntent();String name =intent.getStringExtra("username");String password =intent.getStringExtra("password");textView.setText("登录数据:"+"\n"+"用户名:"+name+"\n"+"密码:"+password);

效果展示

布局文件

注册页面和登录页面的布局文件其实大致相同。

注册页面

<LinearLayout xmlns:android="/apk/res/android"xmlns:app="/apk/res-auto"xmlns:tools="/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"tools:context=".Register"><LinearLayoutandroid:layout_marginLeft="30dp"android:layout_marginRight="30dp"android:layout_marginTop="60dp"android:orientation="vertical"android:layout_width="match_parent"android:layout_height="wrap_content"><LinearLayoutandroid:orientation="horizontal"android:layout_width="match_parent"android:layout_height="wrap_content"><TextViewandroid:layout_width="0dp"android:layout_height="wrap_content"android:text="用户名:"android:layout_marginTop="30dp"android:textSize="25sp"android:textColor="#000000"android:layout_weight="1"/><EditTextandroid:id="@+id/userName"android:layout_width="0dp"android:layout_height="wrap_content"android:hint="请输入用户名"android:layout_marginTop="30dp"android:textSize="20sp"android:textColor="#2196F3"android:layout_weight="2"/></LinearLayout><LinearLayoutandroid:orientation="horizontal"android:layout_width="match_parent"android:layout_height="wrap_content"><TextViewandroid:layout_width="0dp"android:layout_height="wrap_content"android:text="密码:"android:textSize="25sp"android:layout_marginTop="30dp"android:textColor="#000000"android:layout_weight="1"/><EditTextandroid:id="@+id/userpassword"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_marginTop="30dp"android:hint="请输入密码"android:textSize="20sp"android:textColor="#2196F3"android:layout_weight="2"android:inputType="textWebPassword"/></LinearLayout></LinearLayout><Buttonandroid:textColor="#Ef4000"android:layout_marginTop="40dp"android:layout_marginLeft="30dp"android:layout_marginRight="30dp"android:textSize="25sp"android:textAllCaps="false"android:text="确认"android:id="@+id/reday"android:layout_width="match_parent"android:layout_height="wrap_content"/><Buttonandroid:textColor="#Ef4000"android:layout_marginTop="20dp"android:layout_marginLeft="30dp"android:layout_marginRight="30dp"android:textSize="25sp"android:textAllCaps="false"android:text="取消"android:id="@+id/back"android:layout_width="match_parent"android:layout_height="wrap_content"/></LinearLayout>

登录页面

<LinearLayout xmlns:android="/apk/res/android"xmlns:app="/apk/res-auto"xmlns:tools="/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"tools:context=".MainActivity"><LinearLayoutandroid:layout_marginLeft="30dp"android:layout_marginRight="30dp"android:layout_width="match_parent"android:layout_height="0dp"android:layout_weight="1"android:orientation="vertical"><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal"><TextViewandroid:layout_width="0dp"android:layout_height="wrap_content"android:text="用户名:"android:layout_marginTop="30dp"android:textSize="25sp"android:textColor="#000000"android:layout_weight="1"/><EditTextandroid:id="@+id/userName"android:layout_width="0dp"android:layout_height="wrap_content"android:hint="请输入用户名"android:layout_marginTop="30dp"android:textSize="20sp"android:textColor="#2196F3"android:layout_weight="2"/></LinearLayout><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal"><TextViewandroid:layout_width="0dp"android:layout_height="wrap_content"android:text="密码:"android:textSize="25sp"android:layout_marginTop="30dp"android:textColor="#000000"android:layout_weight="1"/><EditTextandroid:id="@+id/userpassword"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_marginTop="30dp"android:hint="请输入密码"android:textSize="20sp"android:textColor="#2196F3"android:layout_weight="2"android:inputType="textWebPassword"/></LinearLayout></LinearLayout><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginBottom="10dp"android:orientation="vertical"><Buttonandroid:id="@+id/login"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="登录"android:textAllCaps="false"android:textColor="#EE4000"android:layout_marginLeft="30dp"android:layout_marginRight="30dp"android:layout_marginTop="30dp"android:textSize="25sp" /><Buttonandroid:layout_marginLeft="30dp"android:layout_marginRight="30dp"android:layout_marginTop="30dp"android:textSize="25sp"android:textColor="#EE4000"android:textAllCaps="false"android:text="注册"android:id="@+id/register"android:layout_width="match_parent"android:layout_height="wrap_content"/></LinearLayout></LinearLayout>

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。