• 软工第五周:安卓连接MySql


    这周的学习内容为移动端连接ySql数据库。

    一、实现方法:

    1.导入连接数据库所使用的jar包

    2.在主布局文件中添加 <uses-permission android:name="android.permission.INTERNET"/>获得访问网络的权限

     3.新建一个java文件实现数据库的连接

    package com.example.myapplication;
    import android.util.Log;
    
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    
    import java.sql.SQLException;
    import java.util.ArrayList;
    import java.util.List;
    
    /**
     * 数据库工具类:连接数据库用、获取数据库数据用
     * 相关操作数据库的方法均可写在该类
     */
    public class db {
    
        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 = "zhangziyi1670";// 密码
    
        private static Connection getConn(String dbName) {
    
            Connection connection = null;
            try {
                Class.forName(driver);// 动态加载类
                String ip = "192.168.1.7";// 写成本机地址,不能写成localhost,同时手机和电脑连接的网络必须是同一个
    
                // 尝试建立到给定数据库URL的连接
                connection = DriverManager.getConnection("jdbc:mysql://" + ip + ":3306/" + dbName,
                        user, password + "&useSSL=false&serverTimezone=UTC&useSSL=false&serverTimezone=UTC");
    
            } catch (Exception e) {
                e.printStackTrace();
            }
    
            return connection;
        }
        public static List<CostBean> search(String time,String area){
           List<CostBean>list=new ArrayList<CostBean>();
            Connection connection = getConn("pachong");
    
            try {
                // mysql简单的查询语句。这里是根据MD_CHARGER表的NAME字段来查询某条记录
                String sql = "select * from todaydata_copy1 where updateDate = ? and provinceid = ? ";
    //            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,area);
                        // 执行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 time1=rs.getString("updateData");
                                   String area1=rs.getString("provinceid");
                                   String conformednum=rs.getString("confirmedNum");
                                   CostBean costBean=new CostBean(time1,area1,conformednum);
                                   list.add(costBean);
                                }
                            }
                            connection.close();
                            ps.close();
                            return  list;
                        }else {
    
                            return null;
                        }
                    }else {
                        return  null;
                    }
                }else {
                    Log.e("message","con未连接成功");
                    return  null;
                }
            }catch (SQLException e){
                e.printStackTrace();
                Log.e("DBUtils","异常:" + e.getMessage());
                return null;
            }
        }
    }

    二、时间表

    阶段 时间 问题 备注
    jsoup爬取世界疫情信息,存入mysql 30min   在之前读取全国疫情的知识储备下,这一步相对来说比较容易
    android连接mysql 1day 初次使用android连接mysql,并通过ip地址访问,问题是真的多呀 从网络上查找的资料,但是也遇到了Could not create connection to database server的问题
    android读取,查询,显示疫情信息 2h 空指针 不晓得哪里出错,一点点尝试利用Log日志和LogCat查找错误原因

    三、总结

    1.在我的as中遇到了一个activity无法直接使用findViewById的方法来获得EditText控件中的内容
    在网上查找解决方法有以下几点原因:
    控件id没写对
    在类中声明控件变量时直接赋值为null:

             findViewById方法写在了setContentView方法之前

             当前activity无法直接获得另一个activity布局中的控件(但是有大佬跟我说这和activity没关系,但是我好像就是因为这个原因,不晓得为什么)

    对于最后一种的解决方法:




  • 相关阅读:
    UVa 531 Compromise
    UVa 10130 SuperSale
    UVa 624 CD
    2015年第一天有感
    Bootstrap3.0学习(一)
    IIS上.net注册
    11g Oracle导出表 默认不导出数据为空的表解决
    Oracle数据库密码重置、导入导出库命令
    每天进步一点--WCF学习笔记
    C#每天进步一点--异步编程模式
  • 原文地址:https://www.cnblogs.com/wangzhaojun1670/p/12547658.html
Copyright © 2020-2023  润新知