什么是SQLite
SQLite数据库储存是Android系统提供的数据储存方式之一,是专门为嵌入式设备设计的一款轻量级数据库。SQLite占用的资源非常低,在嵌入式设备中,只需要几百K的内存。它支持标准的SQL语法,遵循数据库得到ACID事务。不予要安装,SQLite不需要安装,不需要用户名密码就可以使用。
SQLite的用法
1.创建一个类继新建一个类继承SQLiteOpenHelper
2.实现构造方法
3.重写onCreate方法
4.重写onUpgrade方法
5.实例化SQLiteOpenHelper的句子类对象
6.调用getReadableDatabase方法
创建数据库代码
布局
<?xml version="1.0" encoding="utf-8"?>
<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.example.zhang.sqlite.MainActivity">
<Button
android:id="@+id/bt"
android:layout_width="match_parent"
android:layout_height="100dp" />
</LinearLayout>
public class MainActivity extends AppCompatActivity {
private ass as;
private Button bt;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
as = new ass(this, "de", null, 1);//版本号传入2时,表示升级才可调用更新,以此类推,每更新一次自加1
bt = findViewById(R.id.bt);
bt.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
as.getWritableDatbase();//创建数据库
}
});
}
}
public class ass extends SQLiteOpenHelper { //建一个数据库类,继承SQLiteOpenHelper抽象类
private Context context;
public static final String CREATE_BOOK="create table book("+"id integer primary key autoincrement," +
"name text," + //创一个数据库表
"ban text," +
"nian integer4)";
public ass(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
super(context, name, factory, version);
this.context=context; //通过构造方法引入Activity的类名,用于下面的Toast的提示
}
@Override
public void onCreate(SQLiteDatabase db) { //onCreate方法只在创建时会调用一次,且仅此一次,除非更
//新数据库时会再次调用
db.execSQL(CREATE_BOOK); //在onCreate方法中将数据列表创建好
Toast.makeText(context,"dsfsdsdgsg",Toast.LENGTH_LONG).show();
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("drop table if exists book");
onCreate(db);
} //此方法升用于数据库升级更新}
数据库增删改查
public class Main3Activity extends AppCompatActivity {
private EditText e1;
private EditText e2;
private EditText e3;
private jichu ji;
private Button b1;
private Button b2;
private Button b3;
private Button b4;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main3);
BinID();
ji=new jichu(Main3Activity.this,"aqws",null,1);//调用构造方法向数据库传参
ji.getWritableDatabase(); //创建数据库
//从这开始实现数据增删改查,每个按钮,实现一个功能
b1.setOnClickListener(new View.OnClickListener() {//****添加数据***
@Override
public void onClick(View v) {
SQLiteDatabase as=ji.getWritableDatabase();//在这些功能中都要实现SQLiteDatabase对象
ContentValues values=new ContentValues();
//这里使用的ContentValues,也是可以用Map的,而且Map能用的数据类型更多,那为何还要用ContentValues呢,
//其实不用Map是为了防止Map向数据库中随意添加各种类型的数据。
values.put("name",e1.getText().toString());//利用键值向对应项中添加数据
values.put("namew",e2.getText().toString());
as.insert("aqws",null,values); //将数据插入列表中
//第一个参数为列表名,第三个是ContentValues的对象
}
});
b2.setOnClickListener(new View.OnClickListener() {//*****删除数据***
@Override
public void onClick(View v) {
SQLiteDatabase as=ji.getWritableDatabase();
as.delete("aqws","name=?",new String[]{e1.getText().toString()});
//第一个参数是列表名,第二个参数是列表元素,可以用and添加多个来进行筛选,例如可写为"name=? and id>?"
//第三个是在new String[]{}的花括号里添加第二参数对应的值,添加顺序要相同
}
});
b3.setOnClickListener(new View.OnClickListener() {//******更改数据*********
@Override
public void onClick(View v) {
SQLiteDatabase as=ji.getWritableDatabase();
ContentValues values=new ContentValues();
values.put("name",e2.getText().toString());//获取用来替换的数据
// ("name"是数据库字段名
as.update("aqws",values,"name=?",new String[]{e1.getText().toString()});
// 第一个参数是列表名,第二个参数是ContentValues对象,第三个参数是列表元素,即字段名,与删除的方法一样可以
//用and添加多个来进行筛选,例如可写为"name=? and id>?"
//第四个参数是在new String[]{}的花括号里添加第三参数对应的值,注意添加顺序要相同
}
});
b4.setOnClickListener(new View.OnClickListener() {//*****查询数据************
@Override
public void onClick(View v) {
SQLiteDatabase db=ji.getWritableDatabase();
Cursor cursor=db.query("aqws",null,null,null,null,null,null);//用SQLiteDatabase对象调用游标
if(cursor.moveToFirst()){ //用游标来浏览数据库里的数据
do{
String n=cursor.getString(cursor.getColumnIndex("name"));
e3.setText(n);
Toast.makeText(Main3Activity.this,"dfssgsgsg"+n,Toast.LENGTH_SHORT).show();//用Toast来显示
Log.e("hh111q", "onClick: "+n );//用log来显示
}while (cursor.moveToNext());//当游标还可以指向下一个时,执行循环
}cursor.close(); //关掉游标
}
});
}
private void BinID() { //绑定ID
e1=findViewById(R.id.et1);
e2=findViewById(R.id.et2);
b1=findViewById(R.id.b1);
b2=findViewById(R.id.b2);
b3=findViewById(R.id.b3);
e3=findViewById(R.id.et3);
b4=findViewById(R.id.b4);
}
}