Android中连接MySql数据库获取数据的简单实现
⽂章⽬录
背景
⼀般情况下,Android与数据库中的数据进⾏交互都是通过调⽤api接⼝来实现的。但是今天我们就来尝试实现直接连接到MySql数据库获取数据的功能。
demo布局
sql server包含某个字符demo很简单,xml布局⽂件显⽰的是⼀个按钮和⼀个textView控件。
点击按钮实现连接MySql数据库并获取表中的数据;textView⽤来显⽰获取的数据。xml布局显⽰如下:
javaswing详解xml代码如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="schemas.android/apk/res/android"
xmlns:app="schemas.android/apk/res-auto"
xmlns:tools="schemas.android/tools"
android:orientation="vertical"
android:layout_width="match_parent"
手机mysql安装配置教程android:layout_height="match_parent"
tools:context=".MainActivity">
<Button
android:id="@+id/btn_get_data"
android:layout_margin="2dp"
negligence
android:textSize="16sp"
android:text="获取数据测试"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<TextView
android: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数据库需要导⼊jar包(百度⽹盘提取码为:ctxa)。
将jar下载后,在新建的demo项⽬app/src/main ⽬录下 创建libs⽂件夹,将jar包复制到该⽂件夹下,然后右键选择 Add As Library 进⾏导⼊即可。如图:
等待gradle同步成功后,打开gradle⽂件依赖内容如下说明导⼊成功:
demo代码实现
jar包导⼊成功后,对应的api就可以使⽤了,下⾯我们来看代码的实现。
代码实现思路:⾸先需要连接⾄MySql数据库,连接成功后,就可以做对应的数据库操作了。代码中我会给出详细的注释,就不详细的说每个变量的意思了。
MainActivity.java代码如下:
sqldemo;
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(){
@Override
public 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;
本地安装maventv_data.setText(ss);
break;
}
}
}
};
@Override
protected void onCreate(Bundle 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() {
@Override
public void onClick(View v) {
// 创建⼀个线程来连接数据库并获取数据库中对应表的数据
new Thread(new Runnable() {
@Override
public void run() {
// 调⽤数据库⼯具类DBUtils的getInfoByName⽅法获取数据库表中数据
HashMap<String, Object> map = InfoByName("Charger9527");
Message message = handler.obtainMessage();
if(map != null){
String s = "";
for (String key : map.keySet()){
s += key + ":" + (key) + "\n";
}
message.what = 0x12;
message.obj = s;
}else {
message.what = 0x11;
message.obj = "查询结果为空";
}
// 发消息通知主线程更新UI
handler.sendMessage(message);
}
}).start();
}
});
}
}
上⾯的代码⽐较简单,不过涉及到⼀个数据库⼯具类DBUtils.java,代码如下:sqldemo;
t.Context;
import android.util.Log;
import android.widget.Toast;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.HashMap;
/**
* 数据库⼯具类:连接数据库⽤、获取数据库数据⽤
* 相关操作数据库的⽅法均可写在该类
数学sqrt什么意思
*/
public class DBUtils {
private static String driver = "sql.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 = Connection("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语句中的?的值为name
ps.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));
}
}

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。