Android Studio連接MySql實(shí)現(xiàn)登錄注冊(cè)(附源代碼)
本文主要介紹了Android Studio連接MySql實(shí)現(xiàn)登錄注冊(cè),分享給大家,具體如下:
一、創(chuàng)建工程
1、創(chuàng)建一個(gè)空白工程
2、隨便起一個(gè)名稱
3、設(shè)置網(wǎng)絡(luò)連接權(quán)限
<uses-permission android:name="android.permission.INTERNET"/>
二、引入Mysql驅(qū)動(dòng)包
1、切換到普通Java工程
2、在libs當(dāng)中引入MySQL的jar包
將mysql的驅(qū)動(dòng)包復(fù)制到libs當(dāng)中
三、編寫數(shù)據(jù)庫(kù)和dao以及JDBC相關(guān)代碼
1、在數(shù)據(jù)庫(kù)當(dāng)中創(chuàng)建表
SQL語(yǔ)句
/* Navicat MySQL Data Transfer Source Server : localhost_3306 Source Server Version : 50562 Source Host : localhost:3306 Source Database : test Target Server Type : MYSQL Target Server Version : 50562 File Encoding : 65001 Date: 2021-05-10 17:28:36 */ SET FOREIGN_KEY_CHECKS=0; -- ---------------------------- -- Table structure for `student` -- ---------------------------- DROP TABLE IF EXISTS `student`; CREATE TABLE `student` ( `sid` int(11) NOT NULL AUTO_INCREMENT, `sname` varchar(255) NOT NULL, `sage` int(11) NOT NULL, `address` varchar(255) NOT NULL, PRIMARY KEY (`sid`) ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8; -- ---------------------------- -- Records of student -- ---------------------------- INSERT INTO `student` VALUES ('1', 'andi', '21', '21212'); INSERT INTO `student` VALUES ('2', 'a', '2121', '2121'); -- ---------------------------- -- Table structure for `users` -- ---------------------------- DROP TABLE IF EXISTS `users`; CREATE TABLE `users` ( `uid` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(255) NOT NULL, `username` varchar(255) NOT NULL, `password` varchar(255) NOT NULL, `age` int(255) NOT NULL, `phone` longblob NOT NULL, PRIMARY KEY (`uid`) ) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8; -- ---------------------------- -- Records of users -- ---------------------------- INSERT INTO `users` VALUES ('2', '123', 'HBV環(huán)保局', '123', '33', 0x3133333333333333333333); INSERT INTO `users` VALUES ('3', '1233', '反復(fù)的', '1233', '12', 0x3132333333333333333333); INSERT INTO `users` VALUES ('4', '1244', '第三代', '1244', '12', 0x3133333333333333333333); INSERT INTO `users` VALUES ('5', '1255', 'SAS', '1255', '33', 0x3133333333333333333333);
2、在Android Studio當(dāng)中創(chuàng)建JDBCUtils類
切換會(huì)Android視圖
注意鏈接數(shù)據(jù)庫(kù)的地址是:jdbc:mysql://10.0.2.2:3306/test
package com.example.myapplication.utils; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class JDBCUtils { static { try { Class.forName("com.mysql.jdbc.Driver"); } catch (ClassNotFoundException e) { e.printStackTrace(); } } public static Connection getConn() { Connection conn = null; try { conn= DriverManager.getConnection("jdbc:mysql://10.0.2.2:3306/test","root","root"); }catch (Exception exception){ exception.printStackTrace(); } return conn; } public static void close(Connection conn){ try { conn.close(); } catch (SQLException throwables) { throwables.printStackTrace(); } } }
3、創(chuàng)建User實(shí)體類
package com.example.myapplication.entity; public class User { private int id; private String name; private String username; private String password; private int age; private String phone; public User() { } public User(int id, String name, String username, String password, int age, String phone) { this.id = id; this.name = name; this.username = username; this.password = password; this.age = age; this.phone = phone; } 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 getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getPhone() { return phone; } public void setPhone(String phone) { this.phone = phone; } }
4、創(chuàng)建dao層和UserDao
package com.example.myapplication.dao; import com.example.myapplication.entity.User; import com.example.myapplication.utils.JDBCUtils; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; public class UserDao { public boolean login(String name,String password){ String sql = "select * from users where name = ? and password = ?"; Connection con = JDBCUtils.getConn(); try { PreparedStatement pst=con.prepareStatement(sql); pst.setString(1,name); pst.setString(2,password); if(pst.executeQuery().next()){ return true; } } catch (SQLException throwables) { throwables.printStackTrace(); }finally { JDBCUtils.close(con); } return false; } public boolean register(User user){ String sql = "insert into users(name,username,password,age,phone) values (?,?,?,?,?)"; Connection con = JDBCUtils.getConn(); try { PreparedStatement pst=con.prepareStatement(sql); pst.setString(1,user.getName()); pst.setString(2,user.getUsername()); pst.setString(3,user.getPassword()); pst.setInt(4,user.getAge()); pst.setString(5,user.getPhone()); int value = pst.executeUpdate(); if(value>0){ return true; } } catch (SQLException throwables) { throwables.printStackTrace(); }finally { JDBCUtils.close(con); } return false; } public User findUser(String name){ String sql = "select * from users where name = ?"; Connection con = JDBCUtils.getConn(); User user = null; try { PreparedStatement pst=con.prepareStatement(sql); pst.setString(1,name); ResultSet rs = pst.executeQuery(); while (rs.next()){ int id = rs.getInt(0); String namedb = rs.getString(1); String username = rs.getString(2); String passworddb = rs.getString(3); int age = rs.getInt(4); String phone = rs.getString(5); user = new User(id,namedb,username,passworddb,age,phone); } } catch (SQLException throwables) { throwables.printStackTrace(); }finally { JDBCUtils.close(con); } return user; } }
四、編寫頁(yè)面和Activity相關(guān)代碼
1、編寫登錄頁(yè)面
<?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:layout_editor_absoluteX="219dp" tools:layout_editor_absoluteY="207dp" android:padding="50dp" > <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <TextView android:id="@+id/textView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:textSize="15sp" android:text="賬號(hào):" /> <EditText android:id="@+id/name" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:ems="10" android:inputType="textPersonName" android:text="" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <TextView android:id="@+id/textView2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:textSize="15sp" android:text="密碼:" /> <EditText android:id="@+id/password" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:ems="10" android:inputType="textPersonName" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> </LinearLayout> <Button android:layout_marginTop="50dp" android:id="@+id/button2" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="登錄" android:onClick="login" /> <Button android:id="@+id/button3" android:layout_width="match_parent" android:layout_height="wrap_content" android:onClick="reg" android:text="注冊(cè)" /> </LinearLayout> </androidx.constraintlayout.widget.ConstraintLayout>
效果
2、編寫注冊(cè)頁(yè)面代碼
<?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:layout_editor_absoluteX="219dp" tools:layout_editor_absoluteY="207dp" android:padding="50dp" > <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <TextView android:id="@+id/textView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:textSize="15sp" android:text="賬號(hào):" /> <EditText android:id="@+id/name" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:ems="10" android:inputType="textPersonName" android:text="" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <TextView android:id="@+id/textView2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:textSize="15sp" android:text="密碼:" /> <EditText android:id="@+id/password" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:ems="10" android:inputType="textPersonName" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> </LinearLayout> <Button android:layout_marginTop="50dp" android:id="@+id/button2" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="登錄" android:onClick="login" /> <Button android:id="@+id/button3" android:layout_width="match_parent" android:layout_height="wrap_content" android:onClick="reg" android:text="注冊(cè)" /> </LinearLayout> </androidx.constraintlayout.widget.ConstraintLayout>
3、完善MainActivity
package com.example.application01; import androidx.appcompat.app.AppCompatActivity; import android.content.Intent; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.view.View; import android.widget.EditText; import android.widget.Toast; import com.example.application01.dao.UserDao; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } public void reg(View view){ startActivity(new Intent(getApplicationContext(),RegisterActivity.class)); } public void login(View view){ EditText EditTextname = (EditText)findViewById(R.id.name); EditText EditTextpassword = (EditText)findViewById(R.id.password); new Thread(){ @Override public void run() { UserDao userDao = new UserDao(); boolean aa = userDao.login(EditTextname.getText().toString(),EditTextpassword.getText().toString()); int msg = 0; if(aa){ msg = 1; } hand1.sendEmptyMessage(msg); } }.start(); } final Handler hand1 = new Handler() { @Override public void handleMessage(Message msg) { if(msg.what == 1) { Toast.makeText(getApplicationContext(),"登錄成功",Toast.LENGTH_LONG).show(); } else { Toast.makeText(getApplicationContext(),"登錄失敗",Toast.LENGTH_LONG).show(); } } }; }
4、完善RegisterActivity
package com.example.application01; import androidx.appcompat.app.AppCompatActivity; import android.content.Intent; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.view.View; import android.widget.EditText; import android.widget.Toast; import com.example.application01.dao.UserDao; import com.example.application01.entity.User; public class RegisterActivity extends AppCompatActivity { EditText name = null; EditText username = null; EditText password = null; EditText phone = null; EditText age = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_register); name = findViewById(R.id.name); username = findViewById(R.id.username); password = findViewById(R.id.password); phone = findViewById(R.id.phone); age = findViewById(R.id.age); } public void register(View view){ String cname = name.getText().toString(); String cusername = username.getText().toString(); String cpassword = password.getText().toString(); System.out.println(phone.getText().toString()); String cphone = phone.getText().toString(); int cgae = Integer.parseInt(age.getText().toString()); if(cname.length() < 2 || cusername.length() < 2 || cpassword.length() < 2 ){ Toast.makeText(getApplicationContext(),"輸入信息不符合要求請(qǐng)重新輸入",Toast.LENGTH_LONG).show(); return; } User user = new User(); user.setName(cname); user.setUsername(cusername); user.setPassword(cpassword); user.setAge(cgae); user.setPhone(cphone); new Thread(){ @Override public void run() { int msg = 0; UserDao userDao = new UserDao(); User uu = userDao.findUser(user.getName()); if(uu != null){ msg = 1; } boolean flag = userDao.register(user); if(flag){ msg = 2; } hand.sendEmptyMessage(msg); } }.start(); } final Handler hand = new Handler() { @Override public void handleMessage(Message msg) { if(msg.what == 0) { Toast.makeText(getApplicationContext(),"注冊(cè)失敗",Toast.LENGTH_LONG).show(); } if(msg.what == 1) { Toast.makeText(getApplicationContext(),"該賬號(hào)已經(jīng)存在,請(qǐng)換一個(gè)賬號(hào)",Toast.LENGTH_LONG).show(); } if(msg.what == 2) { //startActivity(new Intent(getApplication(),MainActivity.class)); Intent intent = new Intent(); //將想要傳遞的數(shù)據(jù)用putExtra封裝在intent中 intent.putExtra("a","註冊(cè)"); setResult(RESULT_CANCELED,intent); finish(); } } }; }
五、運(yùn)行測(cè)試效果
到此這篇關(guān)于Android Studio連接MySql實(shí)現(xiàn)登錄注冊(cè)(附源代碼) 的文章就介紹到這了,更多相關(guān)Android Studio 登錄注冊(cè)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Android Studio連接SQLite數(shù)據(jù)庫(kù)的登錄注冊(cè)實(shí)現(xiàn)
- Android Studio實(shí)現(xiàn)注冊(cè)頁(yè)面跳轉(zhuǎn)登錄頁(yè)面的創(chuàng)建
- Android?studio?利用共享存儲(chǔ)進(jìn)行用戶的注冊(cè)和登錄驗(yàn)證功能
- Android Studio實(shí)現(xiàn)QQ的注冊(cè)登錄和好友列表跳轉(zhuǎn)
- Android Studio+Servlet+MySql實(shí)現(xiàn)登錄注冊(cè)
- Android?Studio中使用SQLite數(shù)據(jù)庫(kù)實(shí)現(xiàn)登錄和注冊(cè)功能
相關(guān)文章
Android如何讓W(xué)ebView中的HTML5頁(yè)面實(shí)現(xiàn)視頻全屏播放
最近在工作遇到一個(gè)需求,需要讓W(xué)ebView中的HTML5頁(yè)面實(shí)現(xiàn)視頻全屏播放的效果,通過(guò)查找相關(guān)的資料終于找到了解決的方法,所以想著分享給大家,所以本文介紹了關(guān)于Android如何讓W(xué)ebView中的HTML5頁(yè)面實(shí)現(xiàn)視頻全屏播放的相關(guān)資料,需要的朋友可以參考學(xué)習(xí)。2017-04-04Android實(shí)現(xiàn)簡(jiǎn)單斷點(diǎn)續(xù)傳和下載到本地功能
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)簡(jiǎn)單斷點(diǎn)續(xù)傳和下載到本地功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-11-11Android入門:廣播發(fā)送者與廣播接收者詳細(xì)介紹
本篇文章主要介紹了Android入門:廣播發(fā)送者與廣播接收者,詳細(xì)介紹了廣播收發(fā)的原理和代碼,有需要的可以了解一下。2016-11-11Android仿微信實(shí)現(xiàn)評(píng)論功能
這篇文章主要為大家詳細(xì)介紹了Android仿微信實(shí)現(xiàn)評(píng)論功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-11-11Android uses-permission權(quán)限列表中文注釋版
Android有一個(gè)精心設(shè)計(jì)的安全模型。每一個(gè)應(yīng)用都有其自己Linux用戶和群組,在單獨(dú)的進(jìn)程和VM上運(yùn)行,不能影響到其他應(yīng)用2014-05-05Android 檢測(cè)鍵盤顯示或隱藏鍵盤的實(shí)現(xiàn)代碼
這篇文章主要介紹了Android 檢測(cè)鍵盤顯示或隱藏鍵盤的實(shí)現(xiàn)代碼的相關(guān)資料,需要的朋友可以參考下2017-07-07Android實(shí)現(xiàn)可滑動(dòng)的自定義日歷控件
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)可滑動(dòng)的自定義日歷控件,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-07-07Android通過(guò)自定義view實(shí)現(xiàn)刮刮樂(lè)效果詳解
這篇文章主要介紹了如何在Android中利用自定義的view實(shí)現(xiàn)刮刮樂(lè)的效果,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟上小編一起動(dòng)手試一試2022-03-03