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

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

jsc11年前 (2014-08-27)Android3433

            需要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://jsc0.com/post/15.html

标签: SQLite
分享给朋友:

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

google Zxing实现二维码、条形码扫描,仿微信二维码扫描效果

google Zxing实现二维码、条形码扫描,仿微信二维码扫描效果

    了解二维码这个东西还是从微信中,当时微信推出二维码扫描功能,自己感觉挺新颖的,从一张图片中扫一下竟然能直接加好友,不可思议啊,那时候还不了解二维码,呵呵,然后做项目的时候,老板说要加上二维码扫描功能,然后自己的屁颠屁颠的去百度,google...

Android采用SharedPreferences保存用户登录信息

Android平台给我们提供了一个SharedPreferences类,它是一个轻量级的存储类,特别适合用于保存软件配置参数。使用 SharedPreferences保存数据,其背后是用xml文件存放数据,文件存放在/data/data/<package name>/shared...

android上传图片至服务器

本实例实现了android上传手机图片至服务器,服务器进行保存服务器servlet代码publicvoid doPost(HttpServletRequest request, HttpServletResponse response)  ...

Android 更换皮肤思路及解决方案

Android 更换皮肤思路及解决方案

本篇博客要给大家分享的一个关于Android应用换肤的Demo,大家可以到我的github去下载demo,以后博文涉及到的代码均会上传到github中统一管理。 github地址:https://github.com/devilWwj/Android-skin-upda...

Fragment保持状态切换

Fragment保持状态切换

在使用Activity管理多个Fragment时,每次切换Fragment使用的是replace,结果导致出现xxx is not currently in the FragmentManager异常挂掉网上说使用replace切换会使被切换的Fragment给替换掉,从而被被切换的Fra...

Android中的消息通知(NotificationManager和Notification)

下面来谈谈notification,这个notification一般用在电话,短信,邮件,闹钟铃声,在手机的状态栏上就会出现一个小图标,提 示用户处理这个通知,这时手从上方滑动状态栏就可以展开并处理这个快讯。已添加的Notification.Builder,使其更容易构建通知。 notifica...