新建一个类,继承SQLiteOpenHelper。
public class MydataBaseHelp extends SQLiteOpenHelper
写一个构造函数
private Context context;//上下文对象
String name;//数据库名称
SQLiteDatabase.CursorFactory factory;//工产
int version;//数据库的版本号(用于判断)
public MydateBaseHelp(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
super(context, name, factory, version);
this.context = context;
this.name = name;
this.factory = factory;
this.version = version;
}
重写两个方法:
//执行一次 没有时创建 有则打开 有变动则更新 调用onUpgrade方法
@Override
public void onCreate(SQLiteDatabase db) {
//创建表 添加属性
String sql = "create table user(_id integer primary key autoincrement,Name varchar(20),Age integer)";
//执行增删改
db.execSQL(sql);
}
//更新数据
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
//增加数据
String sql = "alter table user add sex char(4)";
//执行
db.execSQL(sql);
}
在MainActivity中的操作:
首先 MainActivity 实现一个接口 View.OnClickListener
public class MainActivity extends AppCompatActivity implements View.OnClickListener
增:
1.菜鸟版
//实例化 创建数据库
MydataBaseHelp dbOpenHelper=new MydataBaseHelp(MainActivity.this,"day9",null,1);
//获取数据库的操作类
SQLiteDatabase db = dbOpenHelper.getWritableDatabase();
//数据格式
ContentValues values = new ContentValues();
values.put("Name","红孩儿");
values.put("Age","1800");
//参数一表名 参数二:默认值 参数三:要插入的值
text.setText(db.insert("user",null,values)+"");
2.正常版
//实例化 创建数据库
MydataBaseHelp dbOpenHelper=new MydataBaseHelp(MainActivity.this,"day9",null,1);
//获取数据库的操作类
SQLiteDatabase db = dbOpenHelper.getWritableDatabase();
//插入数据
db .execSQL("insert into User(Name,sex,Age) values('风清扬','男',108)");
改:
1.菜鸟版:
MydataBaseHelp dbOpenHelper6=new MydataBaseHelp(MainActivity.this,"day9",null,2);
SQLiteDatabase db6 = dbOpenHelper6.getWritableDatabase();
//参数一:表名 参数二:要修改的值 参数三:条件 参数四:为条件中的?赋值
int num2=db6.delete("User","name=?",new String[]{"红孩儿"});
text.setText("删除"+num2+"");
2.正常版:
MydataBaseHelp dbOpenHelper7=new MydataBaseHelp(MainActivity.this,"day9",null,2);
SQLiteDatabase db7 = dbOpenHelper7.getWritableDatabase();
String sql="delete from User where name = ? ";
db7.execSQL(sql,new String[]{"红孩儿"});
删
1.菜鸟版:
MydataBaseHelp dbOpenHelper6=new MydataBaseHelp(MainActivity.this,"day9",null,2);
SQLiteDatabase db6 = dbOpenHelper6.getWritableDatabase();
//参数一:表名 参数二:要修改的值 参数三:条件 参数四:为条件中的?赋值
int num2=db6.delete("User","name=?",new String[]{"红孩儿"});
text.setText("删除"+num2+"");
2.正常版:
MydataBaseHelp dbOpenHelper7=new MydataBaseHelp(MainActivity.this,"day9",null,2);
SQLiteDatabase db7 = dbOpenHelper7.getWritableDatabase();
String sql="delete from User where name = ? ";
db7.execSQL(sql,new String[]{"红孩儿"});
查
MydataBaseHelp dbOpenHelper8=new MydataBaseHelp(MainActivity.this,"day9",null,2);
SQLiteDatabase db8=dbOpenHelper8.getWritableDatabase();
//创建集合
ArrayList<Map<String,Object>> list = new ArrayList<>();
//执行查询语句
Cursor cursor = db8.query("user", null, null, null, null, null, null);
//遍历游标
text.setText(cursor.getCount()+"");
while (cursor.moveToNext()){
int id=cursor.getInt(cursor.getColumnIndex("_id"));
String name=cursor.getString(cursor.getColumnIndex("Name"));
int age=cursor.getInt(cursor.getColumnIndex("Age"));
String sex =cursor.getString(cursor.getColumnIndex("sex"));
//创建对象存入集合中
Log.e("###",cursor.getPosition()+" ,"+name);
Map<String,Object> map = new HashMap();
map.put("_id",id);
map.put("name",name);
map.put("age",age);
map.put("sex",sex);
list.add(map);
}
text.setText(list.size()+"");
删除数据库:
MydataBaseHelp dbOpenHelper9=new MydataBaseHelp(MainActivity.this,"day9",null,2);
SQLiteDatabase db9=dbOpenHelper9.getWritableDatabase();
db9.execSQL("delete from user");
事物的处理
try{}catch{}是为了预防报错
事物处理中 数据量大,但是有一条出错 其余的都不会继续
MydataBaseHelp dbOpenHelper10=new MydataBaseHelp(MainActivity.this,"day9",null,2);
SQLiteDatabase db10=dbOpenHelper10.getWritableDatabase();
db10.beginTransaction();//开启事务
try {
for (int i=0;i<1000;i++) {
Log.e("###",i+"");
db10.execSQL("insert into User(Name,sex,Age) values('"+i+"风清扬','男',108)");
}
db10.setTransactionSuccessful();//成功
}catch (Exception e){
e.printStackTrace();
}finally {
db10.endTransaction();//结束事务
db10.close();//关闭
}