当前位置: 首页 > article >正文

Android——连接MySQL(Java版)

Android——连接MySQL(Java版)

目录:

  • Android——连接MySQL(Java版)
    • 一、JDBC
      • 1、什么是JDBC
      • 2、载入JDBC
      • 3、创建JDBC的工具类
    • 二、使用数据库

一、JDBC

1、什么是JDBC

JDBC全称Java Database Connectivity,译为Java语言连接数据库,是sun公司制定的一个接口。不同的数据库都有对应JDBC的jar包用于驱动数据库。

2、载入JDBC

在Android开发中,是以Gradle创建项目,添加JDBC关于MySQL的接口,在项目文件(app目录)下找到build.gradle文件,在dependencies添加语句

implementation 'mysql:mysql-connector-java:5.1.25'

冒号后为MySQL客户端的版本,添加后环境会自动安装。

3、创建JDBC的工具类

在项目文件中新建DBHelper类,添加Driver和数据库密码等信息,然后通过JDBC接口发送至数据库。

public class DBHelper {
    private static String diver = "com.mysql.jdbc.Driver";
    //加入utf-8是为了后面往表中输入中文,表中不会出现乱码的情况
    private static String url = "jdbc:mysql://地址:端口/用户名?serverTimezone=UTC&useUnicode=true&characterEncoding=utf8&useSSL=FALSE&autoReconnect=true&failOverReadOnly=false";
    private static String user = "";//用户名
    private static String password = "";//密码

    public static Connection getConn() {
        Connection conn = null;
        try {
            Class.forName(diver);
            conn = (Connection) DriverManager.getConnection(url, user, password);//获取连接
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return conn;
    }
}

根据MySQL不同的版本,MySQL8.0中Driver的应该为com.mysql.cj.jdbc.Driver

二、使用数据库

在项目中实例化工具类创建连接

Connection conn = null;
conn=(Connection)DBHelper.getConn();

实例化Statement类用于将命令发送到数据库中

Statement statement=null;
statement=conn.createStatement();

创建SQL语句

String SQL="select * from 表名 where 变量名='"+username+"';";

最后实例化ResultSet类用于接受MySQL返回的信息

 ResultSet resultSet=statement.executeQuery(SQL);

当数据库返回为大量数据时使用while循环读取

 while (resultSet.next()){
 	String sql_password=resultSet.getString("password");
	String user_type=resultSet.getString("type");
}

注意的是在使用statement对象时,要使用try-catch方法,以下是获取输入的账号密码对比数据库内数据的完整代码

public void login(View v){
        new Thread(new Runnable() {
            @Override
            public void run() {
                EditText editText_username=(EditText) findViewById(R.id.phone_num);
                EditText editText_password=(EditText)findViewById(R.id.psw);
                String username=editText_username.getText().toString();
                String t_password=editText_password.getText().toString();
                Connection conn = null;
                conn=(Connection)DBHelper.getConn();
                Statement statement=null;
                try {
                    statement=conn.createStatement();
                    String SQL="select * from user where username='"+username+"';";
                    System.out.println(SQL);
                    ResultSet resultSet=statement.executeQuery(SQL);
                    boolean change=false;
                    while (resultSet.next()){
                        String sql_password=resultSet.getString("password");
                        String user_type=resultSet.getString("type");
                        System.out.println(sql_password);
                        if(t_password.equals(sql_password)){
                            m_username=username;
                            m_user_type=user_type;
                            conn.close();
                            statement.close();
                            resultSet.close();
                            finish();
                            if (User_Status==true) {
                                User.instance.finish();
                            }
                            Intent intent=new Intent(context,MainActivity.class);
                            startActivity(intent);
                        }
                    }
                    if(change==false) {
                        Looper.prepare();
                        Toast.makeText(Login.this, "账号或密码错误", Toast.LENGTH_SHORT).show();
                        Looper.loop();
                        editText_username.setText("null");
                        editText_password.setText("null");
                        conn.close();
                        statement.close();
                        resultSet.close();
                    }
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }).start();
    }

http://www.kler.cn/a/406583.html

相关文章:

  • 「Mac玩转仓颉内测版19」PTA刷题篇10 - L1-010 比较大小
  • HarmonyOS . 沉浸状态栏使用
  • ElasticSearch学习篇17_《检索技术核心20讲》最邻近检索-局部敏感哈希、乘积量化PQ思路
  • ElasticSearch学习篇18_《检索技术核心20讲》LevelDB设计思想
  • 滑动窗口篇——如行云流水般的高效解法与智能之道(1)
  • 最大熵谱估计
  • 淘宝关键词订单API接口:电商运营的新利器
  • Python笔记2-六种标准数据类型3
  • android 使用MediaPlayer实现音乐播放--权限请求
  • PHP 高并发解决方案
  • Easyexcel(2-文件读取)
  • Elasticsearch 中的热点以及如何使用 AutoOps 解决它们
  • 【Lambda基础】Python Lambda 函数的 9 种玩法
  • 【1.2 Getting Started--->Installation Guide】
  • Cmakelist.txt之Linux-redis配置
  • Java、Android引用类型
  • rust中解决DPI-1047: Cannot locate a 64-bit Oracle Client library问题
  • C++ String
  • 【嵌入式】手把手教你入门STM32的GPIO:使用GPIO输入
  • SpringBoot入门准备——Maven的使用
  • Web3与智能合约:区块链技术下的数字信任体系
  • Python世界:力扣题解875,珂珂爱吃香蕉,中等
  • Python操作neo4j库py2neo使用之py2neo 删除及事务相关操作(三)
  • uniapp跨域问题解决方案
  • 博客文章怎么设计分类与标签
  • Java SE 与 Java EE:基础与进阶的探索之旅