Android基础第三天

Android下SQLite数据库

在Android下,提供了SQLiteOpenHelper抽象类

它返回的数据库类是SQLiteDatabase的一个实例,可以直接进行sql语句的操作

SQLite数据库 无类型typelessness,可以保存任何类型的数据到你所想要保存的任何表的任何列中

但是又支持常见的类型比如:NULL,VARCHAR,TEXT,INTEGER,BLOB,CLOB等

唯一的例外:integer primary key 此字段只能存储64位整数

        

1.使用SQLiteDatabase操作SQLite数据库

1)使用sql语句

                   execSQL()         --用于执行insert,delete,update等有更改行为的sql语句

                   rawQuery()        --用于执行select语句

2)不使用sql语句

                   SQLiteDatabase还提供了 insert() delete() update() query()四种方法

                  

2. 分赃案例(事务)

         update person set balance = balance + 100 where name = "zhangsan";

         update person set balance = balance - 100 where name = "zhangsan";

        

         alter table person add balance integer;

        

         SQLite数据库-->事务transaction

         try{

                   db.beginTransaction();

                   //code...

                   db.GetTransactionSuccessful();

         } finally{

                   db.endTransaction();

         }

         开启事务            --db.beginTransaction()

         标记事务成功    --db.GetTransactionSuccessful()

         停止事务            --db.endTransaction()

        

3. adb shell下 sqlite3的使用

         adb shell

         cd /data/data/包名

         cd databases

         sqlite3 itheima28.db

        

         写sql要加 ;

         .mode column

        

         退出sqlite .exit

         退出adb shell  exit

        

        

4. 展示列表的控件 ListView

        

         Javaweb里面有分层的概念

         MVC

         model       数据模型  

         view          视图

         controller  控制器(把model层的数据绑定到view层上去)--适配器Adapter

        

5. 使用ListView和Adapter 将数据库中的内容显示到ListView控件上

         1)   // 把View层对象ListView和控制器BaseAdapter关联起来

		mListView.setAdapter(new MyAdapter());
		
		class MyAdapter extends BaseAdapter {
		
			//定义ListView的数据的长度
			@Override
			public int getCount() {
				return personList.size();
			}
			//返回ListView列表中某一行的View对象
			@Override
			public View getView(int position, View convertView, ViewGroup parent) {
				TextView tv = null;
				if (convertView != null) { // 判断缓存对象是否为null, 不为null时已经缓存了对象
					Log.i(TAG, "getView: 复用缓存" + position);
					tv = (TextView) convertView;
				} else { // 等于null, 说明第一次显示, 新创建
					Log.i(TAG, "getView: 新建" + position);
					tv = new TextView(MainActivity.this);
				}
				tv.setTextSize(25);
				Person person = personList.get(position); // 获得指定位置的数据,
				// 进行对TextView的绑定
				tv.setText(person.toString());
				return tv;
			}
		}	


 

         2)与方法1不同  -- 在/res/layout下建立listview_item.xml文件 --指定View显示的格式

                                               -- 重写public View getView()方法 --采用布局填充器inflater

			@Override
			public View getView(int position, View convertView, ViewGroup parent) {
				View view = null;
				if(convertView == null) {
					// 布局填充器对象, 用于把xml布局转换成view对象
					LayoutInflater inflater = MainActivity.this.getLayoutInflater();
					view = inflater.inflate(R.layout.listview_item, null);
				} else {
					view = convertView;
				}
				// 给view中的姓名和年龄赋值
				TextView tvName = (TextView) view.findViewById(R.id.tv_listview_item_name);
				TextView tvAge = (TextView) view.findViewById(R.id.tv_listview_item_age);
				
				Person person = personList.get(position);
				
				tvName.setText("姓名: " + person.getName());
				tvAge.setText("年龄: " + person.getAge());
				return view;
			}


 

6.      BaseAdapter -->public abstract class BaseAdapter implements ListAdapter

                   |--ArrayAdapter

                   |--SimpleAdapter

                   |--MyAdapter -->我们自定义的Adapter

         1)ArrayAdapter 类似于4的方法1

String[] textArray = {"功能1","功能2","功能3","功能4","功能5","功能6","功能7","功能8"};
ArrayAdapter<String> adapter = new ArrayAdapter<String>(
	this, 									//上下文
	android.R.layout.simple_list_item_1, 	//Listview的子条目显示的布局的id,android提供的
	textArray								//显示在ListView列表中的数据
);


 

         2)SimpleAdapter 类似于4的方法2

                   -- 在/res/layout下建立listview_item.xml文件 --指定View显示的格式

List<Map<String, Object>> data = new ArrayList<Map<String,Object>>();
Map<String, Object> map = new HashMap<String, Object>();
		map.put("name", "张三1");
		map.put("icon", R.drawable.f007);
		data.add(map);
		
SimpleAdapter adapter = new SimpleAdapter(
		this, // 上下文
		data, // listView绑定的数据
                  list<map<String,?>>  R.layout.listview_item,// listview的子条目的布局的id
                  new String[]{"name", "icon"},// data数据中的map集合里的key
                  new int[]{R.id.tv_name, R.id.iv_icon}// resource 中的id
);


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值