使用SqLite操作数据库
第一步:新建一个类继承SQLiteOpenHelper
public class MyDatabase extends SQLiteOpenHelper {
public MyDatabase(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
super(context, name, factory, version);
}
//创建SQL语句
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("create table meno(id integer primary key autoincrement,name varchar(20),age varchar(6))");
}
//升级数据的方法
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
//这里添加了电话的列,记得把数据库的版本加1
db.execSQL("alter table meno add phone varchar(20)");
}
}
MainActivity代码
//实例化数据库
MyDatabase myDatabase = new MyDatabase(this,"meno",null,1);
//如果没有数据库,那么就会创建数据库,有数据库就不会再次创建
SQLiteDatabase db = myDatabase.getWritableDatabase();
//数据库添加数据
//ContentValues对数据进行封装
ContentValues values = new ContentValues();
values.put("name","兔子");
values.put("age",16);
db.insert("meno",null,values);
//数据库更新数据
ContentValues values1 = new ContentValues();
values1.put("name","猫");
db.update("meno",values1,"name=?",new String[]{"兔子"});
//数据库删除数据
db.delete("meno","name=?",new String[]{"猫"});
//数据库查询数据
Cursor cursor = db.query("meno", null, null, null, null, null, null);
if (cursor!=null&&cursor.getCount()>0) {
//遍历查询每一行的数据
while (cursor.moveToNext()) {
String name = cursor.getString(cursor.getColumnIndex("name"));
int age = cursor.getInt(cursor.getColumnIndex("age"));
Toast.makeText(this, name + age, Toast.LENGTH_SHORT).show();
}
}
使用LitePal操作数据库
第一步:配置LitePal
在app/build.gradle文件 在dependencies闭包中添加
由于compile 在Android studio3.2以上将被废弃所以用implementation
dependencies{
implementation 'org.litepal.android:core:1.3.2'
}
第二步创建assets目录和litepal.xml:
在app/src/main创建一个assets目录 然后在assets目录下新建一个litepal.xml文件
编辑litepal.xml
<?xml version="1.0" encoding="utf-8"?>
<litepal>
<dbname value="Meno"></dbname>
<version value="1"></version>
</litepal>
dbname是数据库名
version是版本号
第三步配置LitePalApplication:
<application>
android:name="org.litepal.LitePalApplication"
</application>
第四步开始使用LitePal创建和升级数据库:
创建一个类
public class Meno{
private String name;
private int age;
//生成set和get方法
}
然后再去编辑litepal.xml
<?xml version="1.0" encoding="utf-8"?>
<litepal>
<dbname value="Meno"></dbname>
<version value="1"></version>
<list>
<!--要使用完整的类名-->
<mapping class="com.liny.meno.sql.Meno"/>
</list>
</litepal>
升级数据库
想要再添加一张表或再添加一个列
public calss Student{
private String name;
private int age;
//生成set和get方法
}
再去编辑litepal.xml
<?xml version="1.0" encoding="utf-8"?>
<litepal>
<dbname value="Meno"></dbname>
<version value="2"></version>
<list>
<!--要使用完整的类名-->
<mapping class="com.liny.meno.sql.Meno"/>
<mapping class="com.liny.meno.sql.Student"/>
</list>
</litepal>
将版本号加1
将新的模型类添加到映射模型列表中
Connector.getDatabase();创建数据库的操作
使用LitePal添加数据
使用增删改查必须继承DataSupport
public calss Meno extends DataSupport{
private String name;
private int age;
//生成set和get方法
}
添加数据
Meno meno=new Meno();
meno.setName=("哈哈哈");
meno.setAge=(18);
meno.save();//添加数据
更新数据
Meno meno=new Meno();
meno.setAge(20);
meno.setName("哈哈");
meno.updateAll("id=?", 1);``
id等于多少就去修改对应的那一列
删除数据##
DataSupport.deleteAll(Meno.class,"name=?","哈哈哈");
第一个参数是表名
name等于什么名字就把这一列删除
查询数据##
List<Meno> menos=DataSupport.findAll(Meno.class);
for(Meno meno:menos){
String name=meno.getName();
Int age=meno.getAge();
}
只查询关键字name和age
List<Meno> menos=DataSupport.select("name","age").find(Meno.class)
List<Meno> menos=DataSupport.select("age>?","22").find(Meno.class)