1. android数据库存储方案:
SharedPreferences: 属性文件 应用程序配置,数据库联接参数配置
数据库(SQLite): 数据库文件 存相对较为复杂数据
Content Provider: 内容提供者 接口(联系人等)
文件: 普通文件 txt,avi,....
2. 数据库概述:
SQLite, 轻量级的嵌入式数据库.
SQLite数据库文件存储位置: /data/data/包名(com.icss)/数据库文件名.db3
数据类型: NULL, Integer, real, text,blob
3. 重要的类:
SQLiteDataBase: sqlite的数据库操作类
第一步创建SQLiteDataBase:
SQLiteDataBase db=SQLiteDatabase.openOrCreateDatabase("数据库名",权限,游标工厂);
第二步创建表:
sql="create table 表名(_id integer primary key autoincrement,列名 类型)";
db.execSQL(sql);
注意: 主键列的列名必须为_id
4. SQLiteDatabase对象常用的方法
execSQL(sql语句); //执行sql指令(增删改建表索引约束触发器)
Cursor rawQuery(sql语句, 条件语句); //执行查询
Cursor对象操作最重要的方法:
MoveToNext(); //让游标向下运动一条记录
//如果有下一条记录,则返回true, 否则false
getString("列名");
5. ListView 组件
(1)在主界面里面加入一个ListView控件
(2)增加一个布局文件,这个文件用来控制每一项的外观 item.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal">
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="30dp"
android:text="TextView" />
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="30dp"
android:text="TextView" />
</LinearLayout>
(3)编码:
SimpleCursorAdapter adapter=new SimpleCursorAdapter
上下文 每一项的布局 游标 表的字段名 布局文件中的显示组件的id
(Main.this, R.layout.item, c, new String[]{"_id","uname"}, new int[]{R.id.textView1,R.id.textView2} );
//让listView1绑定一个适配器 SimpleCursorAdapter
ListView lv=(ListView)Main.this.findViewById(R.id.listView1);
lv.setAdapter(adapter);
6. SQLiteOpenHelper: 数据库操作帮助类, 根据程序版本来更新数据库,
onCreate():
onUpdate():
getWritableDatabase():取出可写的数据库对象
getReadableDatabase(): 取出只读的数据库对象
7. 封装类:
public class DataBaseOpenHelper extends SQLiteOpenHelper {
private static final String DBNAME="数据库名.db3";
private static final int VERSION=1;
public DataBaseOpenHelper(Context context, String name,
CursorFactory factory, int version) {
super(context, name, null, version);
}
public DataBaseOpenHelper(Context context) {
this(context,DBNAME,null,VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("建表,索引,视图,触发器等的语句");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("drop table if exists 表名");
onCreate(db);
}
}