SQLite数据库存储
发布时间:2020-12-12 23:46:45 所属栏目:百科 来源:网络整理
导读:数据库 数据库操作 创建数据库 升级数据库 添加数据 inster 方法接收三个参数第一个参数是表名第二个参数用于未指定添加数据的情况下给某些可为空的列自动赋值为null一般设为null第三个参数是一个ContenValues对象它提供了一系列的put方法重载用于向ContenVa
数据库SQLiteOpenHelper()是一个抽象类
getReadableDatabase()和getWritableDatabase()都可以创建或打开一个现有的数据库
四个参数,第一个参数是Context,第二个参数是数据库名,第三个参数允许我们在查询数据库的时候返回一个自定义的Cursor,一般传入null,第四个是数据库版本号,用于数据库的升级。
数据库操作数据库文件会保存在/data/data/包名/databases/目录下。 1.创建数据库cmd命令行下的数据库查看语句 import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;
import android.widget.Toast;
/**创建一个类继承SQLiteOpenHelper *然后把创建数据库的命令写成一个字符创 */
public class MyDatabaseeHelper extends SQLiteOpenHelper{
public static final String CREATE_BOOK = "create table book ("+"id integer primary key autoincrement,"
+"author text,"
+"price real,"
+"pages integer,"
+"name text)";
public static final String CREATE_CATEGORY = "create table category("+
"id integer primary key autoincrement,"
+"category_name text,"
+"category_code integer)";
//创建一个context对象便于得到调用此类的类的当前环境,然后方便下面数据的传递
private Context mContext;
public MyDatabaseeHelper(Context context,String name,CursorFactory factory,int version) {
super(context,name,factory,version);
mContext = context;
}
@Override
public void onCreate(SQLiteDatabase db) {
//执行创建表的语句
db.execSQL(CREATE_BOOK);
db.execSQL(CREATE_CATEGORY);
//创建成功后给予提示,正式使用时要删掉
Toast.makeText(mContext,"Create succed",Toast.LENGTH_SHORT).show();
}
/**数据库的升级更新语句 */
@Override
public void onUpgrade(SQLiteDatabase db,int oldVersion,int newVersion) {
db.execSQL("drop table if exists book");
db.execSQL("drop table if exists category");
onCreate(db);
}
}
"*****************在主类中使用数据库的语句*******************"
//创建一个数据库,数据库的名称为BookStore.db,必须以.db结尾
dbHelper = new MyDatabaseeHelper(this,"BookStore.db",null,2);
//调用getWritableDatabase()创建一个新的数据库
dbHelper.getWritableDatabase();
2.升级数据库public static final String CREATE_CATEGORY = "create table category("+
"id integer primary key autoincrement,"
+"category_code integer)";
//这些为为了更新添加在第一个 MyDatabaseeHelper的语句
db.execSQL(CREATE_CATEGORY);
//这里先将已经存在的数据库中的表全删除,然后重新创建数据库
db.execSQL("drop table if exists book");
db.execSQL("drop table if exists category");
onCreate(db);
//将版本号升级以便会执行
dbHelper = new MyDatabaseeHelper(this,3);
//再次调用getWritableDatabase()创建一个新的数据库
dbHelper.getWritableDatabase();
3.添加数据inster( )方法接收三个参数,第一个参数是表名,第二个参数用于未指定添加数据的情况下给某些可为空的列自动赋值为null,一般设为null,第三个参数是一个ContenValues对象,它提供了一系列的put()方法重载,用于向ContenValues中添加数据。//定义全局变量private MyDatabaseeHelper dbHelper;
SQLiteDatabase db = dbHelper.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("name","This Da Vinci Code");
values.put("author","Dan Brow");
values.put("pages",454);
values.put("price",16.69);
db.insert("book",values);
values.clear();
values.put("name","The Lost Symbol");
values.put("author",510);
values.put("price",19.95);
db.insert("book",values);
"添加后的查看语句,在登录到当前数据库下的情况下,用cmd命令行查看,select * from book"
4.修改语句SQLiteDatabase db = dbHelper.getWritableDatabase();
ContentValues values= new ContentValues();
values.put("price",10.99);
db.update("book",values,"name = ?",new String[]{"This Da Vinci Code"});
5.删除语句SQLiteDatabase db = dbHelper.getWritableDatabase();
db.delete("book","pages > ?",new String[]{"500"});
6.查询语句SQLiteDatabase db = dbHelper.getWritableDatabase();
//传入要查询的表名,其他值传入null,获得一个Cursor对象
Cursor cursor= db.query("book",null);
if(cursor.moveToFirst()){
do{
//得到列的索引项
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"));
Log.d("MainActivity",name);
Log.d("MainActivity",author);
Log.d("MainActivity",""+pages);
Log.d("MainActivity",""+price);
//当没有下一个的时候返回false
}while(cursor.moveToNext());
}
//关闭索引
cursor.close();
//另外的部分不是这部分源码,后面的2,3,其中的2为偏移量,3为查询的数量。
Cursor cursor=db.query("user"," 2,3 ");
query()方法 |
对应的SQL部分 |
描述 |
|