Android连接mysql

  1. 准备:mysql-connector-java驱动jar包,放在libs下即可(点击android或项目右侧的小三角可切换显示结构),如:在这里插入图片描述
  2. 数据库封装类(注意url用ip):
package com.hsin.widgetslearn.storage.utils;import java.sql.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;public class DButils {private static final  String driver = "com.mysql.jdbc.Driver";//数据库举动private static final String url= "jdbc:mysql://192.168.0.103:3306/test_db?serverTimezone=UTC";//数据库urlprivate static final String url2= "jdbc:mysql://localhost:3306/test_db?serverTimezone=UTC";private static final  String user = "root";//数据库userprivate static final  String pwd = "123456";//数据库pwdpublic static Connection getConn(){Connection con = null;try {Class.forName(driver);con= java.sql.DriverManager.getConnection(url,user,pwd);} catch (ClassNotFoundException e) {e.printStackTrace();} catch (SQLException e) {e.printStackTrace();}catch (Exception e){e.printStackTrace();}return con;}public static List<Map<String,Object>> executeQuery(String sql, Object... args){Connection con = null;PreparedStatement pstm = null;ResultSet rs =null;try {con = getConn();if(con==null) return null;pstm= con.prepareStatement(sql);if(args!=null){for(int i=0;i<args.length;i++){pstm.setObject(i+1,args[i]);}}rs= pstm.executeQuery();//将查询到的结果集对象封装到list中,每一行用一个map存放List<Map<String,Object>> list = new ArrayList<Map<String,Object>>();//获取查询结果有多少列int count = rs.getMetaData().getColumnCount();while (rs.next()){Map<String,Object> map = new HashMap<String, Object>();for(int i=0;i<count;i++){String name = rs.getMetaData().getColumnLabel(i+1);map.put(name,rs.getObject(name));}list.add(map);}return  list;} catch (SQLException e) {e.printStackTrace();}finally {close(con,pstm,rs);}//自己关闭return null;}public boolean execuUpdate(String sql,Object... args){PreparedStatement pstm=null;Connection con = null;boolean flag = false;try {con = getConn();if(con==null) return false ;pstm= con.prepareStatement(sql);if(args!=null){for(int i=0;i<args.length;i++){pstm.setObject(i+1,args[i]);}}if(pstm.executeUpdate()>0){flag = true;}} catch (SQLException e) {e.printStackTrace();}finally {close(con,pstm,null);}return  flag;}public static void close(Connection con,PreparedStatement ps,ResultSet rs){if(rs!=null){try {rs.close();} catch (SQLException e) {e.printStackTrace();}}if(ps!=null){try {ps.close();} catch (SQLException e) {e.printStackTrace();}}if(con!=null){try {con.close();} catch (SQLException e) {e.printStackTrace();}}}
}

3 Activity:

package com.hsin.widgetslearn.storage;import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
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 com.hsin.widgetslearn.R;
import com.hsin.widgetslearn.storage.utils.DButils;
import java.util.List;
import java.util.Map;public class MySqlActivity extends AppCompatActivity implements View.OnClickListener {private Button mysql_query;private Button mysql_add;private Button mysql_delete;private Button mysql_update;private TextView tv_content;private Handler handler =  new Handler(){@Overridepublic void handleMessage(@NonNull Message msg) {super.handleMessage(msg);switch (msg.what){case 0x11:List<Map<String,Object>> list = (List<Map<String, Object>>) msg.obj;StringBuilder builder = new StringBuilder("");for (int i=0;i<list.size();i++){String name =(String) list.get(i).get("name");String pwd = (String)list.get(i).get("password");builder.append(name+pwd);}tv_content.setText(builder);break;}}};@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_my_sql);mysql_query =  findViewById(R.id.mysql_query);mysql_add =  findViewById(R.id.mysql_add);mysql_update =  findViewById(R.id.mysql_update);mysql_delete=  findViewById(R.id.mysql_delete);tv_content=  findViewById(R.id.mysql_content);//设置监听事件mysql_query.setOnClickListener(this::onClick);mysql_add.setOnClickListener(this::onClick);mysql_delete.setOnClickListener(this::onClick);mysql_update.setOnClickListener(this::onClick);}@Overridepublic void onClick(View v) {switch (v.getId()){case R.id.mysql_query://查询并将结果显示到textviewqueryThread();break;case R.id.mysql_add:break;case R.id.mysql_update:break;case R.id.mysql_delete:break;}}public void queryThread(){new Thread(){@Overridepublic void run() {super.run();String sql = "select * from student";List<Map<String,Object>> list = DButils.executeQuery(sql,null);Message message = handler.obtainMessage();if (list!=null){message.what=0x11;message.obj  =list;handler.sendMessage(message);}}}.start();}}
  1. layout布局文件:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"tools:context=".storage.MySqlActivity"><Buttonandroid:id="@+id/mysql_query"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="查询"/><Buttonandroid:id="@+id/mysql_add"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="添加"/><Buttonandroid:id="@+id/mysql_delete"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="删除"/><Buttonandroid:id="@+id/mysql_update"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="修改"/><TextViewandroid:id="@+id/mysql_content"android:layout_width="match_parent"android:layout_height="wrap_content"/></LinearLayout>
  1. manifest.xml授予网络权限:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
  1. 效果:
    在这里插入图片描述

如果连接有问题,参考我的上一篇文章,我用的debian系的LinuxMint,如果你用的windows或其他,这类似吧~~哈哈


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部