科室的下拉列表(mysql)

来源:互联网 发布:软件制作器 编辑:程序博客网 时间:2024/04/30 15:12

连接数据库(2)

上一篇我们建好了数据库,这篇来访问数据库。

数据库的链接 如何创建数据库

1、在工程里导入jdbc的驱动包

2、测试与AS的连接

这里可能会出现连不上问题,连接真机使用本地IP,连接模拟器使用10.0.2.2(在虚拟机的WIFI设置代理10.0.3.2)去访问。还有就是网上有人说sdk16以上可能会找不到jar包。

3、使用jdbc访问数据库

第一步,加载mysql数据库的驱动

Class.forName(“com.mysql.jdbc.Driver”);

第二步,与mysql建立连接,返回一个Connection对象

Connection connect = DriverManager.getConnection(“jdbc:mysql://本地IP:3306/Department_DataBase?useUnicode=true&characterEncoding=UTF-8”,”root”, “123456”);

这里传入你的IP,mysql的用户和密码,还有表名Department_DataBase

第三步,拿到Statement对象,它为一条Sql语句生成执行计划,就是用来执行sql语句的,然后会返回一个结果集给你去拿数据

Statement stmt = connect.createStatement();
ResultSet rs = stmt.executeQuery(“select * from BigDepartment”);

使用next()访问一行一行的数据,循环拿到一列的数据即可
rs.getString(1),这里的参数1代表第一列,依次类推,或者传入表里的列名也可以rs.getString(“DBID”);

public static List<String> queryBName(String name) {        ResultSet rs2 = null;        List<String>  myList = null;        // TODO Auto-generated method stub        try {            Class.forName("com.mysql.jdbc.Driver"); // 加载MYSQL JDBC驱动程序            // Class.forName("org.gjt.mm.mysql.Driver");            System.out.println("Success loadingMysql Driver!");        } catch (Exception e) {            System.out.print("Error loading Mysql Driver!");            e.printStackTrace();        }        try {            // Connection connect = DriverManager.getConnection(            // "jdbc:mysql://localhost:3306/test","root"," yourpassword");            Connection connect = DriverManager                    .getConnection(                            "jdbc:mysql://本地IP:3306/Department_DataBase?useUnicode=true&characterEncoding=UTF-8",                            "root", "123456");            // 连接URL为 jdbc:mysql//服务器地址/数据库名 ,后面的2个参数分别是你数据库的登录用户名和密码            System.out.println("Success connect Mysql server!");            Statement stmt = connect.createStatement();            Statement stmt2 = connect.createStatement();            // ResultSet rs = stmt.executeQuery("select * from BigDepartment");            String s = "select * from BigDepartment where DBigDepart =" + "'" + name                    + "'";            rs2 = stmt2.executeQuery(s);            ResultSet rs = null;            while (rs2.next()) {                System.out.print("你所查的大科为::" + rs2.getString(2));                System.out.print("    ");                System.out.print("所对应的大科ID " + rs2.getString(1));                System.out.print("    ");                System.out.println();                String bstr = rs2.getString(1);                String ss = "select * from Department where DBDID =" + "'"                        + bstr + "'";                rs = stmt.executeQuery(ss);            }            System.out.println();            System.out.println("您所选择的大科包括的下拉列表即科室为:");            System.out.println();            List<String> list = new ArrayList<>();            while (rs.next()) {//              System.out.println("您所选择的大科包括的下拉列表即科室为:" + rs.getString(2));                System.out.println(rs.getString(2));                list.add(rs.getString(2));            }            System.out.println(list + "22222");            myList = list;        } catch (Exception e) {            System.out.print("get data error!");            e.printStackTrace();        }        return myList;    }

第四步,将结果返回给下拉列表,更新数据,下拉列表我用的是网上写好的,链接分享给大家 网上的下拉列表控件分享
我给ViewLeft类添加了一个获取数据的方法

public void setItemData(List<String> list){        if(!items.isEmpty()){            items.clear();        }else{            for(int i = 0;i < list.size();i++){                items.add(i,list.get(i));            }        }//      items = list;    }

把获取到的数据设置给它,在子线程获取数据,在主线程中设置数据给ExpandTabView,添加到ViewLeft上。

bt.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                new Thread(new Runnable() {                    @Override                    public void run() {                        final String etstr= et.getText().toString();                        final List<String> str = queryBName(etstr);                        runOnUiThread(new Runnable() {                            @Override                            public void run() {                                viewLeft.setItemData(str);                            }                        });                        System.out.println(str+"wwwwwwwwww");                    }                }).start();                Toast.makeText(MyActivity.this,"数据查询完成,请点击下拉列表选择查看",Toast.LENGTH_LONG).show();            }        });

项目传送门

这里写图片描述
这里写图片描述
这里写图片描述