«

android_sqlite开发入门

时间:2024-3-2 18:26     作者:韩俊     分类: Android


<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">  又好长时间没写微博。。这次要做一个需要本地数据库的软件,理所当然的用到了SqlLite。接下来简单介绍一下SQLite的使用。主要是怎样实现增删改查</span>

主要使用到的类是

1..SQLiteOpenHelper,这个类是一个数据库帮助类,帮助管理数据库的使用,是创建数据库的必须工具,

主要方法有:

getReadableDataBase();以及getWriteableDataBase();这两个方法可以获得数据库对象,也就是为数据库引用赋值。close(); 可以关闭和数据库的连接

使用的方法是继承这个类,重载构造函数,一般是用一个Context对象就行,第二个参数置null,后面的就是数据库文件名和数据库的版本号了,在onCreate()里面执行建表的语句,注意要是想给数据库一些初始数据的话也可以写在那里,可以发现,就是调用了数据库对象执行sql语句的方法

这是一个使用实例

import android.content.Context;
import android.database.DatabaseErrorHandler;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;

public class DietDbHelper extends SQLiteOpenHelper {

    private final static String DB_NAME = "vegetable.db";

    // 菜谱表共四个字段, did 主键 id自增长 d_name
    // 菜谱的名字 d_type 菜谱的种类 d_vege 组成菜谱的菜

    private final String CREATE_TABLE = "create table diet("
            + "did integer primary key autoincrement,"
            + "d_name text not null,d_type text not null)";
    public final static String COLMUNS_ID = "did";
    public final static String COLMUNS_NAME = "d_name";
    public final static String COLMUNS_TYPE = "d_type";

    public DietDbHelper(Context context) {
        super(context, DB_NAME, null, 1);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL(CREATE_TABLE);
        Log.d("创建diet", "创建数据diet");
        db.execSQL("insert into diet values(0,'干烧芦笋','热菜')");
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        // TODO Auto-generated method stub
    }

}


2.SQLitedDataBase

主要方法有:

1.query(String table,String[] columns,String selection,String[] selectionArgs,String groupBy,String having,String orderBy,String limit);这个实现了查的操作,

table可以写成”表一,表二“这样的形式来实现多表查询,连接的句子卸载selection

selection指的是where部分的限制条件,注意不包含where这个单词

selectionArgs[] 用于指定参数,如前一个写的是id=?, ?为占位符,这个就可以写成new String[]{ "1" }表示id=1

2.insert(String table,String nullColumnHack,ContentValue value)

这个主要是首先生成一个ContentValue的对象,这个对象是一个键值对类型的变量

使用put方法将各种数据加入到这个对象中然后传进去作为插入的参数就行,主要是第二个参数,这是一个异常控制的参数,由于这个方法是将参数组织成sql语句,如果contentValue为空的话就是这样insert into table value() values();

底层的sqlite不允许插入空记录,所以当value为空的话就是insert into table value (nullColumnHack)values(null),这样,这个参数在你的value不为空的时候传null就行

3.delete(String table,String selection,String[] selectionArg)

这个就是删除,很简单,参数意思参照前面的query()

4.update(String table,ContentValue value,String selection,String[] selectionArg);

第二个参数是新值,其他还是参照前面

5.rawQuery(String sql,String [] selectionArg);

执行一个特定的sql语句,后面的参数是占位符的值

从vogella上面看到的使用方法是

1.创建数据库帮助类,也就是继承SQLiteOpenHelper,在这个类里面创建描述这个数据库的主要属性,比如数据表的名字,各个表的字段名,这样写是为了在后面好直接用而不会出现写错这样的事

2.针对数据写实体类

3.DataSource类,这个类将这个数据库的操作全部封装起来了,想要对这个数据库进行操作就要实例化这个类,

主要属性是:helper对象,SQLiteDataBase对象,含有单个表全部属性的数组(一个表一个这样的数组)

构造函数:传入Context实例化helper

open()使用helper的getXXXableDataBase()来实例化数据库

close();helper的close(),每次执行完一个操作都要释放资源

技巧:写一些将Cursor转化成实体类的方法很有效

可以这样根据列名查数据

<span style="font-size:18px;">sb.append(cursor.getString(cursor.getColumnIndex("count")));</span>


标签: android

热门推荐