SQLite简介:
SQLite是用C语言写的小型嵌入式关系型数据库.占用资源非常低,在嵌入式设备中,只需要几百K的内存就够了.它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合.安卓系统里自带SQLite数据库.
SQLite支持任意类型的数据,常用的数据类型有:integer(整数)、real(小数)、text(文字)、blob(任意类型)、NULL(空值),我们一般可以不用考虑字段长度.
SQLite支持SQL语句
SQLiteDatabase类应用:
流程(创建数据库和关闭数据库):
一.在内存里创建SQLite数据库
二.在指定路径创建或打开SQLite数据库
三.关闭数据库
代码:
public class SqlDataBsaeActivity extends Activity {
private SQLiteDatabase db; //创建SQLiteDatabase对象
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_sql_data_bsae);
//创建SQLite数据库 注意要加上异常处理
try {
db = SQLiteDatabase.create(null);
}
catch (Exception e){
Toast.makeText(getApplicationContext(),e.getMessage(),Toast.LENGTH_SHORT).show();
}
}
@Override //在关闭页面的时候
protected void onDestroy() {
db.close(); //关闭数据库
super.onDestroy();
}
流程(对SQLite数据库进行增、删、改、查):
一.创建表
二.添加数据
三.删除数据
四.修改数据
五.查询数据
(UI设计:一个功能为一个Button,使用LinearLayout布局,android:orientation="vertical")
代码:
//创建表
public void sqlDataBaseOnClick(View v){
try {
//sql语句:创建一个xueshengbiao 参数:id为INTEGER PRIMARY KEY(整形组键) name 为text类型并且不能为null,chengshi为text类型
String sql = "create table xuesheng(id INTEGER PRIMARY KEY,name text NOT NULL,chengshi text)";
//传入sql语句
db.execSQL(sql);
}catch (Exception e){
Toast.makeText(getApplicationContext(),e.getMessage(),Toast.LENGTH_SHORT).show();
}
//提示
Toast.makeText(getApplicationContext(),"Create Table Success!!",Toast.LENGTH_SHORT).show();
}
//添加数据
public void addDataOnClick(View v){
try{
//sql语句:添加一个数据到xuesheng表 values为数据存入格式,?为转义符
String addSql = "insert into xuesheng(name,chengshi) values(?,?)";
db.execSQL(addSql,new Object[]{"Tom","Shanghai"});
}catch (Exception e){
Toast.makeText(getApplicationContext(),e.getMessage(),Toast.LENGTH_SHORT).show();
}
//提示
Toast.makeText(getApplicationContext(),"Add Data Success!!!",Toast.LENGTH_SHORT).show();
}
//删除数据
public void delDataOnClick(View v){
try{
//sql语句:删除xuesheng里,id为2的数据
String delSql = "delete from xuesheng where id=2";
db.execSQL(delSql);
}catch (Exception e){
Toast.makeText(getApplicationContext(),e.getMessage(),Toast.LENGTH_SHORT).show();
}
//提示
Toast.makeText(getApplicationContext(),"Delete Data Success!!!",Toast.LENGTH_SHORT).show();
}
//更新数据
public void updataDataOnClick(View v){
try{
//sql语句:设置xuesheng表里id为2的数据的name属性为Joy
String updSql = "update xuesheng set name='Joy' where id=2";
db.execSQL(updSql);
}catch (Exception e){
Toast.makeText(getApplicationContext(),e.getMessage(),Toast.LENGTH_SHORT).show();
}
//提示
Toast.makeText(getApplicationContext(),"Updata Data Success!!!",Toast.LENGTH_SHORT).show();
}
//查询
public void selectDataOnClick(View v){
String data = "";
try{
//sql语句查询表xuesheng
//也可以做部分查询 例如查询name "select * from xuesheng where name=?"
//查询张三这个name的数据的属性 Cursor c=shujuku.rawQuery(sql, new Object[]{"张三"});
String selql = "select * from xuesheng";
//查询所有数据,null代表所有数据
Cursor c = db.rawQuery(selql,null);
//移到表的第一行数据
c.moveToFirst();
for(int i = 0; i<c.getCount(); i++){ //循环表的所有行
String id = c.getString(c.getColumnIndex("id")); //获得当前行列名为id的数据
String name = c.getString(c.getColumnIndex("name"));//获得当前行列名为name的数据
String chengshi = c.getString(c.getColumnIndex("chengshi"));//获得当前行列名为chengshi的数据
c.moveToNext(); //移到下一行数据
data += id+" "+name+" "+chengshi+"\n"; //处理得到的数据
}
}catch (Exception e){
Toast.makeText(getApplicationContext(),e.getMessage(),Toast.LENGTH_SHORT).show();
}
//把数据通过消息显示出来
Toast.makeText(getApplicationContext(),data,Toast.LENGTH_SHORT).show();
}