新建一个java类 继承SQLiteOpenHelper
public class MyDatabaseHelper extends SQLiteOpenHelper {
/*建表语句 用sql写
创建一个book表 有5个字段*/
public static final String CREATE_BOOK = "create table book("
+ "id integer primary key autoincrement,"
+ "author text,"
+ "price real,"
+ "pages int,"
+ "name text)";
public static final String CREATE_CATEGORY = "create table Category ("
+ "id integer primary key autoincrement, "
+ "category_name text, "
+ "category_code integer)";
public MyDatabaseHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
super(context, name, factory, version);
}
/*第一次创建数据库的时候会执行这个函数
所以在这个函数里建表
db.execSQL() 函数 这个函数经常要用的
用来执行sql命令 接收一个String参数
把刚刚写的sql语句传进去 就能创建表了 */
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(CREATE_BOOK);
db.execSQL(CREATE_CATEGORY);
}
/*升级数据库的时候会执行这个函数
比如要新增字段 新增加表 就在这个函数里操作*/
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}
在Activity里调用数据库
先new一个MyDatabaseHelper
MyDatabaseHelper databaseHelper = new MyDatabaseHelper(
this, \\上下文 传入Activity
"book.db", \\数据库的文件名
null,
2 \\数据库版本
);
调用MyDatabaseHelper 的getWritableDatabase 获取数据库
以后就可以用db操作数据库了
SQLiteDatabase db = databaseHelper.getWritableDatabase();
插入数据 可以用db.execSQL执行sql语句
第一个参数是sql语句,第二个参数是数据 用一个String数组包装
下面插入一本书到book表,书名精通java 作者Dan Brown 454页 价格99
db.execSQL("insert into Book "
+ "(name,author,pages,price)"
+ "values(?,?,?,?)" ,
new String[]{ "精通java", "Dan Brown", "454", "99"}
);
也可以用db的insert()函数插入 先声明一个 ContentValues
ContentValues values = new ContentValues();
//用ContentValues ,put方法传入数据
//第一个参数是字段名,第二个参数是数据
values.put("name", "精通java");
values.put("author", "Dan Brown");
values.put("pages", 454);
values.put("price", 999);
//调用db的insert()插入 第一个参数是表名 第三个是ContentValues
db.insert("Book", null, values);
//查询 用db.query 返回一个Cursor 里面有数据
Cursor cursor = db.query("Book",
null, null, null, null, null, null);
//查之前先把Cursor位置移到第一 从第一条开始查
boolean succeed = (cursor.moveToFirst();
if ( succeed ) {
do {
//先判断字段的数据类型 如果是String 就用 cursor.getString
// 是Double 就用 cursor.getDouble 以此类推
//cursor.getString函数需要传入 ColumnIndex
//用 cursor.getColumnIndex 传入字段名
String name = cursor.getString
(cursor.getColumnIndex("name"));
String author = cursor.getString
(cursor.getColumnIndex("author"));
int pages = cursor.getInt
(cursor.getColumnIndex("pages"));
double price = cursor.getDouble(
cursor.getColumnIndex("price"));
//查完一条之后调用cursor.moveToNext()把cursor的位置移动到下一条
} while (cursor.moveToNext());
}
//全部查完后 把cursor关闭
cursor.close();