Android Sqlite
来源:互联网 发布:九章算法 系统设计 编辑:程序博客网 时间:2024/06/01 08:03
Android内建了开放源码的嵌入式数据库引擎SQLite
1.创建数据库 openOrCreateDatabase()
Context.MODE_PRIVATE,//创建数据库文件的模式,表示仅供自已使用的数据库
null);//返回查询结果类,一般为空
openOrCreateDatabase()执行成功,会返回代表数据库的SQLiteDatabase对象
2.创建表CREATE TABLE
String createTable = "CREATE TABLE IF NOT EXISTS "+
tb_name + //数据表名
"(_id INTEGER PRIMARY KEY AUTOINCREMENT," +
"name VARCHAR(32)," +
"phone VARCHAR(16)," +
"email VARCHAR(64))";
db.execSQL(createTable);//执行语句创建表
3.插入数据insert()
创建表后,可使用insert()方法新增数据,配合ContentValues对象使用
insertData("张三","13526697845","zs@126.com");
private void insertData(String name, String phone, String email){
ContentValues cv = new ContentValues(3); //创建含3个字段的ContentValues对象
cv.put("name",name);//新增的数据put()方法存到ContentValues对象中
cv.put("phone",phone);
cv.put("email",email);
db.insert(tb_name,null, cv);//将内容写入表,并新增一个记录
}
4.查询数据rawQuery()
用select语句进行数据查询
使用Cursor对象获取查询结果
rawQuery("SELECT * FROM tb_name",null);//返回tb_name数据表的所有记录
第一个参数为SELECT语句,第二个参数为null
rawQuery()返回的查询结果为Cursor类的对象.
moveToFirst()移到第一个记录
moveToLast()移到最后一个记录
moveToNext()移到下一个记录
moveToPrevious()移到前一个记录
Cursor cr = db.rawQuery("SELECT * FROM "+tb_name, null); //执行查询
if(cr.moveToFirst()){//移到第1项数据,若有数据才继续
String str="总共有"+cr.getCount()+"项数据\n"; //getCount()方法,返回值就是数据个数,若返回0,则表示没有数据
do{
str +="name:"+cr.getString(1)+"\n";//读取name,0为id,从1开始获取
str +="phone:"+cr.getString(2)+"\n";
str +="email:"+cr.getString(3)+"\n";
}while(cr.moveToNext());//有下一项就继续循环
Log.i("db",str);
}
cr.getDouble(索引) //读取Double数据
cr.getFloat()
cr.getInt()
cr.getLong()
cr.getShort()
cr.getString()
若想用字段名读取数据,须先用getColumnIndex()方法获取字段索引
cr.getString(getColumnIndex("name"));
5.修改数据db.update
private void updateData(String name, String phone, String email, int id){
ContentValues cv = new ContentValues(3);
cv.put("name",name);
cv.put("phone",phone);
cv.put("email",email);
db.update(tb_name,cv,"_id="+id,null);
}
db.update(tb_name,cv,"_id="+id,null);
参数1:要更新的数据表
参数2:内含新数据的ContentValues对象
参数3:更新的条件
参数4:为null
6.删除问题
db.delete(tb_name, "_id="+2,null);
参数1:要删除的表名
参数2:条件,指定删除哪条记录
参数3:null
把Cursor对象作为数据源
1)新建布局xml
<TextView
android:id="@+id/name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="TextView" />
<TextView
android:id="@+id/phone"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="TextView" />
<TextView
android:id="@+id/email"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="TextView" />
2) SimpleCursorAdapter
Cursor c = db.rawQuery("SELECT * FROM "+tb_name,
null);
SimpleCursorAdapter adapter = new SimpleCursorAdapter(
MainActivity.this,
R.layout.layout, //显示每个数据项所用的布局
c,//以Cursor对象为数据源
new String[]{"name","phone","email"},//Cursor中字段名数组
new int[] {R.id.name, R.id.phone, R.id.email},//layout中组件ID数组
0);//Adapter运行模式
lv.setAdapter(adapter);
1.创建数据库 openOrCreateDatabase()
创建及打开数据库,若数据库不存在,则会先创建再打开
SQLiteDatabase db; //数据库对象
db = openOrCreateDatabase(db_name, //数据库名称Context.MODE_PRIVATE,//创建数据库文件的模式,表示仅供自已使用的数据库
null);//返回查询结果类,一般为空
openOrCreateDatabase()执行成功,会返回代表数据库的SQLiteDatabase对象
2.创建表CREATE TABLE
String createTable = "CREATE TABLE IF NOT EXISTS "+
tb_name + //数据表名
"(_id INTEGER PRIMARY KEY AUTOINCREMENT," +
"name VARCHAR(32)," +
"phone VARCHAR(16)," +
"email VARCHAR(64))";
db.execSQL(createTable);//执行语句创建表
3.插入数据insert()
创建表后,可使用insert()方法新增数据,配合ContentValues对象使用
insertData("张三","13526697845","zs@126.com");
private void insertData(String name, String phone, String email){
ContentValues cv = new ContentValues(3); //创建含3个字段的ContentValues对象
cv.put("name",name);//新增的数据put()方法存到ContentValues对象中
cv.put("phone",phone);
cv.put("email",email);
db.insert(tb_name,null, cv);//将内容写入表,并新增一个记录
}
4.查询数据rawQuery()
用select语句进行数据查询
使用Cursor对象获取查询结果
rawQuery("SELECT * FROM tb_name",null);//返回tb_name数据表的所有记录
第一个参数为SELECT语句,第二个参数为null
rawQuery()返回的查询结果为Cursor类的对象.
moveToFirst()移到第一个记录
moveToLast()移到最后一个记录
moveToNext()移到下一个记录
moveToPrevious()移到前一个记录
Cursor cr = db.rawQuery("SELECT * FROM "+tb_name, null); //执行查询
if(cr.moveToFirst()){//移到第1项数据,若有数据才继续
String str="总共有"+cr.getCount()+"项数据\n"; //getCount()方法,返回值就是数据个数,若返回0,则表示没有数据
do{
str +="name:"+cr.getString(1)+"\n";//读取name,0为id,从1开始获取
str +="phone:"+cr.getString(2)+"\n";
str +="email:"+cr.getString(3)+"\n";
}while(cr.moveToNext());//有下一项就继续循环
Log.i("db",str);
}
cr.getDouble(索引) //读取Double数据
cr.getFloat()
cr.getInt()
cr.getLong()
cr.getShort()
cr.getString()
若想用字段名读取数据,须先用getColumnIndex()方法获取字段索引
cr.getString(getColumnIndex("name"));
5.修改数据db.update
private void updateData(String name, String phone, String email, int id){
ContentValues cv = new ContentValues(3);
cv.put("name",name);
cv.put("phone",phone);
cv.put("email",email);
db.update(tb_name,cv,"_id="+id,null);
}
db.update(tb_name,cv,"_id="+id,null);
参数1:要更新的数据表
参数2:内含新数据的ContentValues对象
参数3:更新的条件
参数4:为null
6.删除问题
db.delete(tb_name, "_id="+2,null);
参数1:要删除的表名
参数2:条件,指定删除哪条记录
参数3:null
-----------------------------------------------------------------------------------
public class MainActivity extends AppCompatActivity { static final String db_name="StudentDB"; static final String tb_name="student"; SQLiteDatabase db; //数据库对象 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //1)打开或创建数据库 db = openOrCreateDatabase(db_name, Context.MODE_PRIVATE, null); //2)创建表 String createTable = "CREATE TABLE IF NOT EXISTS "+ tb_name + "(_id INTEGER PRIMARY KEY AUTOINCREMENT," + "name VARCHAR(32)," + "phone VARCHAR(16)," + "email VARCHAR(64))"; db.execSQL(createTable); //3)用insert()方法和ContentValues对象新增数据 insertData("张三","13526697845","zs@126.com"); insertData("李四","13526648945","lishi@126.com"); insertData("王五","13526692685","wangwu@126.com"); //4)查询数据Cursor rawQuery() queryData(); //5)修改数据db.update(); updateData("张三","123","zs@136.com",1); queryData(); //6)删除 db.delete(tb_name, "_id="+2,null); queryData(); //7)关闭数据库 db.close(); } private void insertData(String name, String phone, String email){ ContentValues cv = new ContentValues(3); cv.put("name",name); cv.put("phone",phone); cv.put("email",email); db.insert(tb_name,null, cv); } private void updateData(String name, String phone, String email, int id){ ContentValues cv = new ContentValues(3); cv.put("name",name); cv.put("phone",phone); cv.put("email",email); db.update(tb_name,cv,"_id="+id,null); } private void queryData(){ Cursor cr = db.rawQuery("SELECT * FROM "+tb_name, null); if(cr.moveToFirst()){//移到第1项数据,若有数据才继续 String str="总共有"+cr.getCount()+"项数据\n"; do{ str +="name:"+cr.getString(1)+"\n"; str +="phone:"+cr.getString(2)+"\n"; str +="email:"+cr.getString(3)+"\n"; }while(cr.moveToNext());//有下一项就继续循环 Log.i("db",str); } }}------------------------------------------------------------------------com.xxx.sqlitetest I/db: 总共有3项数据 name:张三 phone:13526697845 email:zs@126.com name:李四 phone:13526648945 email:lishi@126.com name:王五 phone:13526692685com.xxx.sqlitetest I/db: 总共有3项数据 name:张三 phone:123 email:zs@136.com //数据已被修改 name:李四 phone:13526648945 email:lishi@126.com name:王五 phone:13526692685 email:wangwu@126.comcom.xxx.sqlitetest I/db: 总共有2项数据 name:张三 phone:123 email:zs@136.com//第2条记录已被删除 name:王五 phone:13526692685 email:wangwu@126.com7.使用SimpleCursorAdapter显示数据库中的数据
把Cursor对象作为数据源
1)新建布局xml
<TextView
android:id="@+id/name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="TextView" />
<TextView
android:id="@+id/phone"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="TextView" />
<TextView
android:id="@+id/email"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="TextView" />
2) SimpleCursorAdapter
Cursor c = db.rawQuery("SELECT * FROM "+tb_name,
null);
SimpleCursorAdapter adapter = new SimpleCursorAdapter(
MainActivity.this,
R.layout.layout, //显示每个数据项所用的布局
c,//以Cursor对象为数据源
new String[]{"name","phone","email"},//Cursor中字段名数组
new int[] {R.id.name, R.id.phone, R.id.email},//layout中组件ID数组
0);//Adapter运行模式
lv.setAdapter(adapter);
阅读全文
0 0
- 【Android】【Sqlite】sqlite 相关
- android sqlite
- Android SQLite
- android---SQLite
- android sqlite
- android sqlite
- Android SQLite
- Android SQLite
- Android SQLite
- SQLite Android
- Android SQLite
- android sqlite
- Android SQLite
- Android SQLite
- android sqlite
- android:SQlite
- android sqlite
- Android SQLite
- phpcms访问顶级栏目,自动跳到第一个子栏目
- 数据结构上机实践第14周项目1
- csdn测试
- const "金钟罩"的用法
- Sobel算子的理解
- Android Sqlite
- 试验三
- 宝塔上运用它给的 重启和关闭 tomcat的方式 不管用解决办法
- iview中select过滤模式选中内容与显示内容不符合
- Android Studio3.0升级遇到的坑
- 主成份分析图解
- new和delte的使用浅析
- 欢迎使用CSDN-markdown编辑器
- 数据结构第四周项目-单链表算法