物联网平台搭建的全过程介绍(八)——利用JDBC实现网上注册用户和登录功能在文章《物联网平台搭建的全过程介绍(五)——基于阿里云物联网平台的Android聊天app源码》中介绍了利用物联网实现聊天app的开发。这个app带有一个登录的功能,

首页 » 物联网 » 物联网平台搭建的全过程介绍(八)——利用JDBC实现网上注册用户和登录功能在文章《物联网平台搭建的全过程介绍(五)——基于阿里云物联网平台的Android聊天app源码》中介绍了利用物联网实现聊天app的开发。这个app带有一个登录的功能,

物联网平台搭建的全过程介绍(八)——利用JDBC实现网上注册用户和登录功能在文章《物联网平台搭建的全过程介绍(五)——基于阿里云物联网平台的Android聊天app源码》中介绍了利用物联网实现聊天app的开发。这个app带有一个登录的功能,

在文章《物联网平台搭建的全过程介绍(五)——基于阿里云物联网平台的Android聊天app源码》中介绍了利用物联网实现聊天app的开发。这个app带有一个登录的功能,但账号和密码是预先写在程序里的,那么实际的聊天软件要有在网上注册和登录的功能。那么今天就介绍一下用JDBC来实现这个功能的步骤。

JDBC部分内容在csdn技能树下也有介绍

  • JDBC概述
  • 数据库操作

目录

一、JDBC简介

二、本例前期需要准备的工作

1、在服务器上已经部署了mysql数据库

2、需要安装一个mysql远程登录软件

3、下载了mysql的驱动jar包

三、实现步骤

1、引入mysql的jar包

2、layout设计

(1)登录界面activity_main.xml

(2)注册界面activity_register.xml

3、java程序

(1)JDBC核心代码

(2)MainActivity.java

(2)RegisterActivity.java

4、AndroidManifest.xml中添加权限

5、其他资源文件

(1)drawable文件

(2)values文件

(3)mipmap文件

四、测试

1、注册测试

2、登录测试


一、JDBC简介

JDBC是Java数据库连接接口(Java Database Connectivity,简称JDBC),是一种用于执行SQL语句的java API ,可以为多种关系型数据库提供统一访问,它由一组java语言编写的类和接口组成。本例所用数据库是mysql

二、本例前期需要准备的工作

1、在服务器上已经部署了mysql数据库

物联网平台搭建的全过程介绍(八)——利用JDBC实现网上注册用户和登录功能在文章《物联网平台搭建的全过程介绍(五)——基于阿里云物联网平台的Android聊天app源码》中介绍了利用物联网实现聊天app的开发。这个app带有一个登录的功能,

mysql官网链接点此处

2、需要安装一个mysql远程登录软件

本例使用的是MySQL Workbench 8.0

物联网平台搭建的全过程介绍(八)——利用JDBC实现网上注册用户和登录功能在文章《物联网平台搭建的全过程介绍(五)——基于阿里云物联网平台的Android聊天app源码》中介绍了利用物联网实现聊天app的开发。这个app带有一个登录的功能,

 利用MySQL Workbench登录mysql数据库,创建一个useInfo表,表创建两个字段:usenamepassword

物联网平台搭建的全过程介绍(八)——利用JDBC实现网上注册用户和登录功能在文章《物联网平台搭建的全过程介绍(五)——基于阿里云物联网平台的Android聊天app源码》中介绍了利用物联网实现聊天app的开发。这个app带有一个登录的功能,

3、下载了mysql的驱动jar包

本例下载的是mysql-connector-java-5.1.49.jar

三、实现步骤

1、引入mysql的jar包

物联网平台搭建的全过程介绍(八)——利用JDBC实现网上注册用户和登录功能在文章《物联网平台搭建的全过程介绍(五)——基于阿里云物联网平台的Android聊天app源码》中介绍了利用物联网实现聊天app的开发。这个app带有一个登录的功能,

(1)在工程栏点”Android”后边的下拉列表框按钮

(2)在下拉列表中选择”Project”,切换到Project模式。

物联网平台搭建的全过程介绍(八)——利用JDBC实现网上注册用户和登录功能在文章《物联网平台搭建的全过程介绍(五)——基于阿里云物联网平台的Android聊天app源码》中介绍了利用物联网实现聊天app的开发。这个app带有一个登录的功能,

 (1)切换到Project模式-> (2)打开app文件夹->(3)打开libs文件夹->(4)把mysql-connector-java-5.1.49.jar复制到此目录下

物联网平台搭建的全过程介绍(八)——利用JDBC实现网上注册用户和登录功能在文章《物联网平台搭建的全过程介绍(五)——基于阿里云物联网平台的Android聊天app源码》中介绍了利用物联网实现聊天app的开发。这个app带有一个登录的功能,

 (1)选中mysql-connector-java-5.1.49.jar    ->(2)鼠标右键,在弹出菜单中点“Add As Library”

物联网平台搭建的全过程介绍(八)——利用JDBC实现网上注册用户和登录功能在文章《物联网平台搭建的全过程介绍(五)——基于阿里云物联网平台的Android聊天app源码》中介绍了利用物联网实现聊天app的开发。这个app带有一个登录的功能,

 build.gradle(Moudle)中已经可以看到此依赖了。

2、layout设计

(1)登录界面activity_main.xml




    

        
            
        

        
            
       

        
            
            
        

        
            
            
        
        
            
            
        

    



(2)注册界面activity_register.xml




    

        

        

        
            
            
        

        
            
            
        

        
            
            
        

        
            

        

    



3、java程序

(1)JDBC核心代码

//注明连接数据库所用的驱动
Class.forName("com.mysql.jdbc.Driver");

//连接数据库
Connection connection = DriverManager.getConnection(url,db_name,db_passwd);

//建立数据库查询sql语句
String sql = "select * from userInfo where username = '"+str_name+"'" + "and password = '"+str_psw+"'";

//进行查询
PreparedStatement preparedStatement = connection.prepareStatement(sql);

//把查询结果放到set集里
ResultSet set =preparedStatement.executeQuery();



//此处是对set集合的数据进行处理代码



//处理结束后关闭连接,释放资源
set.close();
preparedStatement.close();
connection.close();

注意:代码中的url、url,db_name、db_passwd是用户登录mysql的三要素,这些信息写在string文件中了。

(2)MainActivity.java

此程序是登录界面,有登录程序和跳转到注册页面程序

程序关键点:登录就是查询用户信息表userInfo内用户账号usename=输入用户账号 并且 password=输入密码这条记录是否存在

package com.example.myjdbc;

import androidx.appcompat.app.AppCompatActivity;

import android.annotation.SuppressLint;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class MainActivity extends AppCompatActivity {
    TextView tv_name;
    TextView tv_pwd;
    Button btn_login,btn_register;
    String str_name;
    String str_psw;
    String url;
    String db_name;
    String db_passwd;
    boolean user_exist;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        tv_name=this.findViewById(R.id.tv_name);
        tv_pwd=this.findViewById(R.id.tv_pwd);
        btn_login=this.findViewById(R.id.login);
        btn_register=this.findViewById(R.id.register);


        url = getText(R.string.db_url).toString();
        db_name = getText(R.string.db_name).toString();
        db_passwd = getText(R.string.db_passwd).toString();

        btn_login.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                str_name = tv_name.getText().toString();
                str_psw = tv_pwd.getText().toString();
                new Thread(new Runnable() {
                    @Override
                    public void run() {
                        try {
                            Class.forName("com.mysql.jdbc.Driver");
                            Connection connection = DriverManager.getConnection(url,db_name,db_passwd);

                            String sql = "select * from userInfo where username = '"+str_name+"'" + "and password = '"+str_psw+"'";
                            PreparedStatement preparedStatement = connection.prepareStatement(sql);
                            ResultSet set =preparedStatement.executeQuery();
                            if(!set.next())
                            {
                                user_exist=false;
                            }
                            else {
                                user_exist = true;
                            }

                            //6、关闭连接,释放资源
                            set.close();
                            preparedStatement.close();
                            connection.close();

                            //给Handler发送触发信号
                            mHandler.sendEmptyMessage(0);


                        } catch (ClassNotFoundException e) {
                            e.printStackTrace();
                        } catch (SQLException e) {
                            e.printStackTrace();

                        }
                    }
                }).start();
            }
        });

        btn_register.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(MainActivity.this, RegisterActivity.class);
                startActivity(intent);
            }
        });

    }

    @SuppressLint("HandlerLeak")
    private Handler mHandler = new Handler() {
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            switch (msg.what) {
                case 0:
                    if(user_exist)
                    {
                        Toast toast = Toast.makeText(MainActivity.this, getText(R.string.login_success), Toast.LENGTH_LONG);
                        toast.show();
                    }
                    else
                    {
                        Toast toast = Toast.makeText(MainActivity.this, getText(R.string.wrong_neme_or_psw), Toast.LENGTH_LONG);
                        toast.show();
                    }
                    break;
            }
        }
    };
}

(2)RegisterActivity.java

关键代码:

需要验证mysql中是否存在用户输入的账号,如果存在,则提示用户需要重新注册

需要验证两次输入密码是否一致,不一致需要重新设置

注册成功后提示用户已经注册成功

package com.example.myjdbc;

import android.annotation.SuppressLint;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;

import androidx.appcompat.app.AppCompatActivity;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class RegisterActivity extends AppCompatActivity {

    private Button btnregister;
    private EditText et_name,et_pwd,et_pwd_confirm;
    boolean username_exist;
    String url;
    String db_name;
    String db_passwd;

    String str_name;
    String str_psw;
    String str_pwd_confirm;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_register);

        et_name = this.findViewById(R.id.name);            //用户名输入框
        et_pwd = this.findViewById(R.id.pwd);              //密码输入框
        et_pwd_confirm=this.findViewById(R.id.pwd_confirm);
        btnregister = this.findViewById(R.id.register);         //登录按钮

        url = getText(R.string.db_url).toString();
        db_name = getText(R.string.db_name).toString();
        db_passwd = getText(R.string.db_passwd).toString();

        btnregister.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                str_name = et_name.getText().toString();
                str_psw = et_pwd.getText().toString();
                str_pwd_confirm = et_pwd_confirm.getText().toString();

                //如果两次密码输入一致,则查询用户名是否存在
                if(str_psw.equals(str_pwd_confirm)) {
                    new Thread(new Runnable() {
                        @Override
                        public void run() {
                            try {
                                Class.forName("com.mysql.jdbc.Driver");
                                Connection connection = DriverManager.getConnection(url, db_name, db_passwd);
                                String sql = "select * from userInfo where username = '" + str_name + "'";
                                PreparedStatement preparedStatement = connection.prepareStatement(sql);
                                ResultSet set = preparedStatement.executeQuery();

                                //如果用户名不存在
                                if (!set.next()) {
                                    username_exist = false;
                                    String sql2 = "insert into userInfo(username,password) values(?,?)";
                                    PreparedStatement preparedStatement2 = connection.prepareStatement(sql2);
                                    preparedStatement2.setString(1, str_name);
                                    preparedStatement2.setString(2, str_psw);
                                    preparedStatement2.executeUpdate();
                                    preparedStatement2.close();

                                    //如果存在
                                } else {
                                    username_exist = true;
                                }


                                //6、关闭连接,释放资源
                                set.close();
                                preparedStatement.close();
                                connection.close();
                                //给Handler发送触发信号
                                mHandler.sendEmptyMessage(0);

                            } catch (ClassNotFoundException e) {
                                e.printStackTrace();
                            } catch (SQLException e) {
                                e.printStackTrace();

                            }
                        }
                    }).start();

                }
                else
                {
                    //两次密码不一致,则清空重新输入
                    et_pwd.setText("");
                    et_pwd_confirm.setText("");
                    Toast toast = Toast.makeText(RegisterActivity.this, getText(R.string.psw_unsame), Toast.LENGTH_LONG);
                    toast.show();

                }

            }
        });

    }



    @SuppressLint("HandlerLeak")
    private Handler mHandler = new Handler() {
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            switch (msg.what) {
                case 0:
                    if(username_exist)
                    {
                        //如果用户名存在,则清空重新输入
                        et_name.setText("");
                        Toast toast = Toast.makeText(RegisterActivity.this, getText(R.string.username_exist), Toast.LENGTH_LONG);
                        toast.show();
                    }
                    else
                    {
                        Toast toast = Toast.makeText(RegisterActivity.this, getText(R.string.register_success), Toast.LENGTH_LONG);
                        toast.show();
                    }
                    break;
            }
        }
    };

}

4、AndroidManifest.xml中添加权限

此处要注意开网络权限,还需要注意因为涉及到activtity之间的跳转,要把RegisterActivity登记在application下。



    
    
    
    
    
    
        
            
                

                
            
        

        
        
    

5、其他资源文件

(1)drawable文件

添加了一个按钮的样式button0.xml



    
        
            
            
            
        
    
    
        
            
            
            
        
    

(2)values文件

values/string下的内容


    MyJDBC
    登录成功
    用户名或密码错误
    登录
    注册
    确认修改
    两次密码不一致,请重新输入
    注册成功
    用户名已存在,请重新注册

    ****************
    **********
    ********

(3)mipmap文件

此文件下添加了一张背景图片back0.jpg 

物联网平台搭建的全过程介绍(八)——利用JDBC实现网上注册用户和登录功能在文章《物联网平台搭建的全过程介绍(五)——基于阿里云物联网平台的Android聊天app源码》中介绍了利用物联网实现聊天app的开发。这个app带有一个登录的功能,

四、测试

1、注册测试

物联网平台搭建的全过程介绍(八)——利用JDBC实现网上注册用户和登录功能在文章《物联网平台搭建的全过程介绍(五)——基于阿里云物联网平台的Android聊天app源码》中介绍了利用物联网实现聊天app的开发。这个app带有一个登录的功能,
 注册账号数据库中已存在
物联网平台搭建的全过程介绍(八)——利用JDBC实现网上注册用户和登录功能在文章《物联网平台搭建的全过程介绍(五)——基于阿里云物联网平台的Android聊天app源码》中介绍了利用物联网实现聊天app的开发。这个app带有一个登录的功能,
注册成功
物联网平台搭建的全过程介绍(八)——利用JDBC实现网上注册用户和登录功能在文章《物联网平台搭建的全过程介绍(五)——基于阿里云物联网平台的Android聊天app源码》中介绍了利用物联网实现聊天app的开发。这个app带有一个登录的功能,
userInfo内用户信息已写入

2、登录测试

物联网平台搭建的全过程介绍(八)——利用JDBC实现网上注册用户和登录功能在文章《物联网平台搭建的全过程介绍(五)——基于阿里云物联网平台的Android聊天app源码》中介绍了利用物联网实现聊天app的开发。这个app带有一个登录的功能,
用户名或密码错误
物联网平台搭建的全过程介绍(八)——利用JDBC实现网上注册用户和登录功能在文章《物联网平台搭建的全过程介绍(五)——基于阿里云物联网平台的Android聊天app源码》中介绍了利用物联网实现聊天app的开发。这个app带有一个登录的功能,
账号密码验证成功

 (全文结束)

本文章来源于互联网,如有侵权,请联系删除!原文地址:物联网平台搭建的全过程介绍(八)——利用JDBC实现网上注册用户和登录功能在文章《物联网平台搭建的全过程介绍(五)——基于阿里云物联网平台的Android聊天app源码》中介绍了利用物联网实现聊天app的开发。这个app带有一个登录的功能,但账号和密码是预先写在程序里的,那么实际的聊天软件要有在网上注册和登录的功能。那么今天就介绍一下用JDBC来实现这个功能的步骤。

相关推荐: 阿里云物联网平台之极速体验

阿里云物联网平台之极速体验 体验入口 公共实例–设备管理 产品 设备 分组 任务 公共实例–规则引擎 服务端订阅 总结 体验入口 阿里云物联网平台活动地址:https://developer.aliyun.com/learning/topic/IoT202…