首页 > 其他分享 >4.18

4.18

时间:2024-04-18 22:47:07浏览次数:18  
标签:String 4.18 数据库 private connection static mysql

APP端连接数据库

public class DBUtils {
    static List<ESP8266> ESPlist=new ArrayList<>();//存放设备的数组
    private static ESP8266 Device=new ESP8266();//初始化数组
    private static String driver = "com.mysql.jdbc.Driver";// MySql驱动,需要驱动才能接入MySQL

//    private static String url = "jdbc:mysql://localhost:3306/map_designer_test_db";

    private static String user = "app";//  数据库的用户名

    private static String password = "123456";//用户名对应的 密码

    //连接数据库的函数
    private static Connection getConn(String dbName){

        Connection connection = null;
        try{
            Class.forName(driver);// 动态加载类
            String ip = "118.31.20.121";// 这是MySQL服务器的地址,因为我买的是云主机,所以这里填的是云主机的公网地址

            // 尝试建立到给定数据库URL的连接,连接格式:驱动名称+ip地址+端口号+数据库名称+用户名+密码
            connection = DriverManager.getConnection("jdbc:mysql://" + ip + ":3306/" + dbName,
                    user, password);
            //Log.e("prx","url: "+"jdbc:mysql://" + ip + ":3306/" + dbName);3306为MySQL接入固定端口

        }catch (Exception e){
            e.printStackTrace();
        }

        return connection;
    }

    public static List<ESP8266> getInfoByID(String ID){


        // 根据数据库名称,建立连接
        Connection connection = getConn("MQTTDATA");

        try {
            // mysql简单的查询语句。可以使用查询,更新,删除等等,?是一个变量,在后面可以对?进行赋值,可以设置多个?
            String sql = "select * from test2 where app_id=?";

            if (connection != null){
                // connection不为null表示与数据库建立了连接
                //预编译sql 的,例如 preparedStatement("select * from t where id = ?");
                //然后传入参数的时候 ? 就会替换成你所需要的参数。
                PreparedStatement ps = connection.prepareStatement(sql);
                if (ps != null){
                    // 设置上面的sql语句中第一个?的值为ID,如果有两个?,就再写一个ps.setString(2,String),
                    //  ?会被替换成ID所代表的值
                    ps.setString(1, ID);
                    // 执行sql查询语句并返回结果集  resultset 表示数据库结果集的数据表,通常通过执行查询数据库的语句生成。
                    ResultSet rs = ps.executeQuery();
                    //Log.e("prx","结果集:" + rs);
                    if (rs != null){
                        //如果结果集不为空,先获取列的总数
                        int count = rs.getMetaData().getColumnCount();
                        Log.e("prx","列总数:" + count);
                        //int x=0;
                        // ResultSet对象保持一个光标指向其当前的数据行。 最初,光标位于第一行之前。 next方法将光标移动到下一行,
                        // 并且由于在ResultSet对象中没有更多行时返回false ,因此可以在while循环中使用循环来遍历结果集。
                        while (rs.next()){
                            // 注意:下标是从1开始的
                            for (int i = 1;i <= count;i++){
                                //获取数据表的列的名称
                                String field = rs.getMetaData().getColumnName(i);
                                //Log.e("esp","键:  "+field);
                                Log.e("prx","值:  "+rs.getString(field));
                                //通过键值来赋值给对应的ESP8266的元素
                                switch (field){
                                    case    "id":
                                        Device.id=rs.getInt(field);
                                    case    "app_id":
                                        Device.app_id=rs.getString(field);
                                        break;
                                    case    "device_id":
                                        Device.device_id=rs.getString(field);
                                        break;
                                    case    "remark":
                                        Device.remark=rs.getString(field);
                                        break;
                                    case "state":
                                        Device.state=rs.getString(field);
                                        break;
                                    case    "type":
                                        Device.type=rs.getString(field);
                                        break;
                                    case "time":
                                        Device.time=rs.getString(field);

                                        break;
                                        default:Device.data.put(field,rs.getString(field));

                                }
                       }
                            //把每个设备的保存到数组中
                            ESPlist.add(Device);
                            //注意每次都要重新实例化Device!!!
                            Device=new ESP8266();

                            
                            //Log.e("esp","x="+x+" DEVICE_id"+Device.getDevice_id());
                            //ESP8266 ESP=ESPlist.get(x);
                            //Log.e("esp",x+"  LIST_ID"+ESP.getDevice_id());
                            //x++;
                            //Log.e("ESP", String.valueOf(ESPlist.size()));
                            //x=x+1;
                            //Log.e("esp","list  "+x);
                        }

                        //关闭数据库连接
                        connection.close();
                        ps.close();
                        //ESP8266 ESP=ESPlist.get(3);
                        //Log.e("esp","LIST_ID"+ESP.getDevice_id());
                        return  ESPlist;
                    }else {
                        return null;
                    }
                }else {
                    return  null;
                }
            }else {
                return  null;
            }
        }catch (Exception e){
            e.printStackTrace();
            Log.e("prx","异常:" + e.getMessage());
            return null;
        }

    }

}

 

标签:String,4.18,数据库,private,connection,static,mysql
From: https://www.cnblogs.com/15132949hao/p/18144684

相关文章

  • 4.18日第一天冲刺
    晨会1.人员:袁兴兰、齐飞跃、王瑞2.会议讨论袁兴兰:1.今天打算完成寻找免费api,完成博客的整理齐飞跃:1.今天打算学习调用第三方库或第三方api王瑞:1.今天打算画出安卓前端页面2.遇到的问题:调用摄像头报错,版本不兼容3.任务看板4.合照......
  • 4.18第一次冲刺
    晨会1.人员:袁兴兰、齐飞跃、王瑞2.会议讨论袁兴兰:1.今天打算完成寻找免费api,完成博客的整理齐飞跃:1.今天打算学习调用第三方库或第三方api王瑞:1.今天打算画出安卓前端页面2.遇到的问题:调用摄像头报错,版本不兼容3.任务看板 4.合照 ......
  • 2024.04.18每日收获之联合体结构体内存分配
    今日学习组内前辈留下的代码,数码管动态扫描显示,发现前辈们用的是联合体定义扫描引脚,如:typedefunion{unsignedchara[2];typedefstruct{unsignedchardata0;unsignedchardata1;}data;}seg;此时数组a[2]和结构体里的data0和data1共用地址空间,修改数组或者data会产生相......
  • Node.Js 13.4.18 Docker 部署后无法访问
    将项目Next.js升级后,通过Docker部署无法访问到服务,通过dockerlogsid检查日志,发现没有任何反应,甚至一个访问请求都没看到。一开始怀疑是打包的问题,将Docker容器中的服务文件全部拉下来,在本地跑..诶嘿~正常运行...排除打包问题检查启动日志:readystartedserveron......
  • centos7.9 部署mongodb-4.4.18 分片集群
    准备基本环境名称ip地址cpu内存es监听端口redis-65110.0.2.18c64G9200redis-65210.0.2.28c64G9200redis-65310.0.2.38c64G9200......
  • xfce4.18 安装 orage [未成功]
    不知道为啥xfce不默认安装orage。按照官网https://docs.xfce.org/apps/orage/start#latest_release,记录安装过程。1,下载源码,https://mirror.netcologne.de/xfce/src/apps/orage/4.18/orage-4.18.0.tar.bz22,阅读README.md,检查依赖, configure:error:XWindowsystemlib......
  • 4.18
    所花时间(包括上课):4h代码量(行):200行博客量(篇):1篇晚上学习我了解到的知识点:今天我修复了昨天传参报错的问题,改善了页面乱码的问题,实现了功能流畅运行,完成了组长交给的任务遇到的问题,session传值问题,我不会多值传参,只会一个,不过好在可以改<%@pageimport="DAO.dao"%><%@pageim......
  • 2023年windows DockerDeskTop最新款4.18.0 全程保姆级安装
    目录前景提示windows10内置的linux系统1.这个内置系统一定要在windowsstore里安装,否则,无法使用,这是重点。进入商店,搜索linux。2.一般画圈这些都可以使用。4.安装会让你输入微软账户密码(首次)。5.静静等待,本作的这个大概550M左右。6.装好后,会生成一个图标(像应用程序一样,双击......
  • 4.18趣味百题12题
    一问题描述一个人拥有x现金要存y年(y年后取出)银行有几款不同的期限的月息利率超出初始存款的钱会给利息(与原题不同的拓展)求出利息最多的方案.月利息  期限0.63%  一年0.66%  两年0.69%  三年0.75%  五年0.84%  八年 二思路设计每种方案单独设计......
  • 2023.4.18
    1//例8.12#include<iostream>3usingnamespacestd;4classComplex5{6public:7Complex(doubler=0.0,doublei=0.0):real(r),image(i){}8Complexoperator+(constComplex&c2)const;9Complexoperator-(constComplex......