Android Studio 连接阿里云MySQL服务器并输出查询结果

准备工作:添加引用

 在AndroidManifest.xml文件内增加

<uses-permission android:name="android.permission.INTERNET" />

一、建立连接

//连接数据库,成功返回真,失败返回假
private boolean conSQL() throws ClassNotFoundException {
        Class.forName("com.mysql.jdbc.Driver");
        try {
            String url = "jdbc:mysql://数据库连接外部地址:3306/数据库名称?autoReconnect=true&useSSL=false";
            String name = "用户名";
            String password = "密码";
            con = DriverManager.getConnection(url, name, password);
        } catch (SQLException e) {
            e.printStackTrace();
        }
        if (con != null) {
            return true;
        } else {
            tv_ts1.post(() -> tv_ts1.setText("数据库未连接"));
            return false;
        }
    }

二、查询数据

    //查询并返回结果,查到结果的返回真,未查到结果返回假,结果赋给ResultSet变量rs
    private boolean rtnSQL(String sql) throws SQLException, ClassNotFoundException {
        if (conSQL()) {
            PreparedStatement ps = con.prepareStatement(sql);
            ps.execute();
            rs = ps.getResultSet();
            rs.last(); //移到最后一行
            int rowCount = rs.getRow(); //得到当前行号,也就是记录数
            if (rowCount > 0) {
                rs.beforeFirst(); //如果还要用结果集,就把指针再移到初始化的位置
                return true;
            } else {
                tv_ts1.post(() -> tv_ts1.setText("未查询到结果"));
                return false;
            }
        }
            return false;
    }

三、显示查询结果

    //处理查询结果
    @SuppressLint("SetTextI18n")
    private void rs_user() throws SQLException {
        rs.next();
        String a = rs.getString(1);
        String b = rs.getString(2);
        String c = rs.getString(3);
        String d = rs.getString(4);
        String f = rs.getString(6);
        String g = rs.getString(7);
        String h = rs.getString(8);
        tv_ts1.post(() -> tv_ts1.setText(a + "\n" + b + "\n" + c + "\n" + d + "\n" + f + "\n" + g + "\n" + h));
    }

综合:以下为全部代码

package com.example.mysql;

import androidx.appcompat.app.AppCompatActivity;

import android.annotation.SuppressLint;
import android.os.Bundle;
import android.provider.Settings;
import android.util.Log;
import android.widget.Button;
import android.widget.TextView;

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_ts1;
    Button btn_lj;
    Button btn_cx;
    Connection con = null;
    ResultSet rs = null;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        tv_ts1 = (TextView) findViewById(R.id.tv_ts1);
        btn_lj = (Button) findViewById(R.id.btn_lj);
        btn_cx = (Button) findViewById(R.id.btn_cx);
        btn_lj.setOnClickListener((v -> {
            new Thread(() -> {
                try {
                    @SuppressLint("HardwareIds") String androidId = Settings.Secure.getString(getContentResolver(), Settings.Secure.ANDROID_ID);//获取机器码
                    String sql="call DC_SVIP_App_InsertUser('19979162865','" + androidId + "');";
                    Log.v("SQL",sql);
                    boolean io2 = rtnSQL(sql);//执行SQL,并输出查询结果
                    if(io2)
                        rs_user();//处理查询结果
                } catch (SQLException | ClassNotFoundException e) {
                    Log.v("SQL异常",e.getMessage());
                    tv_ts1.post(() -> tv_ts1.setText(e.getMessage()));
                }
            }).start();
        }));
    }

    //处理查询结果
    @SuppressLint("SetTextI18n")
    private void rs_user() throws SQLException {
        rs.next();
        String a = rs.getString(1);
        String b = rs.getString(2);
        String c = rs.getString(3);
        String d = rs.getString(4);
        String f = rs.getString(6);
        String g = rs.getString(7);
        String h = rs.getString(8);
        tv_ts1.post(() -> tv_ts1.setText(a + "\n" + b + "\n" + c + "\n" + d + "\n" + f + "\n" + g + "\n" + h));
    }

    //查询并返回结果
    private boolean rtnSQL(String sql) throws SQLException, ClassNotFoundException {
        if (conSQL()) {
            PreparedStatement ps = con.prepareStatement(sql);
            ps.execute();
            rs = ps.getResultSet();
            rs.last(); //移到最后一行
            int rowCount = rs.getRow(); //得到当前行号,也就是记录数
            if (rowCount > 0) {
                rs.beforeFirst(); //如果还要用结果集,就把指针再移到初始化的位置
                return true;
            } else {
                tv_ts1.post(() -> tv_ts1.setText("未查询到结果"));
                return false;
            }
        }
            return false;
    }

    //连接数据库
    private boolean conSQL() throws ClassNotFoundException {
        Class.forName("com.mysql.jdbc.Driver");
        try {
            String url = "***";
            String name = "***";
            String password = "***";
            con = DriverManager.getConnection(url, name, password);
        } catch (SQLException e) {
            e.printStackTrace();
        }
        if (con != null) {
            return true;
        } else {
            tv_ts1.post(() -> tv_ts1.setText("数据库未连接"));
            return false;
        }
    }
}

  • 0
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1.物联网的开发难度越来越低当小王被老板要求开发一个物联网项目时,他面临这许多种解决方案,从硬件到软件一应俱全。有的提供了模块化的硬件,有的提供了高度集成的软件开发环境,有的支持python开发,有的支持图形化开发,有的提供硬件SDK,有的提供从云端到移动端成套的解决方案。小王该如何选择?的确,物联网的开发难度越来越低,只要你想,就可以拖拖拽拽做出来一个简单的设备。移动端APP呢?也是如此,你甚至可以登陆某平台的网站在线生成一个安装包直接安装到手机上。但是这些便利化的前提是失去对核心技术的掌握,以及跳转界面、使用习惯等无法把控。2.移动端APP技能是必备当学习物联网技术的小赵到某公司应聘时,公司技术主管对他的知识结构基本满意。然后让他开发一个物联网项目,要软硬件结合,移动端APP是必备的。小赵可以很快做出来一台基于ESP8266的硬件设备,连接到某物联网平台,做出来一个手机端的APP。但是主管对这个APP不太满意,问小赵自己会不会制作手机APP?小赵有些尴尬。为什么移动端APP技能是必备?因为物联网技术涉及到的知识领域有很多个,能够自己做出APP才算是将这些领域的知识完全掌握。就像是一个侠客的武功,最厉害的那个还没有练成,还不能算是真正的高手。3.定制APP价格很贵市场上有不少的物联网软件公司开展物联网应用APP的定制业务,当然价格不菲。如果是公司采购,你将花费较大的价格采购到一个未来并不可控的APP。反过来说,如果是学生应聘,你学到移动端应用知识,将大大提升你的竞争力,你的技能将成为核心竞争力。4.没有类似的教程原因就不多说了。即使有一些片段代码给了大家,大家也做不出来一个能用的APP。5.本课程要讲什么基于阿里云物联网平台(其他物联网平台类似),带您使用Android Studio编写一个安卓APP,实现连接阿里云物联网平台,控制一台智能灯。通过一个软硬件结合项目,结合源代码,一点一点为大家讲解怎么样连接阿里云物联网平台,每一个步骤是怎么回事,源代码怎么实现。为了照顾一些零基础的朋友,课程中还会用一些通俗的语言介绍这些知识,让大家掌握书上和网络上一些不太注意的技术细节。  

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值