当前位置:首页 > Android > 正文内容

Android--SQLite(增,删,改,查)操作

jsc11年前 (2014-08-27)Android3308

            需要5个类:

1.实体类:Person.java

2.抽象类:SQLOperate.java(封装了对数据库的操作)

3.助手类:DBOpenHelper.java(继承SQLiteOpenHelper)

4.实现类:SQLOperateImpl.java(实现抽象类SQLOperate.java)

5.测试类:Test.java(继承AndroidTestCase)

 

 

 

1.Person.java

package com.mrzhu.sqltite;  
  
public class Person {  
      
    private int _id;  
    private String name;  
      
    public int getId() {  
        return _id;  
    }  
      
    public void setId(int _id) {  
        this._id = _id;  
    }  
      
    public String getName() {  
        return name;  
    }  
      
    public void setName(String name) {  
        this.name = name;  
    }  
      
    @Override  
    public String toString() {  
        return "Person [id=" + _id + ", name=" + name + "]";  
    }  
      
    public Person() {  
        super();  
    }  
      
    public Person(int _id, String name) {  
        super();  
        this._id = _id;  
        this.name = name;  
    }  
}

2.SQLOperate.java

package com.mrzhu.sqltite;  
  
import java.util.List;  
  
/**  
 * 增删改查  
 * @author ZLQ  
 *  
 */  
public interface SQLOperate {  
    public void add(Person p);  
    public void delete(int id);  
    public void updata(Person p);  
    public List<Person> find();  
    public Person findById(int id);  
}


3.DBOpenHelper.java

 

package com.mrzhu.sqltite;  
  
import android.content.Context;  
import android.database.sqlite.SQLiteDatabase;  
import android.database.sqlite.SQLiteOpenHelper;  
  
/**  
 * 助手类  
 * @author ZLQ  
 *  
 */  
public class DBOpneHelper extends SQLiteOpenHelper {  
  
    private static final int VERSION = 1;//版本  
    private static final String DB_NAME = "people.db";//数据库名  
    public static final String STUDENT_TABLE = "student";//表名  
    public static final String _ID = "_id";//表中的列名  
    public static final String NAME = "name";//表中的列名  
    //创建数据库语句,STUDENT_TABLE,_ID ,NAME的前后都要加空格  
   
 private static final String CREATE_TABLE = "create table " + 
STUDENT_TABLE + " ( " + _ID + " Integer primary key autoincrement," + 
NAME + " text)";  
      
    public DBOpneHelper(Context context) {  
        super(context, DB_NAME, null, VERSION);  
    }  
  
    //数据库第一次被创建时调用   
    @Override  
    public void onCreate(SQLiteDatabase db) {  
        db.execSQL(CREATE_TABLE);  
    }  
  
    //版本升级时被调用   
    @Override  
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {  
  
    }  
  
}

4.SQLOperateImpl.java

package com.mrzhu.sqltite;  
  
import java.util.ArrayList;  
import java.util.List;  
  
import android.content.ContentValues;  
import android.content.Context;  
import android.database.Cursor;  
import android.database.sqlite.SQLiteDatabase;  
  
public class SQLOperateImpl implements SQLOperate{  
  
    private DBOpneHelper dbOpenHelper;  
      
    public SQLOperateImpl(Context context) {  
        dbOpenHelper = new DBOpneHelper(context);  
    }  
  
    /**  
     * 增,用insert向数据库中插入数据  
     */  
    public void add(Person p) {  
        SQLiteDatabase db = dbOpenHelper.getWritableDatabase();  
        ContentValues values = new ContentValues();  
        values.put(DBOpneHelper._ID, p.getId());  
        values.put(DBOpneHelper.NAME, p.getName());  
        db.insert(DBOpneHelper.STUDENT_TABLE, null, values);  
    }  
  
    /**  
     * 删,通过id删除数据  
     */  
    public void delete(int id) {  
        SQLiteDatabase db = dbOpenHelper.getWritableDatabase();  
        db.delete(DBOpneHelper.STUDENT_TABLE, DBOpneHelper._ID + "=?", new String[]{String.valueOf(id)});  
    }  
  
    /**  
     * 改,修改指定id的数据  
     */  
    public void updata(Person p) {  
        SQLiteDatabase db = dbOpenHelper.getWritableDatabase();  
        ContentValues values = new ContentValues();  
        values.put(DBOpneHelper._ID, p.getId());  
        values.put(DBOpneHelper.NAME, p.getName());  
        db.update(DBOpneHelper.STUDENT_TABLE, values, DBOpneHelper._ID + "=?", new String[]{String.valueOf(p.getId())});  
    }  
  
    /**  
     * 查,查询表中所有的数据  
     */  
    public List<Person> find() {  
        List<Person> persons = null;  
        SQLiteDatabase db = dbOpenHelper.getReadableDatabase();  
        Cursor cursor = db.query(DBOpneHelper.STUDENT_TABLE, null, null, null, null, null, null);  
        if(cursor != null){  
            persons = new ArrayList<Person>();  
            while(cursor.moveToNext()){  
                Person person = new Person();  
                int _id = cursor.getInt(cursor.getColumnIndex(DBOpneHelper._ID));  
                String name = cursor.getString(cursor.getColumnIndex(DBOpneHelper.NAME));  
                person.setId(_id);  
                person.setName(name);  
                persons.add(person);  
            }  
        }  
        return persons;  
    }  
  
    /**  
     * 查询指定id的数据  
     */  
    public Person findById(int id) {  
        SQLiteDatabase db = dbOpenHelper.getReadableDatabase();  
       
 Cursor cursor = db.query(DBOpneHelper.STUDENT_TABLE, null, 
DBOpneHelper._ID + "=?", new String[]{String.valueOf(id)}, null, null, 
null);  
        Person person = null;  
        if(cursor != null && cursor.moveToFirst()){  
            person = new Person();  
            int _id = cursor.getInt(cursor.getColumnIndex(DBOpneHelper._ID));  
            String name = cursor.getString(cursor.getColumnIndex(DBOpneHelper.NAME));  
            person.setId(_id);  
            person.setName(name);  
        }  
        return person;  
    }  
}

5.Test.java

 

AndroidManifest.xml中的<application></application>外添加

(targetPackage是当前工程的包名)

 <instrumentation 
android:targetPackage="com.mrzhu.sqltite" 
android:name="android.test.InstrumentationTestRunner"> 
</instrumentation>

 

在<application></application>中添加<uses-library android:name="android.test.runner"/>

 

package com.mrzhu.sqltite;  
  
import java.util.List;  
  
import android.test.AndroidTestCase;  
import android.util.Log;  
  
public class Test extends AndroidTestCase {  
    public void testAdd() throws Exception{  
        SQLOperateImpl test = new SQLOperateImpl(getContext());  
        Person person = new Person(2, "Peter");  
        test.add(person);  
    }  
      
    public void testDelete() throws Exception{  
        SQLOperateImpl test = new SQLOperateImpl(getContext());  
        test.delete(1);  
    }  
      
    public void testUpdata() throws Exception{  
        SQLOperateImpl test = new SQLOperateImpl(getContext());  
        Person person = new Person(1, "Tom");  
        test.updata(person);  
    }   www.2cto.com
      
    public void testFind() throws Exception{  
        SQLOperateImpl test = new SQLOperateImpl(getContext());  
        List<Person> persons = test.find();  
        for (Person person : persons) {  
            Log.i("System.out", person.toString());  
        }  
    }  
      
    public void testFindById() throws Exception{  
        SQLOperateImpl test = new SQLOperateImpl(getContext());  
        Person person = test.findById(2);  
        Log.i("System.out", person.toString());  
    }  
}

 


扫描二维码推送至手机访问。

版权声明:本文由微小站发布,如需转载请注明出处。

本文链接:https://www.jsc0.com/post/15.html

标签: SQLite
分享给朋友:

“Android--SQLite(增,删,改,查)操作” 的相关文章

Android权限问题整理

Android权限系统非常庞大,我们在Android系统中做任何操作都需要首先获取Android系统权限,本文记录了所有的Android权限问题,整理一下分享给大家。访问登记属性 android.permission.ACCESS_CHECKIN_PROPERTIES读取或写入登记check-in数...

实现应用程序只有在第一次启动时显示引导界面

第一次安装启动:启动页--->导航页-->主页面之后启动:启动页-->主页面实现的原理就是:在启动页面用做一个文件保存的状态,保存程序是不是第一次启动的状态。因为只是要保存一个状态,我们将这个程序是第一次打开就将他设为true,当他进入 主页面之后将他的状态未为false,因为都...

ViewPager + HorizontalScrollView 实现可滚动的标签栏

ViewPager + HorizontalScrollView 实现可滚动的标签栏

这是一个可滑动的标签栏的自定义控件,参考此文章http://blog.csdn.net/fx_sky/article/details/8990573,我将主要的功能整合成一个类,配上2个特定的布局即可使用。 效果图:    主要布局文件:<?xml&nb...

Android ImageView的scaleType属性与adjustViewBounds属性

Android ImageView的scaleType属性与adjustViewBounds属性

ImageView的scaleType的属性有好几种,分别是matrix(默认)、center、centerCrop、centerInside、fitCenter、fitEnd、fitStart、fitXY android:sca...

Android中从SD卡中/拍照选择图片并进行剪裁的方法

Android中从SD卡中/拍照选择图片并进行剪裁的方法

效果图: 下面是代码的部分,部分是从网路上摘录的,自己整理后当做工具类使用   配置文件:布局很简单,一个ImageButton和一个Button,点击都可以实现图像选择的功能,具体的实现根据大家在实际中...

Android 学习之 开源项目PullToRefresh的使用

Android 学习之 开源项目PullToRefresh的使用

首先 下载 Android-PullToRefresh-master 下载地址  https://github.com/chrisbanes/Android-PullToRefresh 下载之...