<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>