第一阶段个人冲刺博客第九天

本文介绍在Android平台上,如何使用SQLite数据库查询空教室信息。通过在模拟器上运行,成功实现了空教室的查询功能。代码展示了如何检查数据库存在,如果不存在则创建,并从assets复制到指定目录,然后进行数据查询。
摘要由CSDN通过智能技术生成

今天将数据库连接成功,并在模拟器上成功实现了空教室查询功能,下面附上代码和截图。

private View.OnClickListener SearchFloorListener=new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            GetDATA();
        }
    };
    public void GetDATA()
    {
        // com.test.db 是程序的包名,请根据自己的程序调整
        // /data/data/com.test.db/
        // databases 目录是准备放 SQLite 数据库的地方,也是 Android 程序默认的数据库存储目录
        // 数据库名为 test.db
        String DB_PATH = "/data/data/com.example.superman.test/databases/";
        String DB_NAME = "course.db";

        // 检查 SQLite 数据库文件是否存在
        if ((new File(DB_PATH + DB_NAME)).exists() == false) {
            // 如 SQLite 数据库文件不存在,再检查一下 database 目录是否存在
            File f = new File(DB_PATH);
            // 如 database 目录不存在,新建该目录
            if (!f.exists()) {
                f.mkdir();
            }

            try {
                // 得到 assets 目录下我们实现准备好的 SQLite 数据库作为输入流
                //InputStream is = getBaseContext().getAssets().open(DB_NAME);

                InputStream is = getBaseContext().getResources().openRawResource(R.raw.course);
                // 输出流
                OutputStream os = new FileOutputStream(DB_PATH + DB_NAME);

                // 文件写入
                byte[] buffer = new byte[1024];
                int length;
                while ((length = is.read(buffer)) > 0) {
                    os.write(buffer, 0, length);
                }

                // 关闭文件流
                os.flush();
                os.close();
                is.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        test(DB_PATH,DB_NAME);
    }
    public void test(String DB_PATH,String DB_NAME)
    {
        // 下面测试 /data/data/com.test.db/databases/ 下的数据库是否能正常工作
        SQLiteDatabase database = SQLiteDatabase.openOrCreateDatabase(DB_PATH + DB_NAME, null);
        Cursor cursor = database.rawQuery("select * from course where teacher='基教'", null);
        ArrayList<JavaBean> list=new ArrayList<JavaBean>();
        if(cursor.moveToFirst())
        {
            do{
                String name=cursor.getString(cursor.getColumnIndex("name"));
                String teacher=cursor.getString(cursor.getColumnIndex("teacher"));
                double price=cursor.getDouble(cursor.getColumnIndex("price"));
                list.add(new JavaBean(name,teacher,price));
            }while (cursor.moveToNext());
        }
//        if (cursor.getCount() > 0) {
//            cursor.moveToFirst();
//            try {
//                // 解决中文乱码问题
//                byte test[] = cursor.getBlob(0);
//                String strtest = new String(test, "utf-8").trim();
//                // 看输出的信息是否正确
//                Log.d("是否能够查找到本地数据库的信息",strtest);
//                System.out.println(strtest);
//            } catch (UnsupportedEncodingException e) {
//                // TODO Auto-generated catch block
//                e.printStackTrace();
//            }
//        }
        cursor.close();

        ArrayList<String> arrayList=new ArrayList<String>();
        String string=null;
        for(int i=0;i<list.size();i++)
        {
            string=list.get(i).getName()+"-"+list.get(i).getTeacher()+"-"+list.get(i).getPrice();
            arrayList.add(string);
        }
        tableLayout=findViewById(R.id.BuildingTable);

        //清除表格所有行
        tableLayout.removeAllViews();
        //全部列自动填充空白处
        tableLayout.setStretchAllColumns(true);
        for(int i=0;i<arrayList.size();i++)
        {
            TableRow tableRow=new TableRow(this);
            //tv用于显示
            TextView tv=new TextView(this);
            tv.setHeight(300);
            tv.setText(arrayList.get(i).toString());
            tableRow.addView(tv);
            tableLayout.addView(tableRow, new TableLayout.LayoutParams(MP, WC,1));

        }
    }

}

  

转载于:https://www.cnblogs.com/cuijunfeng/p/10939986.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值