Android中连接MySql数据库获取数据的简单实现
文章目录
- 背景
- 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数据库获取数据的简单实现相关推荐
- go语言服务器连接mysql,golang中连接mysql数据库
golang中连接mysql数据库,需要使用一个第三方类库github.com/go-sql-driver/mysql,在这个类库中就实现了mysql的连接池,并且只需要设置两个参数就可以实现 一般连 ...
- Loadrunner脚本优化-参数化之关联MySQL数据库获取数据
脚本优化-参数化之关联MySQL数据库获取数据 by:授客 QQ:1033553122 测试环境: Loadrunner 11 Win7 64位 实操: 1. 安装MySQL ODBC驱动程序 O ...
- mysql从库数据源_SoapUI Pro教程:如何使用MySQL服务器作为数据源-从MySQL数据库获取数据...
SoapUI Pro拥有许多其他web服务测试工具所不具备的高级技术和功能.对于REST.SOAP以及其他流行的API和物联网协议,SoapUI Pro提供了业界最全面的功能测试功能.通过易用的图形界 ...
- 如何在IDEA中连接mysql数据库
补充说明下,本篇博文连接数据库,只是将IDEA作为一个Mysql数据库的可视化界面,无法在代码中访问.如果你们是想在代码中连接MySQL数据库,比如通过访问数据库的用户名和密码来进行登录验证,那么请看 ...
- IDEA中连接MySQL数据库并逆向生成实体类
IDEA中连接MySQL数据库并逆向生成实体类 首先在MySQL中创建数据库表,1个表,多个表都可以 打开IDEA 创建SpringBoot项目并新建MVC三层架构的文件夹,也可以不建,生成实体类可以 ...
- centos7下载spark连接mysql数据库提取数据(pyspark,Scala,python独立执行)
原文连接: http://dblab.xmu.edu.cn/blog/1724-2/ 原文连接:https://mapr.com/support/s/article/PySpark-to-MySQL- ...
- idea中连接mysql插入成功数据 在navicat中刷新表格没有数据_MySQL入门简记
1.MySQL和Navicat的安装 下载地址:MySQL官方网站 https://dev.mysql.com/downloads 双击下载的mysql-installer-community-8.0 ...
- 如何在jsp页面中连接mysql数据库_如何使用JSP访问MySQL数据库
如何使用JSP访问MySQL数据库 更新时间:2006年10月13日 00:00:00 作者: import ="java.util.*" import ="java ...
- java web项目中连接mysql数据库,javaweb之eclipse工程连接mysql数据库
javaweb之eclipse工程连接mysql数据库 准备工作: 1.在mysql官网下载mysqlconnection的jar包 输入网址:mysql.com-点击DOWNLOADS--下拉选择M ...
最新文章
- mysql router docker_Docker镜像瘦身 - SegmentFault 思否
- 在C语言中 下面标识符非法的是,下面哪一项在Java中是非法的标识符? 答案:Youme...
- python编程理论_Python并发编程理论篇,来看看
- spring datasource oracle,spring中2种oracle数据源的配置
- 机器学习技法总结(六)Decision Tree Hypothesis
- centos7.5配置ntp时间服务器
- JVM监控及诊断工具命令行篇之jcmd
- 【传统编码技术对比】汉明码,RS,卷积码三种编码技术的对比
- Word2016中出现多级标题自动编号不连续问题
- 分享 :理解和管理社交媒体算法的4个想法
- 教师计算机培训汇报ppt,教师培训工作总结ppt模板
- 公众号敏感词检测工具
- 随机存取存储器(RAM)的最大特点是什么?
- 尚硅谷智慧校园 —— 1、简介及环境搭建
- revit 二次开发之创建图纸和放置视图
- CentOS的U盘安装,vim主题设置,笔记本合盖不休眠
- 常用颜色RGB、灰度值
- msp430发送pwm信号_使用MSP430G2单片机的PWM模块控制LED指示灯的亮度
- maskrcnn_benchmark代码分析(2)
- 优质免费在线学习网站