Android学习--SQLite存储方式(数据库)
2018-03-20 16:22
555 查看
一、SQLite存储方式
是安卓提供的一种轻量级的数据库(不需安装的内置数据库),是一种数据存储方式之一,一般用于数据量大,数据结构复杂的情况下二、三种常用数据类型
text 文本型/字符型integer 整型,自增长,主键
real 浮点型
三、创建一个表格的方法
例如创建一个student表格create table Student ( Id integer primary key(主键) autoincrement(自增长)no null, Name text(50), Height real, age Integer );
四、如何使用SQLite
创建数据库和数据表增删改查数据
五、创建数据库和数据表的步骤:
新建类继承SQLiteOpenHelper实现构造方法
重写onCreatr方法
重写onUpgrage方法
实例化SQLiteOpenHelper的子类对象
调用getReadableDatabase方法或getWritableDatabase
六、定义
1、SQLiteOpenHelper类:是一个数据库辅助类,管理数据库的创建和版本,通过继承这个类,实现他的一下方法来对数据库进行一些操作。
是一个抽象类,子类需要重写onCreate和onUpgrade抽象方法,并添加一个构造方法
2、SQLiteOpenHelper构造方法:
1.父类中未提供默认构造方法,必须显示调用父类的构造方法
2. 需要传递创建的数据库名称以及数据库版本号
构造方法参数:
SQLiteOpenHelper(Context context,String name,CursorFactory factory,int version)
Context context:上下文环境
String name:数据库名
CursorFactory factory:允许开发者查询数据的时候返回一个自定义的Cursor,一般传入null
int version:当前的数据库的版本号,可用于对数据库进行升级操作
3、SQLiteOpenHelper的常用方法:
oncreate方法
此方法只会在第一次创建时执行,只会执行一次
此方法中使用标准的SQL语句创建数据表
通过调用execSQL方法执行建表SQL语句
onUpgrade方法
此方法用来升级数据库表结构时触发
当需要增加表字段或增加表是,传递一个新的数据库版本号(版本更新时使用)
此方法中可以重新更新现数据表结构
4、SQLiteDatabase对象的方法:
SQLiteOpenHelper子类方法:
实例化SQLiteOpenHelper子类对象,创建数据库和数据库表
SQLiteDatabase对象:
数据库操作对象,用来连接数据库,并可以对数据表进行增删改查
getReadableDatabase方法:
以只读方式打开数据库,一般在查询时使用
getWritableDatabase方法:
以读写方式打开数据库,一般在增删改时使用
七、SQLite存储方式的运用实例
新建一个student表,插入数据,显示数据步骤:
创建视图列表,绑定ID,监听按钮插入以及显示
新建类MyDBHelper继承SQLiteOpenHelper
建表语句
private String sql = "create Table Student(" + "id integer primary key autoincrement not null," + "name text," + "age integer" + ")";
实现构造方法,重写onCreate和onUpgrade方法
//创建数据表结构语句 @Override public void onCreate(SQLiteDatabase db) { db.execSQL(sql); } //数据库版本更新时 @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { }
实现增操作
//增 private void insert(){ //获得SQLiteDatabase对象,读写模式 sqlbd=myDBHelper.getWritableDatabase(); ContentValues values=new ContentValues(); values.put("name",nameEt.getText().toString()); //执行插入操作 sqlbd.insert("student",null,values); }
实现查操作
//查 private void show(){ //得到数据库对象 sqlbd=myDBHelper.getReadableDatabase(); //创建游标 Cursor mcursor=sqlbd.query("student",null,null,null,null,null,null); //游标置顶 mcursor.moveToFirst(); //遍历,当游标还能移动时,不断接收数据库里的内容 do{ String name=mcursor.getString(mcursor.getColumnIndex("name")); Log.e("NAME",name); }while (mcursor.moveToNext()); mcursor.close();//关闭游标 }
实现改操作
private void modify(){ String name=nameEt.getText().toString(); String newname=name2Et.getText().toString(); sqlbd=myDBHelper.getWritableDatabase(); ContentValues values=new ContentValues(); values.put("name",newname); //第三个参数是查询条件where //第四个参数是修改的值,由一开始的name的占位符的填充长度决定 //三四两个参数相互对应 //如果第三四个参数都为null,那就将每条记录都改掉 sqlbd.update("student",values,"name=? and id>?",new String[]{name,"6"}); }
实现删操作
private void delete(){ sqlbd=myDBHelper.getWritableDatabase(); String name=nameEt.getText().toString(); //第二个参数是查询条件 //第三个参数是第二个参数的占位符的填充值 sqlbd.delete("student","name=?",new String[]{name}); }
八、代码演示
视图代码:<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="com.homework.activity.sqliteactivity.SQLiteActivity"> <EditText android:id="@+id/name_et" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="请输入学生姓名"/> <EditText android:id="@+id/name2_et" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="修改学生信息"/> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <Button android:id="@+id/search_btn" android:layout_width="0dp" android:layout_height="50dp" android:layout_weight="1" android:text="新增"/> <Button android:id="@+id/modify_btn" android:layout_width="0dp" android:layout_height="50dp" android:layout_weight="1" android:text="修改"/> <Button android:id="@+id/take_btn" android:layout_width="0dp" android:layout_height="50dp" android:layout_weight="1" android:text="显示"/> <Button android:id="@+id/delete_btn" android:layout_width="0dp" android:layout_height="50dp" android:layout_weight="1" android:text="删除"/> </LinearLayout> </LinearLayout>
MYDBHelper类代码
//创建数据库表
public class MyDBHelper extends SQLiteOpenHelper {
//建表语句
private String sql = "create Table Student(" + "id integer primary key autoincrement not null," + "name text," + "age integer" + ")";
public MyDBHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
super(context, name, factory, version);
}
//创建数据表结构语句 @Override public void onCreate(SQLiteDatabase db) { db.execSQL(sql); } //数据库版本更新时 @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { }
}
SQLiteActivity类代码:
public class SQLiteActivity extends AppCompatActivity implements View.OnClickListener{
private EditText nameEt;
private Button insertBtn;
private Button takeBtn;
private EditText name2Et;
private Button modifyBtn;
private Button deleteBtn;
private MyDBHelper myDBHelper;
private SQLiteDatabase sqlbd;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_sqlite);
bindID();
myDBHelper=new MyDBHelper(this,"demodb",null,1);
}
private void bindID() {
nameEt=findViewById(R.id.name_et);
insertBtn=findViewById(R.id.search_btn);
takeBtn=findViewById(R.id.take_btn);
name2Et=findViewById(R.id.name2_et);
modifyBtn=findViewById(R.id.modify_btn);
deleteBtn=findViewById(R.id.delete_btn);
nameEt.setOnClickListener(this);
insertBtn.setOnClickListener(this);
takeBtn.setOnClickListener(this);
name2Et.setOnClickListener(this);
modifyBtn.setOnClickListener(this);
deleteBtn.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.search_btn:
insert();
break;
case R.id.take_btn:
show();
break;
case R.id.modify_btn:
modify();
break;
case R.id.delete_btn:
delete();
break;
default:
break;
}
}
//增 private void insert(){ //获得SQLiteDatabase对象,读写模式 sqlbd=myDBHelper.getWritableDatabase(); ContentValues values=new ContentValues(); values.put("name",nameEt.getText().toString()); //执行插入操作 sqlbd.insert("student",null,values); }
//查
private void show(){
//得到数据库对象
sqlbd=myDBHelper.getReadableDatabase();
//创建游标
Cursor mcursor=sqlbd.query("student",null,null,null,null,null,null);
//游标置顶
mcursor.moveToFirst();
//遍历
do{
String name=mcursor.getString(mcursor.getColumnIndex("name"));
Log.e("NAME",name);
}while (mcursor.moveToNext());
mcursor.close();//关闭游标
}
//改
private void modify(){
String name=nameEt.getText().toString();
String newname=name2Et.getText().toString();
sqlbd=myDBHelper.getWritableDatabase();
ContentValues values=new ContentValues();
values.put("name",newname);
//第三个参数是查询条件where
//第四个参数是修改的值
sqlbd.update("student",values,"name=? and id>?",new String[]{name,"6"});
}
//删
private void delete(){
sqlbd=myDBHelper.getWritableDatabase();
String name=nameEt.getText().toString();
//第二个参数是查询条件
//第三个参数是第二个参数的占位符的填充值
sqlbd.delete("student","name=?",new String[]{name});
}
相关文章推荐
- android的基础学习:SQLite存储方式以及数据库操作
- 【Android游戏开发十三】(保存游戏数据 [下文])详解SQLite存储方式,并把SQLite的数据库文件存储在SD卡中!!!
- Android数据存储之SQLite 数据库学习
- android应用开发存储方式之SQLite(android自带的数据库)的一些个人理解
- 【Android游戏开发十三】(保存游戏数据 [下文])详解SQLite存储方式,并把SQLite的数据库文件存储在SD卡中!!!
- 【Android游戏开发十三】(保存游戏数据 [下文])详解SQLite存储方式,并把SQLite的数据库文件存储在SD卡中!!!
- android学习记录3(数据存储的方式:sqlite、sp、存文件。listview简单使用)
- 【Android游戏开发十三】(保存游戏数据 [下文])详解SQLite存储方式,并把SQLite的数据库文件存储在SD卡中!!!
- Android学习(二)(初学)SQLite存储方式
- android学习---SQLite方式存储数据
- 【Android游戏开发十三】(保存游戏数据 [下文])详解SQLite存储方式,并把SQLite的数据库文件存储在SD卡中!!!
- 【Android游戏开发十三】(保存游戏数据 [下文])详解SQLite存储方式,并把SQLite的数据库文件存储在SD卡中!!!
- (转)【Android游戏开发十三】(保存游戏数据 [下文])详解SQLite存储方式,并把SQLite的数据库文件存储在SD卡中!!!
- 【Android游戏开发十三】(保存游戏数据 [下文])详解SQLite存储方式,并把SQLite的数据库文件存储在SD卡中!!!
- Android数据保存的3种方式 SharedPreferences存储、文件存储、数据库存储SQLite 未完
- 【Android】数据存储数据库SQLite(之前有看到的一篇关于SQLite文章,简单明了、覆盖较全面适合学习)
- Android四种存储方式 sharedpreference,file,SQlite,contentprovider实现增删改查
- [Android]详解Andorid下SQLite存储方式
- Android四种存储方式 sharedpreference,file,SQlite,contentprovider实现增删改查
- Android数据的四种存储方式SharedPreferences、SQLite、Content Provider和File (二) —— SQLite