文章目录

  • 背景
  • demo布局
  • 导入jar包
  • demo代码实现
  • 权限设置
  • 应用运行的结果

背景

一般情况下,Android与数据库中的数据进行交互都是通过调用api接口来实现的。但是今天我们就来尝试实现直接连接到MySql数据库获取数据的功能。


demo布局

demo很简单,xml布局文件显示的是一个按钮和一个textView控件。
点击按钮实现连接MySql数据库并获取表中的数据;textView用来显示获取的数据。xml布局显示如下:

xml代码如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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:orientation="vertical"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".MainActivity"><Buttonandroid:id="@+id/btn_get_data"android:layout_margin="2dp"android:textSize="16sp"android:text="获取数据测试"android:layout_width="match_parent"android:layout_height="wrap_content" /><TextViewandroid:id="@+id/tv_data"android:padding="10dp"android:textSize="16sp"android:gravity="center"android:text="imxiaoqi"android:layout_width="match_parent"android:layout_height="wrap_content" /></LinearLayout>

导入jar包

实现直连MySql数据库需要导入mysql-connector-java-5.1.30-binjar包(百度网盘提取码为:ctxa)。

将jar下载后,在新建的demo项目app/src/main 目录下 创建libs文件夹,将jar包复制到该文件夹下,然后右键选择 Add As Library 进行导入即可。如图:

等待gradle同步成功后,打开gradle文件依赖内容如下说明导入成功:


demo代码实现

jar包导入成功后,对应的api就可以使用了,下面我们来看代码的实现。
代码实现思路:首先需要连接至MySql数据库,连接成功后,就可以做对应的数据库操作了。

代码中我会给出详细的注释,就不详细的说每个变量的意思了。

  • MainActivity.java代码如下:
package com.example.administrator.mysqldemo;import android.annotation.SuppressLint;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;import java.util.HashMap;public class MainActivity extends Activity {private Button btn_get_data;private TextView tv_data;@SuppressLint("HandlerLeak")private Handler handler = new Handler(){@Overridepublic void handleMessage(Message msg) {switch (msg.what){case 0x11:String s = (String) msg.obj;tv_data.setText(s);break;case 0x12:String ss = (String) msg.obj;tv_data.setText(ss);break;}}};@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);// 控件的初始化btn_get_data = findViewById(R.id.btn_get_data);tv_data = findViewById(R.id.tv_data);setListener();}/*** 设置监听*/private void setListener() {// 按钮点击事件btn_get_data.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {// 创建一个线程来连接数据库并获取数据库中对应表的数据new Thread(new Runnable() {@Overridepublic void run() {// 调用数据库工具类DBUtils的getInfoByName方法获取数据库表中数据HashMap<String, Object> map = DBUtils.getInfoByName("Charger9527");Message message = handler.obtainMessage();if(map != null){String s = "";for (String key : map.keySet()){s += key + ":" + map.get(key) + "\n";}message.what = 0x12;message.obj = s;}else {message.what = 0x11;message.obj = "查询结果为空";}// 发消息通知主线程更新UIhandler.sendMessage(message);}}).start();}});}
}
  • 上面的代码比较简单,不过涉及到一个数据库工具类DBUtils.java,代码如下:
package com.example.administrator.mysqldemo;import android.content.Context;
import android.util.Log;
import android.widget.Toast;import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.HashMap;/*** 数据库工具类:连接数据库用、获取数据库数据用* 相关操作数据库的方法均可写在该类*/
public class DBUtils {private static String driver = "com.mysql.jdbc.Driver";// MySql驱动//    private static String url = "jdbc:mysql://localhost:3306/map_designer_test_db";private static String user = "root";// 用户名private static String password = "123456";// 密码private static Connection getConn(String dbName){Connection connection = null;try{Class.forName(driver);// 动态加载类String ip = "192.168.3.61";// 写成本机地址,不能写成localhost,同时手机和电脑连接的网络必须是同一个// 尝试建立到给定数据库URL的连接connection = DriverManager.getConnection("jdbc:mysql://" + ip + ":3306/" + dbName,user, password);}catch (Exception e){e.printStackTrace();}return connection;}public static HashMap<String, Object> getInfoByName(String name){HashMap<String, Object> map = new HashMap<>();// 根据数据库名称,建立连接Connection connection = getConn("map_designer_test_db");try {// mysql简单的查询语句。这里是根据MD_CHARGER表的NAME字段来查询某条记录String sql = "select * from MD_CHARGER where NAME = ?";
//            String sql = "select * from MD_CHARGER";if (connection != null){// connection不为null表示与数据库建立了连接PreparedStatement ps = connection.prepareStatement(sql);if (ps != null){// 设置上面的sql语句中的?的值为nameps.setString(1, name);// 执行sql查询语句并返回结果集ResultSet rs = ps.executeQuery();if (rs != null){int count = rs.getMetaData().getColumnCount();Log.e("DBUtils","列总数:" + count);while (rs.next()){// 注意:下标是从1开始的for (int i = 1;i <= count;i++){String field = rs.getMetaData().getColumnName(i);map.put(field, rs.getString(field));}}connection.close();ps.close();return  map;}else {return null;}}else {return  null;}}else {return  null;}}catch (Exception e){e.printStackTrace();Log.e("DBUtils","异常:" + e.getMessage());return null;}}}

这个类,有点需要注意的是:数据库的ip地址记得写本机IPV4地址,然后手机与电脑连接同一个网络,只有这样条件下,手机才能成功的连接上本机的mysql数据库。

上面的代码我给出了关键的注释,这里就不展开说明了,大家自己慢慢捋一捋。


权限设置

这里需要网络权限,大家别忘记了哦!在清单配置文件中添加

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

即可。


应用运行的结果

上面的所有操作完成后,我们来安装到手机上运行看看结果吧!


从上面两幅图可以看到,从mysql数据库表中获取数据成功了。
该文分享关键的信息就是怎么样能成功连接上mysql数据库
一旦成功连接了,那么操作数据库就不难了。我这里只给出了一个查询操作,其他的增删改的操作就都大同小异,大家自己去实践吧!加油哦!


A little bit of progress every day!Come on!

Android中连接MySql数据库获取数据的简单实现相关推荐

  1. go语言服务器连接mysql,golang中连接mysql数据库

    golang中连接mysql数据库,需要使用一个第三方类库github.com/go-sql-driver/mysql,在这个类库中就实现了mysql的连接池,并且只需要设置两个参数就可以实现 一般连 ...

  2. Loadrunner脚本优化-参数化之关联MySQL数据库获取数据

    脚本优化-参数化之关联MySQL数据库获取数据 by:授客 QQ:1033553122 测试环境: Loadrunner 11 Win7 64位 实操: 1.   安装MySQL ODBC驱动程序 O ...

  3. mysql从库数据源_SoapUI Pro教程:如何使用MySQL服务器作为数据源-从MySQL数据库获取数据...

    SoapUI Pro拥有许多其他web服务测试工具所不具备的高级技术和功能.对于REST.SOAP以及其他流行的API和物联网协议,SoapUI Pro提供了业界最全面的功能测试功能.通过易用的图形界 ...

  4. 如何在IDEA中连接mysql数据库

    补充说明下,本篇博文连接数据库,只是将IDEA作为一个Mysql数据库的可视化界面,无法在代码中访问.如果你们是想在代码中连接MySQL数据库,比如通过访问数据库的用户名和密码来进行登录验证,那么请看 ...

  5. IDEA中连接MySQL数据库并逆向生成实体类

    IDEA中连接MySQL数据库并逆向生成实体类 首先在MySQL中创建数据库表,1个表,多个表都可以 打开IDEA 创建SpringBoot项目并新建MVC三层架构的文件夹,也可以不建,生成实体类可以 ...

  6. centos7下载spark连接mysql数据库提取数据(pyspark,Scala,python独立执行)

    原文连接: http://dblab.xmu.edu.cn/blog/1724-2/ 原文连接:https://mapr.com/support/s/article/PySpark-to-MySQL- ...

  7. idea中连接mysql插入成功数据 在navicat中刷新表格没有数据_MySQL入门简记

    1.MySQL和Navicat的安装 下载地址:MySQL官方网站 https://dev.mysql.com/downloads 双击下载的mysql-installer-community-8.0 ...

  8. 如何在jsp页面中连接mysql数据库_如何使用JSP访问MySQL数据库

    如何使用JSP访问MySQL数据库 更新时间:2006年10月13日 00:00:00   作者: import ="java.util.*" import ="java ...

  9. java web项目中连接mysql数据库,javaweb之eclipse工程连接mysql数据库

    javaweb之eclipse工程连接mysql数据库 准备工作: 1.在mysql官网下载mysqlconnection的jar包 输入网址:mysql.com-点击DOWNLOADS--下拉选择M ...

最新文章

  1. mysql router docker_Docker镜像瘦身 - SegmentFault 思否
  2. 在C语言中 下面标识符非法的是,下面哪一项在Java中是非法的标识符? 答案:Youme...
  3. python编程理论_Python并发编程理论篇,来看看
  4. spring datasource oracle,spring中2种oracle数据源的配置
  5. 机器学习技法总结(六)Decision Tree Hypothesis
  6. centos7.5配置ntp时间服务器
  7. JVM监控及诊断工具命令行篇之jcmd
  8. 【传统编码技术对比】汉明码,RS,卷积码三种编码技术的对比
  9. Word2016中出现多级标题自动编号不连续问题
  10. 分享 :理解和管理社交媒体算法的4个想法
  11. 教师计算机培训汇报ppt,教师培训工作总结ppt模板
  12. 公众号敏感词检测工具
  13. 随机存取存储器(RAM)的最大特点是什么?
  14. 尚硅谷智慧校园 —— 1、简介及环境搭建
  15. revit 二次开发之创建图纸和放置视图
  16. CentOS的U盘安装,vim主题设置,笔记本合盖不休眠
  17. 常用颜色RGB、灰度值
  18. msp430发送pwm信号_使用MSP430G2单片机的PWM模块控制LED指示灯的亮度
  19. maskrcnn_benchmark代码分析(2)
  20. 优质免费在线学习网站

热门文章

  1. Office PPT录屏功能
  2. 牛是怎么死的?看懂了思想至少成熟30年
  3. Fuzzy C-Means Clustering(模糊C均值)
  4. 云队友丨会谈加薪的人,一开口就赢了,让你薪资翻倍的3种方式,值得收藏!
  5. 电子科技大学 2022秋 英语听说实训 答案
  6. ROS1云课→32愉快大扫除
  7. alfresco 忘记admin密码
  8. 商用密码应用与安全性评估要点笔记(知识点参考资料汇总)
  9. 跨境电商+RMF+kmeans
  10. 沉浸式体验一:弱化系统栏的显示