6 SQLite与ContentProvider

6 SQLiteContentProvider

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)

       这是一个抽象类,关于抽象类我们都知道,如果要使用它,一定是继承它!

       这个类的方法很少,有一个构造方法

1public 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案例

第一步创建数据库

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;

   

}

 

 

}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值