是安卓提供的一种轻量级的数据库(不需安装的内置数据库),是一种数据存储方式之一,一般用于数据量大,数据结构复杂的情况下
text 文本型/字符型
integer 整型,自增长,主键
real 浮点型
例如创建一个student表格
create table Student
(
Id integer primary key(主键) autoincrement(自增长)no null,
Name text(50),
Height real,
age Integer
);
1、SQLiteOpenHelper类:
2、SQLiteOpenHelper构造方法:
1.父类中未提供默认构造方法,必须显示调用父类的构造方法
2. 需要传递创建的数据库名称以及数据库版本号
构造方法参数:
SQLiteOpenHelper(Context context,String name,CursorFactory factory,int version)
3、SQLiteOpenHelper的常用方法:
oncreate方法
onUpgrade方法
4、SQLiteDatabase对象的方法:
新建一个student表,插入数据,显示数据
步骤:
新建类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});
}