移动端疫情展示

Dao

 

复制代码

package com.itheima.worldepidemic.db;

 

import android.util.Log;

 

import com.alibaba.fastjson.JSONArray;

import com.alibaba.fastjson.JSONObject;

 

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

 

/**

 * 数据库工具类:连接数据库用、获取数据库数据用

 * 相关操作数据库的方法均可写在该类

 */

public class DBUtil {

 

 

    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 = "123";// 密码

 

 

 

    private static Connection getConn(String dbName){

 

 

        Connection connection = null;

        try{

            Class.forName(driver);// 动态加载类

            String ip = "49.235.116.180";// 写成本机地址,不能写成localhost,同时手机和电脑连接的网络必须是同一个

 

            // 尝试建立到给定数据库URL的连接

            connection = DriverManager.getConnection("jdbc:mysql://" + ip + ":3306/" + dbName,

                    user, password);

 

        }catch (Exception e){

            e.printStackTrace();

        }

 

        return connection;

    }

 

    public static String getInfoByName(String time,String country){

        JSONArray jsonArray=new JSONArray();

        // 根据数据库名称,建立连接

        Connection connection = getConn("epidemic");

 

        try {

            // mysql简单的查询语句。这里是根据MD_CHARGER表的NAME字段来查询某条记录

            String sql = "select * from world where date_format(Date,'%Y-%m-%d') = ? and country = ? and child !='2' order by Confirmed_num desc";

//            String sql = "select * from MD_CHARGER";

            if (connection != null){// connection不为null表示与数据库建立了连接

                PreparedStatement ps = connection.prepareStatement(sql);

                if (ps != null){

                    // 设置上面的sql语句中的?的值为name

                    ps.setString(1, time);

                    ps.setString(2,country);

                    // 执行sql查询语句并返回结果集

                    ResultSet rs = ps.executeQuery();

                    if (rs != null){

 

                        while (rs.next()){

                            JSONObject json=new JSONObject();

                            String place=rs.getString("Country");

                            String province=rs.getString("Province");

                            if(province==null||province.equals(""))

                                province="";

                            String confirmed_num=""+rs.getInt("Confirmed_num");

                            String yisi_num=rs.getString("Yisi_num");

                            String cured_num=rs.getString("Cured_num");

                            String dead_num=rs.getString("Dead_num");

                            json.put("country",place);

                            json.put("province", province);

                            json.put("confirmed_num", confirmed_num);

                            json.put("yisi_num", yisi_num);

                            json.put("cured_num", cured_num);

                            json.put("dead_num", dead_num);

                            jsonArray.add(json);

                        }

 

                    }else {

                        return null;

                    }

                }else {

                    return  null;

                }

            }else {

                return  null;

            }

        }catch (Exception e){

            e.printStackTrace();

            Log.e("DBUtils","异常:" + e.getMessage());

            return null;

        }

        return jsonArray.toString();

    }

 

}

复制代码

数据显示:

 

复制代码

package com.itheima.worldepidemic;

 

import android.annotation.SuppressLint;

import android.os.Bundle;

import android.os.Handler;

import android.os.Message;

import android.text.method.ScrollingMovementMethod;

import android.view.View;

import android.widget.Button;

import android.widget.TextView;

 

import androidx.appcompat.app.AppCompatActivity;

 

import com.alibaba.fastjson.JSON;

import com.alibaba.fastjson.JSONArray;

import com.alibaba.fastjson.JSONObject;

import com.itheima.worldepidemic.db.DBUtil;

 

public class MainActivity extends AppCompatActivity {

    private TextView date;

    private TextView country;

    private Button btn;

    private TextView tv_data;

    private String str;

    @SuppressLint("HandlerLeak")

    private Handler handler = new Handler( ) {

        @Override

        public void handleMessage(Message msg) {

            tv_data=findViewById(R.id.tv_data);

            tv_data.setMovementMethod(ScrollingMovementMethod.getInstance());

            switch (msg.what) {

                case 0x11:

                    str= (String) msg.obj;

                    tv_data.setText(str);

                    break;

 

                case 0x12:

                    String str1 = (String) msg.obj;

                    tv_data.setText(str1);

                    break;

                default:

                    throw new IllegalStateException("Unexpected value: " + msg.what);

            }

 

        }

    };

 

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        date = findViewById(R.id.time);

        country = findViewById(R.id.country);

        country.setText("伊朗");

        btn = findViewById(R.id.btn);

        query( );

 

    }

 

 

    public void query() {

 

        btn.setOnClickListener(new View.OnClickListener( ) {

            @Override

            public void onClick(View v) {

                // 创建一个线程来连接数据库并获取数据库中对应表的数据

                new Thread(new Runnable( ) {

                    @Override

                    public void run() {

                        // 调用数据库工具类DBUtils的getInfoByName方法获取数据库表中数据

                        String result = DBUtil.getInfoByName(date.getText( ).toString( ), country.getText( ).toString( ));

                        JSONArray jsonArray= (JSONArray) JSON.parse(result);

                        Message message = handler.obtainMessage( );

                        if (jsonArray!= null) {

                            String s = "";

                            for(int i=0;i<jsonArray.size();i++) {

                                JSONObject json = jsonArray.getJSONObject(i);

                                s = s + json.getString("country") + " " + json.getString("province") + " "

                                        + "确诊:" + json.getString("confirmed_num") + "疑似:" + json.getString("yisi_num") + "治愈:"

                                        + json.getString("cured_num") + "死亡:" + json.getString("dead_num") + "\n";

                            }

                            message.what = 0x12;

                            message.obj = s;

                        } else {

                            message.what = 0x11;

                            message.obj = "查询结果为空";

                        }

                        // 发消息通知主线程更新UI

                        handler.sendMessage(message);

                    }

                }).start( );

 

 

            }

        });

    }

 

 

}

复制代码

界面代码:

 

复制代码

<?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=".MainActivity">

    <LinearLayout

        android:orientation="horizontal"

        android:layout_width="match_parent"

        android:layout_height="wrap_content">

    <TextView

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:text="时间:"

        android:textSize="16sp"

        android:textColor="@color/colorAccent"

        />

    <EditText

        android:id="@+id/time"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:hint="例如2020-03-22"

        android:inputType="text"

        android:maxLines="1"

        />

 

    <TextView

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:text="地区:"

        android:textSize="16sp"

        android:textColor="@color/colorAccent"

        />

    <EditText

        android:id="@+id/country"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:hint="例如中国"

        android:maxLines="1"

        android:inputType="text"

        />

    </LinearLayout>

    <Button

        android:id="@+id/btn"

        android:layout_width="match_parent"

        android:layout_height="wrap_content"

        android:text="查询"

        android:layout_gravity="center_horizontal"

        android:textSize="16sp"

        />

    <TextView

        android:id="@+id/tv_data"

        android:padding="10dp"

        android:textSize="16sp"

        android:gravity="center"

        android:text="结果显示区"

        android:scrollbars="vertical"

        android:layout_width="match_parent"

        android:layout_height="300dp" />

</LinearLayout>

 

posted @ 2020-03-27 15:48  dululudululu  阅读(107)  评论(0编辑  收藏  举报