6 SQLite与ContentProvider
2016-06-13 15:41
351 查看
6 SQLite与ContentProvider
SQLite,是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如Tcl、C#、PHP、Java等,还有ODBC接口,同样比起Mysql、PostgreSQL这两款开源世界著名的数据库管理系统来讲,它的处理速度比他们都快。
SQlite的使用方法
1、 SQlite介绍
2、 SQliteOpenHelpe(抽象类,也叫助手类,对数据库的基本操作)
3、 使用Adb 访问SQlite(调试工具)
4、 增删改查功能的实现
1、 SQlite介绍
SQLite,是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如
Tcl、C#、PHP、Java等,还有ODBC接口,同样比起Mysql、PostgreSQL这两款开源世界著名的数据库管理系统来讲,它的处理速度比他们都快。
2、SQLiteOpenHelper (android.database.sqlite.SQLiteOpenHelper)
这是一个抽象类,关于抽象类我们都知道,如果要使用它,一定是继承它!
这个类的方法很少,有一个构造方法
(1)public DatabaseHelPer(Contextcontext, String name, CursorFactory factory,int
version)
(2)public void onCreate(SQLiteDatabase db)
此方法在创建数据库是被调用,所以,应该把创建表的操作放到这个方法里面.
(3)public void onUpgrade(SQLiteDatabase db, int oldVersion, intnewVersion)
从方法名上我们就能知道这个方法是执行更新的。
(4) SQLiteDatabase getReadableDatabase()
获取可读的SQLiteDatabase对象
(5) SQLiteDatabasegetWritableDatabase()
获取可写的SQLiteDatabase对象
3、Android提供了一个名为SQLiteDatabase的类,该类封装了一些操作数据库的API,使用该类可以完成对数据进行添加(Create)、查询(Retrieve)、更新(Update)和删除(Delete)操作(这些操作简称为CRUD)。
操作步骤
1、 建立工程文件SQliteActivity
2、 SQliteOpenHelpe为抽象类,如果要使用它必须要继承,所以再创建一个DatabaseHelPer.Java
public
class DatabaseHelPer extends SQLiteOpenHelper{
public DatabaseHelPer(Context context) {
super(context, “database_db”, factory, version);
// TODO Auto-generatedconstructor stub
}
@Override
public
void onCreate(SQLiteDatabase arg0) {
// TODO Auto-generatedmethod stub
System.out.println("Create a database");
arg0.execSQL("createtable name(id int,name varchar(20))");
}
@Override
public
void onUpgrade(SQLiteDatabase arg0, int arg1,
int arg2) {
// TODO Auto-generatedmethod stub
System.out.println("updata adatabase");
}
}
3、 修改布局文件 添加5个命令按钮实现 数据库的创建 数据库的更新 插入 更新 查询
<Button
android:id="@+id/createdatabase01"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Create Database"
/>
<Button
android:id="@+id/Updatadatabase01"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Updatada Database"
/>
<Button
android:id="@+id/insert01"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="insert"
/>
<Button
android:id="@+id/updata01"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="updata"
/>
<Button
android:id="@+id/query01"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="query"
/>
4、 编写程序将5个命令按钮分别绑定监听器
package mars.SQliteActivity;
importmars.SQlite.db.DatabaseHelPer;
import android.app.Activity;
importandroid.content.ContentValues;
importandroid.database.Cursor;
importandroid.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class SQliteActivityextends Activity {
private Button createdatabase;
private Button updatadatabase;
private Button insert;
private Button updata;
private Button query;
/** Called when the activity is firstcreated. */
@Override
public void onCreate(BundlesavedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//创建数据库对象
createdatabase=(Button)findViewById(R.id.createdatabase01);
createdatabase.setOnClickListener(newView.OnClickListener() {
public void onClick(View arg0) {
// TODO Auto-generated method stub
DatabaseHelPer dbherper=new DatabaseHelPer(SQliteActivity.this,"todo_db",null,1);
SQLiteDatabase db=dbherper.getReadableDatabase();
}
});
//更新数据库对象
updatadatabase=(Button)findViewById(R.id.Updatadatabase01);
updatadatabase.setOnClickListener(newView.OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
DatabaseHelPer dbherper=newDatabaseHelPer(SQliteActivity.this,"todo_db",null,2);
SQLiteDatabase db=dbherper.getReadableDatabase();
}
});
//插入数据
insert=(Button)findViewById(R.id.insert01);
insert.setOnClickListener(newView.OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
System.out.println("insert a record");
//生成一个ContentValues对象,以键值对的形式处理,建是列名
ContentValues values=new ContentValues();
values.put("id", 2);
values.put("name", "zhangsan");
DatabaseHelPer dbherper=new DatabaseHelPer(SQliteActivity.this,"todo_db",null,2);
SQLiteDatabase db=dbherper.getWritableDatabase();
//第一个参数是表名,第二个参数默认,第三个参数是键值
db.insert("user", null, values);
}
});
//更新数据库对象
updata=(Button)findViewById(R.id.updata01);
updata.setOnClickListener(newView.OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
System.out.println("updata a record");
ContentValues values=new ContentValues();
values.put("name", "zhangsanfeng");
DatabaseHelPer dbherper=newDatabaseHelPer(SQliteActivity.this,"todo_db",null,2);
SQLiteDatabase db=dbherper.getWritableDatabase();
//第一个参数是要更新的表名,第二个参数是一个ContentValues对象,第三个参数是where子句,第四个参数是占位符(用占位符代表未知数)
db.update("user", values, "id=?",new String[]{"1"});
}
});
//查询操作
query=(Button)findViewById(R.id.query01);
query.setOnClickListener(newView.OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
DatabaseHelPer dbherper=newDatabaseHelPer(SQliteActivity.this,"todo_db",null,2);
SQLiteDatabase db=dbherper.getReadableDatabase();
//
Cursor cursor = db.query("user", newString[]{"id,name"}, "id=?", new String[]{"1"},null, null, null, null);
while (cursor.moveToNext()) {
int id =cursor.getInt(0); //获取第一列的值,第一列的索引从0开始
Stringname = cursor.getString(1);//获取第二列的值
System.out.println(id+name);
}
}
});
}
}
Sqlite案例
第一步创建数据库
l SQLiteOpenHelper
步骤1、创建工程文件DB
步骤2、开发业务层
DbOpenHelperextends SQLiteOpenHelper
packageservice.db;
importandroid.content.Context;
importandroid.database.sqlite.SQLiteDatabase;
importandroid.database.sqlite.SQLiteDatabase.CursorFactory;
importandroid.database.sqlite.SQLiteOpenHelper;
publicclass DbOpenHelper extends SQLiteOpenHelper {
private static final String DATABASENAME="mydb.mdb";
private static final int DATABASEVERSION=1;
publicDbOpenHelper(Context context, String name, CursorFactory factory,
intversion) {
super(context,DATABASENAME, null, DATABASEVERSION);
// TODOAuto-generated constructor stub
}
@Override
//初次创建数据库的时候会调用此方法,一般将创建数据表放在此处
public voidonCreate(SQLiteDatabase arg0) {
// TODO Auto-generatedmethod stub
arg0.execSQL("createtable t_student (sid integer primy key antoincrement,sname varchar(20))");
}
@Override
public voidonUpgrade(SQLiteDatabase arg0, int arg1, int arg2) {
// TODOAuto-generated method stub
}
}
步骤3:实现数据库的创建,编写控制层代码
packagemars.db;
importservice.db.DbOpenHelper;
importandroid.app.Activity;
importandroid.os.Bundle;
publicclass DbActivity extends Activity {
private DbOpenHelperdbopenhelper;
/** Called when the activity is firstcreated. */
@Override
public void onCreate(BundlesavedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
dbopenhelper=newDbOpenHelper(this.getBaseContext(), null, null, 0);
dbopenhelper.getWritableDatabase();
}
}
步骤4:编写代码完成填删改查功能,创建一个业务类来实现 studentservice
步骤5:创建一个student,进行数据表的整体传送
package doman.db;
public
class student {
private Integer
sid;
private String
sname;
public Integer getSid() {
return
sid;
}
public
void setSid(Integer sid) {
this.sid = sid;
}
public String getSname() {
return
sname;
}
public
void setSname(String sname) {
this.sname = sname;
}
}
步骤6:创建业务类实现数据的增删该查等功能
package service.db;
import doman.db.student;
public
class studentservice {
public
void save(student student){
}
public
void updata(student student){
}
public
void delete(student student){
}
public student find (int sid){
return
null;
}
public
long getcount(){
return 0;
}
}
相关文章推荐
- 问题-FireDAC连接Sqlite3提示“unable to open database file”
- ORA-12514 TNS 监听程序当前无法识别连接描述符中请求服务 的解决方法
- oracle 11g 安装以及工具PLsql developer配置
- mysql error 1290 hy000:The MySQL server is running with the --skip-grant-tables option so it cannot execute this statemen' 解决方案
- 设置PL/SQL Developer自动提交事务
- mysql性能调优和架构设计读书笔记
- 4000 PLSQL Developer建表时注释(COMMENT)中文乱码的解决方案(Windows)
- mac 配置openfile+ MySQL搭建即时聊天服务器
- 运维角度浅谈MySQL数据库优化
- golang 远程连接mssql 2000
- Mysql+IIS+三层架构创建网站遇到的过程总结
- 使用MHA对mysql主从架构中的主节点做高可用
- Listview(黑名单)&sqlite(sql+api SqliteDataBase SqltieOpenHelper)
- hadoop操作mysql
- Hadoop Hive sql语法详解
- 使用PL/SQL Developer 登陆 oracle 11g 64位数据库
- mysql主从同步失败Last_IO_Error: Got fatal error 1236 from master解决方法
- ERROR 1010 (HY000): Error dropping database (can't rmdir '.\qpweb', errno: 41) MySQL删库失败问题的解决
- PL/SQL Developer 如何显示行号
- <Hadoop>Hive(Mysql) 安装