一.SQLite数据库介绍
1.Android 系统中集成的轻量级的数据库
2.特点:
轻量级 只用一个动态的库, 是以单个文件的形式进行存取
跨平台 支持多个操作系统
零配置 无需安装, 直接使用
嵌入式 内嵌到手机中
3.在程序的内部可以通过数据库的名称访问, 其他应用不能访问
4.路径: data/data/应用程序包名/database/ ****.db
5.存放的类型:
NULL 空值
INTEGER 整型(不用int)
VARCHAR 可变长度的字符数据
TEXT 文本字符串
BOOLEAN 布尔
二.数据库核心类
public class MySqlHelper extends SQLiteOpenHelper {
public MySqlHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
super(context, name, factory, version);
//自带构造
}
@Override
public void onCreate(SQLiteDatabase db) {
//创建表
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
//更新
}
}
(1)定义一个类, 继承SQLiteOpenHelper
(2)重写构造方法 :提供数据库的基本信息 : 上下文对象,数据库名称,Null,数据库的版本号
(3)重写父类的方法:
insert() 插入数据
update() 修改数据
delete() 删除数据
query() 查询数据
三.SQL语句
1.创建表:
create table student(_id integer primary key autoincrement,name varchar(30),age integer);
2.添加数据:insert into student values(null,‘李四,18);
3.修改数据:update student set age=13,where name=李四
4. 查询数据:
select * from student where 字段 = ‘值’
sum(列名) 求和
max(列名) 最大值
min(列名) 最小值
avg(列名) 求平均值
count(列名) 统计记录数
5.删除数据:delete from student where id=1;
四.增删改查
private SQLiteDatabase db;
private Button select;
private Button update;
private Button delete;
private Button insert;
private EditText add;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
MySqlHelper mySqlHelper = new MySqlHelper(this, "user.db", null, 1);
db = mySqlHelper.getReadableDatabase();
// dis();
}
private void dis() {
db.execSQL("insert into user values(null,'李白')");
ContentValues contentValues = new ContentValues();
contentValues.put("name", "帅气");
db.insert("user", null, contentValues);
}
private void initView() {
select = (Button) findViewById(R.id.select);
select.setOnClickListener(this);
update = (Button) findViewById(R.id.update);
update.setOnClickListener(this);
delete = (Button) findViewById(R.id.delete);
delete.setOnClickListener(this);
insert = (Button) findViewById(R.id.insert);
insert.setOnClickListener(this);
add = (EditText) findViewById(R.id.add);
add.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.select:
select();
break;
case R.id.update:
update();
break;
case R.id.delete:
// String sql="delete from user where _id=?";
// db.execSQL(sql,new Object[]{1});
db.delete("user","_id=?",new String[]{"2"});
break;
case R.id.insert:
break;
}
}
private void update() {
// String sql="update user set name=? where _id=?";
// db.execSQL(sql,new Object[]{"李博",1});
ContentValues contentValues = new ContentValues();
contentValues.put("name", "天才");
db.update("user", contentValues, "_id=?", new String[]{"1"});
}
private void select() {
Cursor cursor = db.rawQuery("select * from user", new String[]{});
if (cursor != null) {
while (cursor.moveToNext()) {
String name = cursor.getString(cursor.getColumnIndex("name"));
Toast.makeText(this, name, Toast.LENGTH_SHORT).show();
}
}
cursor.close();
}
带注释的是另一种方法
五 .用事务处理
添加数据
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("create table user(_id integer primary key autoincrement,name varchar(20))");
db.beginTransaction();
for (int i = 0; i <2 ; i++) {
db.execSQL("insert into user values(null,?)",new String[]{"刘红阳"});
}
db.setTransactionSuccessful();
db.endTransaction();
}
把多件事情当做一件事情来处理!