您的位置:首页 > 数据库 > SQL

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;

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: