Android-SQLiteDatabase数据存储
来源:互联网 发布:java 乘法溢出 编辑:程序博客网 时间:2024/05/16 12:27
目标效果:
使用代码新建数据库进行插入修改删除查询操作,并使用log打印日志信息。(前边运行过多次,所以id不是从1开始了)
1.MainActivity.java页面创建数据库并进行插入修改删除查询打印。
MainActivity.java页面:
package com.example.database;import android.os.Bundle;import android.app.Activity;import android.content.ContentValues;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;import android.util.Log;import android.view.Menu;public class MainActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);/*创建私有数据库*/SQLiteDatabase db=openOrCreateDatabase("user.db",MODE_PRIVATE,null);/*创建表,integer为整形,text为字符串,primary key代表主键,autoincrement代表自增,not null代表不为空*/db.execSQL("create table if not exists usertb(_id integer primary key autoincrement,name text not null,age integer not null,sex text not null)");/*添加方式一*/db.execSQL("insert into usertb(name,sex,age)values('张三','男',18)");/*添加方式二*/ContentValues values=new ContentValues();values.put("name","李四");values.put("sex","男");values.put("age",20);db.insert("usertb",null,values);values.clear();//清空values值,便于后边继续使用该变量/*修改*/values.put("sex","女");db.update("usertb",values,"_id>?",new String[]{"3"});//将id大于3的人性别全改为女/*删除*/db.delete("usertb","name like ?",new String[]{"%三%"});//删除名字含有三的人/*查询所有信息*/Cursor c=db.rawQuery("select * from usertb",null);if(c!=null){while(c.moveToNext()){Log.i("MainActivity","_id"+c.getInt(c.getColumnIndex("_id")));Log.i("MainActivity","name"+c.getString(c.getColumnIndex("name")));Log.i("MainActivity","sex"+c.getString(c.getColumnIndex("sex")));Log.i("MainActivity","age"+c.getInt(c.getColumnIndex("age")));}c.close();//释放游标}Log.i("MainActivity","---分隔符---");/*按条件查询*/Cursor b=db.query("usertb",null,"_id>?",new String[]{"2"},null,null,"name");//查询id大于2的新的信息if(b!=null){while(b.moveToNext()){Log.i("MainActivity","_id"+b.getInt(b.getColumnIndex("_id")));Log.i("MainActivity","name"+b.getString(b.getColumnIndex("name")));Log.i("MainActivity","sex"+b.getString(b.getColumnIndex("sex")));Log.i("MainActivity","age"+b.getInt(b.getColumnIndex("age")));}b.close();//释放游标}db.close();//释放SQLiteDatabase对象}}
2.新建的数据库文件同上一篇博文的文件位置一样,只不过这个是保存在了databases文件夹下。(真机运行打不开data文件夹,需要使用模拟器运行)
另外,SQLiteOpenHelper是SQLiteDatabase的一个帮助类,用来管理数据库的创建和版本的更新,一般是建立一个类继承它,并实现它的onCreate和onUpgrade方法。
1.创建DBOpenHelper类,继承SQLiteOpenHelper,用于创建数据库和插入数据。
DBOpenHelper.java页面:
package com.example.database;import android.content.ContentValues;import android.content.Context;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteOpenHelper;public class DBOpenHelper extends SQLiteOpenHelper{/** * SQLiteOpenHelper是SQLiteDatabase的一个帮助类,用来管理数据库的创建和版本的更新,一般是建立一个类继承它,并实现它的onCreate和onUpgrade方法 */public DBOpenHelper(Context context, String name) {super(context, name,null,1);}/*首次创建数据库的时候调用(调用一次),一般可以把建库,建表的操作写到里边,不可以人为调用*/@Overridepublic void onCreate(SQLiteDatabase db) {db.execSQL("create table if not exists stutb(_id integer primary key autoincrement,name text not null,age integer not null,sex text not null)");/*添加方式一*/db.execSQL("insert into stutb(name,sex,age)values('张三','女',18)");/*添加方式二*/ContentValues values=new ContentValues();values.put("name","王五");values.put("sex","男");values.put("age",20);db.insert("stutb",null,values);}/*当数据库的版本发生变化的时候,会自动执行,不可以人为调用*/@Overridepublic void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) {}}
2.新建SecondActivity.java页面和activity_second.xml页面,这里只需要使用SecondActivity.java页面进行处理数据和打印信息。
SecondActivity.java页面:
package com.example.database;import android.os.Bundle;import android.app.Activity;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;import android.util.Log;public class SecondActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_second);/*实例DBOpenHelper对象*/DBOpenHelper helper=new DBOpenHelper(SecondActivity.this,"stu.db");/*获取数据库*/SQLiteDatabase db=helper.getWritableDatabase();/*查询所有信息*/Cursor c=db.rawQuery("select * from stutb",null);if(c!=null){while(c.moveToNext()){Log.i("MainActivity","name"+c.getString(c.getColumnIndex("name")));}}}}
3.使用SQLiteOpenHelper的好处是方便数据库的处理。
0 0
- Android-SQLiteDatabase数据存储
- android数据存储篇——SqliteDatabase
- 数据存储之SQLiteDatabase
- Android SQLiteDatabase 数据库存储
- Android 数据存储 利用SQLiteDatabase实现简单的学生管理
- Android数据存储方式之SQLite(1、SQLiteDatabase)
- Android 数据存储 利用SQLiteDatabase实现简单的学生管理
- Android 数据存储 利用SQLiteDatabase实现简单的学生管理
- 用SQLiteDatabase类存储数据
- Android 数据操作之SQLiteDatabase
- Android 数据操作之SQLiteDatabase
- Android数据保存之SQLiteDatabase
- 使用SQLiteDatabase操作SQLite数据库存储数据
- Android本地数据存储之SQLite关系型数据库 ——SQLiteDatabase
- Android本地数据存储之SQLite关系型数据库 ——SQLiteDatabase
- android 存储方式(三)SQLiteDatabase
- android SQliteDatabase 数据的更新问题
- Android中SQLiteDatabase中插入中文数据
- 利用curand的host API生成均匀分布的随机数
- 【arduino】通过Esp8266-01模块实现的WiFi通信(3)使用TCP协议进行局域网通信(client篇)
- Leetcode - Isomorphic Strings
- Spring Mvc那点事---(1)开发环境搭建
- 19.Remove Nth Node From End of List(7.54%)
- Android-SQLiteDatabase数据存储
- Cortex-M3 内部寄存器
- java源码分析--Enumeration接口和Iterator接口
- 自动释放池简单原理
- CWHArray模版类
- img标签详解
- Tab选项卡切换
- 设计模式23篇:原型模式
- Fragment加Viewpager的使用小结