sqlite 增删改查附代码

来源:互联网 发布:大唐陌刀 知乎 编辑:程序博客网 时间:2024/05/23 14:26

一、进入数据库

命令行输入下列命令进入数据库

1.adb

2.adb shell

3.cd data

4.cd data

5.cd [包名]

6.创建数据库后

7.cd databases

8.sqlite3 [数据库名]    

即数据库存放在/data/data/[包名]/databases/路径下

 

常用命令

.schema     查看当前数据库中有哪些表

查看表中数据  select * from [tablename];

 

二、知识点

1、public void execSQL(String sql);

执行单个SQL语句,但不能执行SELECT和其他有返回值的SQL语句;

 

2、SQL语句

语句:create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..)

说明:tabname——表名,col1,col2——字段名(即列名),not null——该字段非空,primary key——主键(某条记录的唯一标识符)。

 

3、public long insert (String table, String nullColumnHack, ContentValues values)

注:插入记录,table——表名,nullColumnHack——强行插入null值的字段(列名),values——一行记录的数据。

 

4、public int update (String table, ContentValues values, String whereClause, String[] whereArgs)

注:更新数据库中数据;table——想要更新的表名,values——想要更新的数据,whereClause——满足该whereClause子句的记录将会被更新,whereArgs——为whereClause传入参数。(可理解为:在表table中,根据whereClause和whereArgs查找出数据,更新为values)

如:更新person_inf表中所有主键大于20的人的人名,

ContentValues values = new ContentValues();

values.put(“name”,“新人名”);

int result = db.update(“person_inf”,values,”_id > ?”, new Integer[]{20});

 

5、public Cursor query (String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy)

注:查询,详情见帮助。

 

6.SQLiteOpenHelper类中的onCreate方法

public abstract void onCreate (SQLiteDatabase db);

当调用SQliteOpenHelper的getWritableDatabase()或者getReadableDatabase()方法获取用于操作数据库的SQLiteDatabase实例时,如果数据库不存在,Android系统会自动生成一个数据库,接着调用onCreta方法,onCreate方法在初次生成数据库时才被调用。

即:getWritableDatabase()、getReadableDatabase()在获取实例时,数据库不存在则创建,存在则不创建;而onCreate方法是第一次创建时自动调用的方法。因此,可重写该方法初始化数据表结构及数据等。

 

三、数据库版本version必须是正数!

四、掌握数据库操作的两个类SQLiteDatabase和SQLiteOpenHelper即可!

五、再理解数据库和表的创建

 

六、实例代码

package com.lucus.erseventh;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;

public class DatabaseHelper extends SQLiteOpenHelper{
    private final static String DB_NAME = "erSeventh.db";//数据库名称
    private final static String TABLE_NAME = "erSeventhTable";//表名称
    public final static String FIELD_ID="_id";//表列名,主键
    public final static String FIELD_EVENT_NAME="eventName";//表列名
    public final static String FIELD_REMIND_TIME="remindTime";//表列名
    /**在SQLiteOpenHelper的子类中,必须有该构造函数;context即activity对象,name即数据库名*/
    public DatabaseHelper(Context context, String name, CursorFactory factory,
            int version) {
        super(context, DB_NAME, factory, version);//调用父类的构造函数
        // TODO Auto-generated constructor stub
    }
    /**在SQLiteOpenHelper的子类中,必须有该构造函数;context即activity对象,name即数据库名*/
    /**该函数是在第一次创建数据库时执行,调用getWritableDatabase()或getReadableDatabase()方法时自动调用*/
    public void onCreate(SQLiteDatabase db) {
        // TODO Auto-generated method stub
        String sql = " create table " +
                    TABLE_NAME +
                    " ( " +
                    FIELD_ID +
                    " integer primary key, " + //注意"前后有空格!!!
                    FIELD_EVENT_NAME +
                    " varchar, " +      
                    FIELD_REMIND_TIME +
                    " varchar ) ";
        db.execSQL(sql);
//        db.execSQL("create table evtesttable(_id int primary key,eventName varchar(20)),remindTime varchar(20)");
//        db.execSQL("create table eventName(_id int primary key,eventName varchar(20))");
        System.out.println("Create a table");
    }
    /**该函数是在第一次创建数据库时执行,调用getWritableDatabase()或getReadableDatabase()方法时自动调用*/
    /**插入*/
    public void insert(String myEventName, String myRemindTime)
    {
        SQLiteDatabase db = this.getWritableDatabase();
        ContentValues cv = new ContentValues();
        cv.put(FIELD_EVENT_NAME, myEventName);
        cv.put(FIELD_REMIND_TIME, myRemindTime);
        db.insert(TABLE_NAME, null, cv);//第二个参数为null,主键自增1
        db.close();
        System.out.println("Insert data");
    }
    /**插入*/
    /**修改,修改FIELD_ID为id的记录,修改该记录的FIELD_EVENT_NAME和FIELD_REMIND_TIM*/
    public void update(int id,String newEventName,String newRemindTime)
    {
        SQLiteDatabase db = this.getWritableDatabase();
        String where = FIELD_ID + "=?";
        String[] whereValue = {Integer.toString(id)};
        ContentValues cv=new ContentValues();
        cv.put(FIELD_EVENT_NAME, newEventName);
        cv.put(FIELD_REMIND_TIME, newRemindTime);
        db.update(TABLE_NAME, cv, where, whereValue);
        System.out.println("Modify data");
    }
    /**修改,修改FIELD_ID为id的记录,修改该记录的FIELD_EVENT_NAME和FIELD_REMIND_TIM*/
    /**删除,删除FIELD_ID为id的记录*/
    public void delete(int id)
    {
        SQLiteDatabase db=this.getWritableDatabase();
        String where=FIELD_ID + "=?";
        String[] whereValue={Integer.toString(id)};
        db.delete(TABLE_NAME, where, whereValue);
        System.out.println("Delete data");
    }
    /**删除,删除FIELD_ID为id的记录*/

    /**删除数据库?*/
    public boolean deleteDBByName(String DBName) {
        Context context = null;
        context.deleteDatabase(DBName);
        return false;
    }
    /**删除数据库?*/
    /**获取游标*/
    public Cursor getCursor()
    {
        SQLiteDatabase db=this.getWritableDatabase();
        Cursor cursor=db.query(TABLE_NAME, null, null, null, null, null, null);
        return cursor;
    }
    /**获取游标*/
    /**查询,查询FIELD_ID为id的记录*/
    public Cursor query(int id)
    {
        SQLiteDatabase db = this.getWritableDatabase();
        String where = FIELD_ID + "=?";
        String[] whereValue = {Integer.toString(id)};
        Cursor cursor = db.query
                (
                    TABLE_NAME,
                    new String []{"_id","eventName","remindTime"},
                    where,
                    whereValue,
                    null, null, null
                );
        return cursor;
    }
    /**查询,查询FIELD_ID为id的记录*/
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        // TODO Auto-generated method stub
    }
}//end class DatabaseHelper