数据库

SQL语法结构

创建表

//create
create table users (id integer primary key autoincrement,
                    name text not null,
                    psw text not null,
                    age integer,
                    height real)

删除表

//直接删除
drop table users
//判断存在则删除
drop table if exists users

插入语句

//insert
insert into users (name,psw,age,height) values (" 张三 ","123456",20,1.65)
//省略字段,需要根据类型对号入座的设置值,类型和数量必须要一一对应
insert into users values (2," 令狐冲 ","11111",18,1.75)

删除语句

//条件删除
delete from users where id=2
//删除表中的所有数据
delete from users

修改语句

//update
update users set age=23,psw='111111' where id=4
//基于原来的值更新内容,如所有年龄增长一岁
update users set age=age+1

查询语句

//语句结构
select  字段 from1[, 表 2] [where ...] [group by...] [order by...] [limit...]
//查询所有 ( 所有字段,所有数据 )
select * from users
//查询指定的字段
select id,name,age from users
//带条件
select * from users where age < 25
//多重条件( andornotselect * from users where age >= 20 and age <= 30
//在一个区间之内(包括前后)
select * from users where age between 20 and 30
//多个分支选择 (in)
select * from users where age in (19,35,45)
//模糊查询( _ 匹配单个字符, % 匹配任意字符)
select * from users where name like " 张 _" 查找名字 2 个字, “ 张 ” 开头的
select * from users where name like " 张 %" 查找名字为 " 张 " 开头的所有用户
select * from users where name like "% 三 %" 查找名字中带 " 三 " 字的
//分组 ( 使用 group by 分组,可以用逗号连接多个字段,如果只有单个字段则将会按照该字段列出不重复数据 )
//可以在 group by 之后添加 having 做分组之后的过滤
select * from users where age>=20 group by age,id having height>1.65
//排序 (asc 表示升序默认不写就是升序, desc 表示降序 )
select * from users order by age desc,height asc
//限制数量
select * from users limit 3
//limit 结合 offset 实现任何位置条数读取
select * from users limit 3 offset 2 读取跳过 2 条之后的 3 条
//聚合函数 ( 只能放在 select 或者 group by 以及 having 之后,不能放在 where 之后 )
//统计总数 ——count( 字段 ) count(*) 统计所有数据
select count(*) from users where age=30
//查询各个年龄的数量
select count(*) as c,age from users group by age having c>0
//平均数 avg( 字段 ) —— 字段类型必须是数字形
select avg(age) from users
//最大、最小
select max(age) from users
select min(age) from users

Sqlite

SqliteDatabase :描述 sqlite 数据的类,提供了对数据表进行增删改查的方法
SqliteOpenHelper :可以打开数据文件生成对应的数据库对象

class DbOpenHelper extends SQLiteOpenHelper{
    public DbOpenHelper(Context context) {
        // 第二个参数表示数据库名称,第四个表示数据库版本
        super(context, DB_NAME, null, VERSION);
    }
    // 第一次保存数据时,如果没有数据库文件,则创建数据库文件,创建完毕则调用该方法
    @Override
    public void onCreate(SQLiteDatabase sqLiteDatabase) {
        // 创建日记表
        String sql = "create table diary (id integer primary key autoincrement,
        title text not null,content text not null,time text)";
        sqLiteDatabase.execSQL(sql);
    }
    // 当数据库版本有升级时触发 ( 更新 )
    @Override
    public void onUpgrade(SQLiteDatabase sqLiteDatabase, int oldVersion, int newVersion) {
    }
}

// 获取数据库对象
SQLiteDatabase db = mHelper.getWritableDatabase();
// 组装添加语句
String title = etTitle.getText().toString();
String content = etContent.getText().toString();
String sql = "insert into diary (title,content,time) values
         ('"+title+"','"+content+"','"+System.currentTimeMillis()+"')";
db.execSQL(sql);
使用数据库对象的插入方法来插入数据
ContentValues values = new ContentValues();
values.put("title", titleStr);
values.put("content", contentStr);
values.put("time", String.valueOf(System.currentTimeMillis()));
// 表名,空内容的处理,插入的内容
long rows = db.insert("diary", null, values);
if (rows > 0) {
    Toast.makeText(this, " 添加成功 ", Toast.LENGTH_SHORT).show();
}else{
    Toast.makeText(this, " 添加失败 ", Toast.LENGTH_SHORT).show();
}

//
SQLiteDatabase db = mHelper.getWritableDatabase();
//使用占位符
int r = db.delete("diary", "id=?", new String[]{String.valueOf(d.getId())});
//不使用占位符
int rows = db.delete("diary","id=" + d.getId(), null);

//这里写代码片
values.put("time", String.valueOf(System.currentTimeMillis()));
values.put("title",title);
// 执行更新
SQLiteDatabase db= mHelper.getWritableDatabase();
// 第一个参数表示表名
// 第二个参数表示更新的内容
// 第三个参数表示条件,第四个参数表示条件值 ( 配合第三个参数使用,填充第三个参数中的问号 )
int row = db.update("diary",values,"id=?",new String[]{String.valueOf(diary2Update.getId())});

//数组位置要对应
String[] column = {"id","title","content","time"};
// 查询
// 第一个参数表示表名
// 第二个参数表示查询的字段,如果查询所有可以用 null ,但是在取值时有区别的
// 第三个参数表示条件,第四个参数是表示条件值 ( 配合第三个参数使用,填充第三个参数中的问号 )
// 第五第六个分别表示 group by 和 having
// 第七个表示 order by
Cursor c = db.query("diary",column,null,null,null,null,"id desc");
List<Diary> list = new LinkedList<Diary>();
// 基于默认位置往下移动一次
while(c.moveToNext()){
    // 如果查询的时候字段设置为 null 则需要从表中查找下标
    // int id = c.getInt(c.getColumnIndexOrThrow("id"));
    // 根据查询字段位置获取内容
    int id = c.getInt(0);
    String title = c.getString(1);
    String content = c.getString(2);
    String time = c.getString(3);
    Diary d = new Diary(id,title,content,time);
    list.add(d);
}
// 关闭查询结果
c.close();

JDBC

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值