首先定义Sqlite帮助类 DBHelperSqlite
public class DBHelperSqlite extends SQLiteOpenHelper {
private static final String sql = "create table info(_id integer primary key autoincrement,tram varchar(20),humi varchar(20))";
public DBHelperSqlite(Context context) {
super(context,"WuLian.db",null,1);//数据库版本改变,版本号version做出改变
}
/**
* db.execSQL(sql);创建表
* @param db
*/
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(sql);
}
/**
* 数据库版本跟新
* @param db
* @param oldVersion 旧的数据库版本
* @param newVersion 新的数据库版本
*/
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
//向某表添加XX字段
//db.execSQL("alter table 表名(info) add 字段名 类型(varchar(20))");
}
}
这里我们创建了一个info表,含有三个字段,_id(integer类型,主键,自动增长,),tram(温度),humi(湿度);
接下来创建操作数据库的工具类(含有增删改查)InfoDao
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
/**
* Created by Administrator on 2017/11/4.
*/
public class InfoDao {
private DBHelperSqlite dbHelperSqlite;
public InfoDao(Context context){
dbHelperSqlite = new DBHelperSqlite(context);
}
/**
*添加
* @param bean
* @return
*/
public boolean add(InfoBean bean){
SQLiteDatabase db = dbHelperSqlite.getReadableDatabase();
//使用map封装的对象,用来存放值
ContentValues values = new ContentValues();
values.put("tram",bean.tram);
values.put("humi",bean.humi);
//table 表名,nullColumnHack:可以为为空,标示添加一个空行,value:数据一行的值,返回值:代表添加这个新行的Id。-1代表添加失败
long result = db.insert("info",null,values);
db.close();
if(result!=-1){
//-1代表添加失败
return true;
}else{
return false;
}
}
/**
* 删除
* @param _id
* @return
*/
public int del(String _id){
SQLiteDatabase db = dbHelperSqlite.getReadableDatabase();
//table:表名,whereClause:删除条件,whereArgs:条件的占位符参数
int result = db.delete("info","_id = ?",new String[]{_id});
db.close();
return result;
}
/**
* 修改
* @param bean
* @return 成功更新多少行
*/
public int update(InfoBean bean){
SQLiteDatabase db = dbHelperSqlite.getReadableDatabase();
ContentValues values = new ContentValues();
values.put("tram",bean.tram);
values.put("humi",bean.humi);
int result = db.update("info",values,"_id = ?",new String []{bean._id});
db.close();
return result;
}
/**
* 一般查询不用用语句,上面的方法不适合多表操作,查询时用sql语句
* @param _id
*/
public void query(String _id){
SQLiteDatabase db = dbHelperSqlite.getReadableDatabase();
Cursor cursor = db.rawQuery("select tram,humi from info where _id = ?",new String[]{_id});
if(cursor != null && cursor.getCount() > 0){
//判断cursor中是否存在数据
while (cursor.moveToNext()){
String tram = cursor.getString(0);
String humi = cursor.getString(1);
System.out.println("_id:"+_id+";name:"+tram+";humi:"+humi);
}
cursor.close();
}
db.close();
}
}
InfoDao里面拥有增加,删除,修改,和查询,查询使用的sql语句。前三种自带返回值,可以判断是否添加,删除和修改多少行
这里我们需要创建一个存放的InfoBean的类
public class InfoBean {
public String _id;
public String tram;
public String humi;
}
接下来在main.xml里面调用就行了
InfoDao infoDao = new InfoDao(mContext);
switch (group.getCheckedRadioButtonId()){
case R.id.rbtn1:
InfoBean infoBean = new InfoBean();
infoBean.tram = "28";
infoBean.humi = "30";
boolean result = infoDao.add(infoBean);
if(result){
System.out.println("添加成功");
}else{
System.out.println("添加失败");
}
break;
case R.id.rbtn2:
int lin = infoDao.del("1");
System.out.println("删除了"+lin+"行");
break;
case R.id.rbtn3:
InfoBean infoBean1 = new InfoBean();
infoBean1._id = "1";
infoBean1.tram = "2";
infoBean1.humi = "2";
int update = infoDao.update(infoBean1);
System.out.println("修改了:"+update+"行");
break;
case R.id.rbtn4:
infoDao.query("1");
break;
}
}
//具体需要根据自己所需修改,
结果在LogCat里面可已看见,查出来对象也可以添加到listview显示,下一篇会给大家写出来。
传统的语句增删改也是可以的,这里用到自带方法提供返回值,有利于直接观察。