数据库
insert() 插入数据
update() 修改数据
delete() 删除数据
query() 查询数据
代码:
public class SqliteActivity extends AppCompatActivity implements View.OnClickListener {
Button bt_insert,bt_delete,bt_update,bt_query;
SQLiteDatabase database;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_sqlite);
bt_insert=findViewById(R.id.bt_insert);
bt_insert.setOnClickListener(this);
bt_delete=findViewById(R.id.bt_delete);
bt_delete.setOnClickListener(this);
bt_update=findViewById(R.id.bt_update);
bt_update.setOnClickListener(this);
bt_query=findViewById(R.id.bt_query);
bt_query.setOnClickListener(this);
//实例化数据库
MyHepler myHepler = new MyHepler(this);
//获得可读可写的数据库
database = myHepler.getWritableDatabase();
}
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.bt_delete:
delete();
break;
case R.id.bt_insert:
insert();
break;
case R.id.bt_update:
upadte();
break;
case R.id.bt_query:
query();
break;
}
}
private void upadte() {
/**
* @param table 表明
* @param values ContentValues
* @param whereClause 条件
* @param whereArgs 为条件?赋值
* @return 受影响的条数
*/
//update student set age=age+1 where age>18
ContentValues contentValues = new ContentValues();
contentValues.put("age","20");
int num=database.update("student",contentValues,"age>?",new String[]{"100"});
Toast.makeText(this, ""+num, Toast.LENGTH_SHORT).show();
}
private void insert() {
/**
* @param table 表明
* @param nullColumnHack 如果没有赋值给默认值
* @param values ContentValues对象 存储你要插入的数据
* 返回值 long 代表你插入的这一条是数据库中第几条
*/
ContentValues contentValues = new ContentValues();
contentValues.put("name","卢天值");
contentValues.put("age","89");
long num = database.insert("student", null, contentValues);
if(num>0){
Toast.makeText(this, "成功", Toast.LENGTH_SHORT).show();
}
}
private void delete() {
//参数一 表明 参数二 条件 参数三 为条件中的?赋值
//String table, String whereClause, String[] whereArgs
//delete from student where age=18;
int num = database.delete("student", "age=?", new String[]{"18"});//返回值是成功删除了多少条
Toast.makeText(this, "成功删除了"+num, Toast.LENGTH_SHORT).show();
}
private void query() {
// //参数一 sql语句 参数二 为sql语句?赋值
// Cursor cursor = database.rawQuery("select * from student where age>?", new String[]{"18"});
// while(cursor.moveToNext()){
// int id=cursor.getInt(cursor.getColumnIndex("id"));
// String name = cursor.getString(cursor.getColumnIndex("name"));
// int age=cursor.getInt(cursor.getColumnIndex("age"));
// Log.i("ytx", "query: "+id+":"+name+":"+age);
// }
/**
* @param table 表名
* @param columns 列数 String[]
* @param selection 条件
* @param selectionArgs 为条件中?赋值 String[]
* @param groupBy 分组
* @param having 分组之后筛选
* @param orderBy 排序
*/
//select name from student where age>18 order by age desc;
Cursor cursor = database.query("student", null, "age>?", new String[]{"18"}, null, null, "age desc");
while(cursor.moveToNext()){
int id=cursor.getInt(cursor.getColumnIndex("id"));
String name = cursor.getString(cursor.getColumnIndex("name"));
int age=cursor.getInt(cursor.getColumnIndex("age"));
Log.i("ytx", "query: "+id+":"+name+":"+age);
}
}
}
public void insert(View view) {
MyHelper dbOpenHelper=new MyHelper(this);
SQLiteDatabase db = dbOpenHelper.getWritableDatabase();
//方式一:
db.execSQL("insert into User(Name,Sex,Age) values('尹志强','男',18)");
//方式二:
//参数一表名 参数二:默认值 参数三:要插入的值
ContentValues values = new ContentValues();
values.put("Name","殷志强");
values.put("Sex","男");
values.put("Age","18");
db.insert("User",null,values);
}
//TODO:修改数据
public void updateData(View view) {
MyHelper dbOpenHelper=new MyHelper(this);
SQLiteDatabase db = dbOpenHelper.getWritableDatabase();
//方式一:
db.execSQL("update User set Age = 3 where name=?",new String[]{"尹志强"});
//方式二:参数一:表名 参数二:要修改的值 参数三:条件 参数四:为条件中的?赋值
ContentValues values = new ContentValues();
values.put("Age","3");
int num=db.update("User",values,"name=?",new String[]{"尹志强"});
}
//TODO:删除数据
public void deleteData(View view) {
MyHelper dbOpenHelper=new MyHelper(this);
SQLiteDatabase db = dbOpenHelper.getWritableDatabase();
//方式一:
String sql="delete from User where name = ? ";
db.execSQL(sql,new String[]{"张磊"});
//方式二:参数一:表名 参数二:要修改的值 参数三:条件 参数四:为条件中的?赋值
ContentValues values = new ContentValues();
values.put("Age","3");
int num=db.update("User",values,"name=?",new String[]{"尹志强"});
}
//TODO:查询数据
public void query1(View view) {
//创建一个数据库
MyHelper dbOpenHelper=new MyHelper(this);
SQLiteDatabase db = dbOpenHelper.getWritableDatabase();
//方式一
//Cursor cursor = db.rawQuery("select * from User",null);
//方式二
Cursor cursor=db.query("User",null,null,null,null,null,null);
//循环输出
while (cursor.moveToNext())
{
//cursor.getColumnIndex("Name") 通过列名 获取所在列的编号
//cursor.getString(列的编号); 通过列的编号, 得到该列的数据
String Name = cursor.getString(cursor.getColumnIndex("Name"));
String Sex = cursor.getString(cursor.getColumnIndex("Sex"));
int Age = cursor.getInt(cursor.getColumnIndex("Age"));
Log.i("yaotianxue","姓名: " + Name +", 性别: "+ Sex + ", 年龄 : "+ Age);
}
}
特点:
轻量级 只用一个动态的库, 是以单个文件的形式进行存取
跨平台 支持多个操作系统
零配置 无需安装, 直接使用
嵌入式 内嵌到手机中
SQL语句复习:
1.创建表:
create table student(_id integer primary key autoincrement,name varchar(30),age integer,address varchar(30));
2.添加数据:insert into student values(null,‘要甜雪’,18,‘北京市海淀区’);
3.修改数据:update student set age=13,address=‘河北省沧州市’ where name=‘要甜雪’;
4. 查询数据:
select * from student where 字段 = ‘值’
模糊查询: select * from 表名 where name like ‘%小%’
select * from student order by age desc 降序查询
sum(列名) 求和
max(列名) 最大值
min(列名) 最小值
avg(列名) 求平均值
count(列名) 统计记录数
5.删除数据:delete from student where id=12;
事务:
SQLiteDatabase db = myHepler.getWritableDatabase();
db.beginTransaction();//开启事务
try {
for (int i=0;i<1000;i++) {
db.execSQL(“insert into 表名 (字段名) values(值)”);
}
db.setTransactionSuccessful();//成功
}catch (Exception e){
e.printStackTrace();
}finally {
db.endTransaction();//结束事务
db.close();//关闭
}
存放的类型:
NULL 空值
INTEGER 整型(不用int)
VARCHAR 可变长度的字符数据
TEXT 文本字符串
BOOLEAN 布尔
DATE
TIME