zoukankan      html  css  js  c++  java
  • Android连接MySQL测试

    点击获取数据按钮连接数据库并获取数据,在textView显示在数据库中获取的数据;

    1、导入jar包mysql-connector-java-5.1.47.jar

     在libs文件夹下,右键选择 Add As Library 进行导入;

    查看build.gradle是否导入成功

    2、在清单配置文件中添加网络权限,

          在AndroidMnaifest.xml中添加

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

     3、连接数据库代码:

    DBUtils.java:

    package com.example.xinguan;
    
    import android.util.Log;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.util.HashMap;
    
    /**
     * 数据库工具类:连接数据库用、获取数据库数据用
     * 相关操作数据库的方法均可写在该类
     */
    public class DBUtils {
    
        private static String driver = "com.mysql.jdbc.Driver";// MySql驱动
    
        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.1.6";// 写成本机地址,不能写成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("test");
    
            try {
                // mysql简单的查询语句
                String sql = "select * from ceshi where name = ?";
                if (connection != null){// connection不为null表示与数据库建立了连接
                    PreparedStatement ps = connection.prepareStatement(sql);
                    if (ps != null){
                        
                        ps.setString(1, name);
                        // 执行sql查询语句并返回结果集
                        ResultSet rs = ps.executeQuery();
                        if (rs != null){
                            int count = rs.getMetaData().getColumnCount();
                            Log.e("DBUtils","列总数:" + count);
                            while (rs.next()){
    
                                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;
            }
    
        }
    
    }

    4、MainActivity:

    package com.example.xinguan;
    
    
    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;
                        tv_data.setText(ss);
                        break;
                }
    
            }
        };
    
        @Override
        protected 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() {
                @Override
                public void onClick(View v) {
    
                    // 创建一个线程来连接数据库并获取数据库中对应表的数据
                    new Thread(new Runnable() {
                        @Override
                        public void run() {
                            // 调用数据库工具类DBUtils的getInfoByName方法获取数据库表中数据
                            HashMap<String, Object> map = DBUtils.getInfoByName("haha");
                            Message message = handler.obtainMessage();
                            if(map != null){
                                String s = "";
                                for (String key : map.keySet()){
                                    s += key + ":" + map.get(key) + "
    ";
                                }
                                //消息的定位标志
                                message.what = 0x12;
                                message.obj = s;
                            }else {
                                message.what = 0x11;
                                message.obj = "查询结果为空";
                            }
                            // 发消息通知主线程更新UI
                            handler.sendMessage(message);
                        }
                    }).start();
    
                }
            });
    
        }
    }
    View Code

    布局文件:

    <?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:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".MainActivity">
    
        <Button
            android:id="@+id/btn_get_data"
            android:layout_margin="15dp"
            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="测试数据"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />
    
    </LinearLayout>
    View Code

      

  • 相关阅读:
    [洛谷 U68862] 奶牛滑迷宫 题解
    STL的妙用(二)——洛谷 P2073 送花
    平衡树 x 01-trie √
    最小生成树(大纲,待补全)
    单源最短路算法
    黑科技:如何提高整数域内高斯消元的精度和速度——高斯消元与辗转相除法的结合
    Scratch的入门笔记
    Ubuntu18.04安装Tensorflow
    Ubuntu18.04安装英伟达显卡驱动
    macOS下appstore提示未能完成该操作的解决办法
  • 原文地址:https://www.cnblogs.com/xjmm/p/12518750.html
Copyright © 2011-2022 走看看