android数据库的存储上限_android——SQLite数据库存储(操作)

1 public class MyDatabaseHelper extendsSQLiteOpenHelper {2

3 //把定义SQL建表语句成字符串常量4

5 //图书的详细信息6 //ID、作者、价格、页数、书名

7 public static final String CREATE_BOOK = "create table Book("

8 +"id integer primary key autoincrement,"

9 +"author text,"

10 +"price real,"

11 +"pages integer,"

12 +"name text)";13

14 privateContext mContext;15

16 //构造方法

17 publicMyDatabaseHelper(Context context, String name,18 SQLiteDatabase.CursorFactory factory, intversion){19 super(context,name,factory,version);20 mContext =context;21 }22

23 //建表

24 @Override25 public voidonCreate(SQLiteDatabase db) {26 db.execSQL(CREATE_BOOK);27 Toast.makeText(mContext,"数据库创建成功", Toast.LENGTH_SHORT).show();28 }29

30 @Override31 public void onUpgrade(SQLiteDatabase db, int oldVersion, intnewVersion){32 }33 }

目前数据库中有一个Book表,如果想要添加一个Category表,就需要对数据库进行升级,这时需要用到MyDatabaseHelper中的onUpgrade()方法。

首先和Book表的建立一样需要先写好建表语句:

create table Category (

id integer primary key autoincrement

category_name text

category_code integer)

修改后的代码如下:

public class MyDatabaseHelper extendsSQLiteOpenHelper {//把定义SQL建表语句成字符串常量//图书的详细信息//ID、作者、价格、页数、书名

public static final String CREATE_BOOK = "create table Book("

+"id integer primary key autoincrement,"

+"author text,"

+"price real,"

+"pages integer,"

+"name text)";//图书的分类//图书的id、分类名、分类代码

public static final String CREATE_CATEGORY = "create table Category("

+ "id integer primary key autoincrement,"

+ "category_name text,"

+ "category_code inter)";privateContext mContext;//构造方法

publicMyDatabaseHelper(Context context, String name,

SQLiteDatabase.CursorFactory factory,intversion){super(context,name,factory,version);

mContext=context;

}//建表

@Overridepublic voidonCreate(SQLiteDatabase db) {

db.execSQL(CREATE_BOOK);

db.execSQL(CREATE_CATEGORY);

Toast.makeText(mContext,"数据库创建成功", Toast.LENGTH_SHORT).show();

}

@Overridepublic void onUpgrade(SQLiteDatabase db, int oldVersion, intnewVersion){

db.execSQL("drop table if exists Book");

db.execSQL("drop table if exists Category");

onCreate(db);

}

}

在onUpgrade()方法中先使用drop语句如果已经存在Book表和Category表,就把两张表都删掉,因为数据库已经存在了,onCreate()方法怎么样都不会再执行的。

然后在MainActivity修改代码:

1 public class MainActivity extendsAppCompatActivity {2

3 privateMyDatabaseHelper dbHelper;4

5 @Override6 protected voidonCreate(Bundle savedInstanceState) {7 super.onCreate(savedInstanceState);8 setContentView(R.layout.activity_main);9

10 //创建帮助类的实例

11 dbHelper = new MyDatabaseHelper(this,"BookStore.db",null,2);12

13 //注册按钮

14 Button creatDatabase =(Button) findViewById(R.id.creat_database);15 //按钮响应

16 creatDatabase.setOnClickListener(newView.OnClickListener() {17 @Override18 public voidonClick(View view) {19 dbHelper.getWritableDatabase();20 }21 });22 }23 }

dbHelper = new MyDatabaseHelper(this,"BookStore.db",null,2);把最后一个参数从之前的1改为2,再按下创建数据库就可完成升级。

接下来完成数据库的添加、更新、删除、查询操作。

先修改布局文件添加4个按钮:

1 <?xml version="1.0" encoding="utf-8"?>

2

3 android:layout_width="match_parent"

4 android:layout_height="match_parent"

5 android:orientation="vertical">

6

7

9 android:layout_width="match_parent"

10 android:layout_height="wrap_content"

11 android:text="建立数据库"/>

12

13

15 android:layout_width="match_parent"

16 android:layout_height="wrap_content"

17 android:text="添加数据"/>

18

19

21 android:layout_width="match_parent"

22 android:layout_height="wrap_content"

23 android:text="更新数据"/>

24

25

27 android:layout_width="match_parent"

28 android:layout_height="wrap_content"

29 android:text="删除数据"/>

30

31

33 android:layout_width="match_parent"

34 android:layout_height="wrap_content"

35 android:text="查询数据"/>

36

在MainActivity中这样完成:

1 public class MainActivity extendsAppCompatActivity {2

3 privateMyDatabaseHelper dbHelper;4

5 @Override6 protected voidonCreate(Bundle savedInstanceState) {7 super.onCreate(savedInstanceState);8 setContentView(R.layout.activity_main);9

10 //创建帮助类的实例

11 dbHelper = new MyDatabaseHelper(this,"BookStore.db",null,2);12

13 //注册按钮

14 Button creatDatabase =(Button) findViewById(R.id.creat_database);15 Button adddata =(Button) findViewById(R.id.add_data);16 Button updataData =(Button) findViewById(R.id.updata_data);17 Button deleteData =(Button) findViewById(R.id.delete_data);18 Button queryData =(Button) findViewById(R.id.query_data);19 //按钮响应

20 creatDatabase.setOnClickListener(newView.OnClickListener() {21 @Override22 public voidonClick(View view) {23 dbHelper.getWritableDatabase();24 }25 });26

27 //添加数据

28 adddata.setOnClickListener(newView.OnClickListener() {29 @Override30 public voidonClick(View view) {31 SQLiteDatabase db =dbHelper.getWritableDatabase();32 ContentValues values = newContentValues();33 //第一条数据

34 values.put("name","The Da Vinci Code");35 values.put("author","Dan Brown");36 values.put("pages",45);37 values.put("price",16.96);38 db.insert("Book",null,values);39 values.clear();40 //第二条数据

41 values.put("name","The Lost symbol");42 values.put("author","Dan Brown");43 values.put("pages",510);44 values.put("price",19.95);45 db.insert("Book",null,values);46 Toast.makeText(MainActivity.this,"添加数据成功",Toast.LENGTH_SHORT).show();47 }48 });49

50 //更新数据

51 updataData.setOnClickListener(newView.OnClickListener() {52 @Override53 public voidonClick(View view) {54 SQLiteDatabase db =dbHelper.getWritableDatabase();55 ContentValues values = newContentValues();56 values.put("price",10.899);57 db.update("Book", values, "name = ?",new String[] {"The Da Vinci Code"});58 }59 });60

61 //删除数据

62 deleteData.setOnClickListener(newView.OnClickListener() {63 @Override64 public voidonClick(View view) {65 SQLiteDatabase db =dbHelper.getWritableDatabase();66 db.delete("Book","pages > ?",new String[] {"500"});67 }68 });69

70 //查询数据

71 queryData.setOnClickListener(newView.OnClickListener() {72 @Override73 public voidonClick(View view) {74 SQLiteDatabase db =dbHelper.getWritableDatabase();75 Cursor cursor = db.query("Book", null, null ,null, null, null, null);76 if(cursor.moveToFirst()){77 String name = cursor.getString(cursor.getColumnIndex("name"));78 String author = cursor.getString(cursor.getColumnIndex("author"));79 int pages = cursor.getInt(cursor.getColumnIndex("pages"));80 double price = cursor.getDouble(cursor.getColumnIndex("price"));81 Log.d("MainActivity","book name is " +name);82 Log.d("MainActivity","book auther is " +author);83 Log.d("MainActivity","book pagesis " +pages);84 Log.d("MainActivity","book price is " +price);85 }86 }87 });88 }89 }

添加数据:先使用dbHelper.getWritableDatabase()方法创建一个SQLiteDatabase的实例db,用于操作数据库,然后创键一个ContentValues的实例values,用来存放要添加的数据。然后是要values的put()方法将数据存入values中,再使用db的insert()方法将数据添加进数据库。然后使用clear()方法清空values再添加下一个数据。最后提醒添加成功。

更新数据:一样使用dbHelper.getWritableDatabase()创建一个一个SQLiteDatabase的实例db,在创建一个values,将要更新的数据存放在values中,然后使用update()方法更新数据。第三个和第四个参数用于判断修改的是哪一行的数据。

删除数据:使用delete()方法,第一个参数是想要操作的表名,第二个第三个指定操作的行。

查询数据:将数据存放在cursor对象中,query()方法最短也要有7个参数,例如:(返回值)方法名:query(String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy),其中table指定想要查询的表名,columns指定查询的列名,selection指定where的约束条件,selectionArgs为where中的占位符提供具体的值,groupBy指定group by的列,having对group by后的结果进行约束,orderBy查询结果的排序方式。

db.query("Book", null, null ,null, null, null, null );这样的用法表示将遍历整个Book表。

然后使用cursor的moveToFirst方法将指针移到第一行,再一次向下移动实现遍历,再使用cursor.getColumnIndex()方法得到相应列的索引,通过getString、getInt、getDouble获得相应类型的数据,最后输出查询的结果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值