zoukankan      html  css  js  c++  java
  • Android基础3(数据库创建、增删改查、事务、listView)

    # 1 Android下数据库创建

    * mysql、sqlserver2000、2003、2008、oracle * access 实际是一个文件、sqlite类似。

    * File File = new File(info.txt);

    * FileOutPutStream fos = FileOutPutStream(file);

    * extends Thread

    * extends  SqliteOpenHelper

    # 2 Android下数据库的增删改查

    * 利用sql语句实现增删改查,sql语句非常容易写错

    * 可以进行多表查询

    # 3.Android下另外一种增删改查方式

    * 不用写sql语句,不能进行多表查询

    * helper.getReadableDatabase();   //没有加锁   

    public SQLiteDatabase getReadableDatabase()

    {     

      synchronized (this)

      {    

        return getDatabaseLocked(false);   

          }         

    }

    * helper.getWritableDatabase();   // 加锁了

            public SQLiteDatabase getWritableDatabase() { 

        synchronized (this) {   

        return getDatabaseLocked(true);        

                   }       

          }

    # 4 数据库的事务 

    什么是事务:要么同时成功,要么同时失败

    * 事务:银行转账

     //1.在业务逻辑开始的时候开启事务 

     db.beginTransaction();

    try

    //写我们的转账逻辑 

    db.execSQL("update info set money=money-200 where name=?", new Object[]{"AA"}); 

    int i =1/0;      

    db.execSQL("update info set money=money+200 where name=?", new Object[]{"BB"});

     //设置一个成功的标记,业务逻辑结束的时候告诉系统数据库提交成功       

    db.setTransactionSuccessful();     

    }catch (Exception e) {    

    // TODO: handle exception      

    e.printStackTrace();      

    Toast.makeText(getApplicationContext(), "服务器忙 请稍后在转", 1).show();      

      }     

    finally {        

      // 必须关闭事务 ,告诉数据库系统结束.      

    //防止Sqlite被挂掉。       

    db.endTransaction();

      }

      -----------------------------------------------------------

    # 5 listview 入门 (非常非常重要)

    * 1 在布局中定义一个listview

    * 2 listview 显示需要一个适配器   

    * 3 自定义了一个适配器  MyAdapter extends BaseAdapter

    * 4 必须要实现 getCount()和  getView()

    # 6listview 优化(类似于买东西的托)

    *    if (convertView == null) {    

       // 创建一个新的对象     

      tvTextView = new TextView(getApplicationContext());     

      System.out.println("创建新的对象 "+position);            

        }else

      {    

       // convertView 不为空     

      tvTextView = (TextView) convertView;   

       System.out.println("复用历史缓存对象"+position);   

          }

    # 7 复杂listview界面显示 (重要)

    * getview()通过打气筒把一个布局文件转换为一个view 对象,返回给getview方法    

    # 9 arrayadapter  

     lv.setAdapter(new ArrayAdapter<String>(getApplicationContext(), R.layout.item, R.id.tv, objects));

    # 10 simpleadapter 

    # 11常用获取inflate的写法

     市面上常见获取打气筒的方法

     1  把一个布局文件转换为一个view    

      view = View.inflate(getApplicationContext(), R.layout.item, null);     

        2把一个布局文件转换为一个view     

      LayoutInflater inflater = LayoutInflater.from(getApplicationContext());     

      view = inflater.inflate(R.layout.item, null);        

       3 把一个布局文件转换为一个view         

       LayoutInflater inflater  = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE);    

      view = inflater.inflate(R.layout.item, null);

    # 12 数据库的listview的界面显示(重要)

    * 1 先写查询所有内容的业务方法

    * 2 把查询出来的数据 显示到listview上

    ------------------------------------------------------

    # 13 国际化

    在res目录下创建对应国家语言集的目录

    # 样式和主题 theme css   div calss  Id

    * 共同点 定义的方式是相同的

    * 不同点 

    * 样式的作用范围比较窄,主要作用在控件上(textView Button )

    * 主题的作用范围比较大(Activity  整个应用)

    # 对话框

  • 相关阅读:
    狡猾的商人
    差分约束系统
    【模板】负环
    关于Java8的精心总结
    rabbitmq+sleuth+zinkip 分布式链路追踪
    Linux下一只五颜六色的「猫」
    整理 Linux下列出目录内容的命令
    从封装变化的角度看设计模式——组件协作
    从封装变化的角度看设计模式——接口隔离
    从封装变化的角度看设计模式——对象创建
  • 原文地址:https://www.cnblogs.com/kingqinwang/p/5108791.html
Copyright © 2011-2022 走看看