SQLite详解
一、新建SQLite操作类(继承SQLiteOpenHelper)
public class SQLiteTest extends SQLiteOpenHelper {
final static String DB_NAME = "test.db";//数据库名
private int version = 1;//数据库版本名
public SQLiteTest(Context context) {//当在别处调用时,只要传上下文就行了
super(context, DB_NAME, null, 1);
} @Override
public void onCreate(SQLiteDatabase db) {
//建表
String sql = "create table if not exists students(" +
"s_id integer primary key autoincrement," +
"s_name varchar(30)," +
"s_sex integer," +
"s_age integer)";
db.execSQL(sql);
} @Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// 升级数据库
db.execSQL("drop table if exeits students");
this.onCreate(db); } }
二、新建对象类(比如是学生数据库就新建学生类)
注意点:get和set方法、构造方法
三、对象操作类
public class StudentDao {
private Context context;
SQLiteTest db ;
SQLiteDatabase sb;
public StudentDao(Context context) {
super();
this.context = context;
db = new SQLiteTest(context);
sb = db.getWritableDatabase();
}
//添加数据
public void addStudent(Student s){
String sql = "insert into students values(null,?,?,?)";
sb.execSQL(sql,new Object[]{s.getS_name(),s.getS_sex(),s.getS_age()});
}
//删
public void delStudent(int id){
String sql = "delete from students where s_id=?";
sb.execSQL(sql,new Object[]{id});
}
//改
public void updateStudent(Student s){
String sql = "update students set s_name=?,s_sex=?,s_age=? where s_id=?)";
sb.execSQL(sql,new Object[]{s.getS_name(),s.getS_sex(),s.getS_age(),s.getS_id()});
}
//查
public List<Student> getAllStudent(){
List<Student> list = new ArrayList<Student>();
Student s;
String sql = "select * from students";
//Cursor邮标
Cursor c = sb.rawQuery(sql, new String[]{});
while (c.moveToNext()) {
int id = c.getInt(c.getColumnIndex("s_id"));
int sex = c.getInt(c.getColumnIndex("s_sex"));
String showSex;
if(sex==0){
showSex="女";
}else {
showSex="男";
}
int age = c.getInt(c.getColumnIndex("s_age"));
String name = c.getString(c.getColumnIndex("s_name")); s = new Student(id, name, age, showSex);
list.add(s);
} return list; }
}
五、在Activity中操作它:
private Button btn1;
ListView lv;
StudentDao sd;
List<Student> list;
int sid; protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
init(); } public void init() {
sd = new StudentDao(MainActivity.this);
list = sd.getAllStudent();
btn1 = (Button) findViewById(R.id.add);
lv = (ListView) findViewById(R.id.lv_student);
lv.setAdapter(adapter);
LongClick();
} public void LongClick() {
lv.setOnItemLongClickListener(new OnItemLongClickListener() { @Override
public boolean onItemLongClick(AdapterView<?> parent, View view,
int position, long id) {
// TODO Auto-generated method stub
sid = list.get(position).getS_id();
AlertDialog.Builder confirm = new AlertDialog.Builder(
MainActivity.this);
confirm.setTitle("删除确认");
confirm.setMessage("你确认要删除此信息吗?");
confirm.setNegativeButton("否", new OnClickListener() { @Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub }
});
confirm.setPositiveButton("是", new OnClickListener() { @Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub sd.delStudent(sid);
init();
}
});
confirm.setCancelable(false);
confirm.show();
return true;
} });
} public void addStu(View v) { Intent intent = new Intent();
intent.setClass(MainActivity.this, NewStuActivity.class);
startActivity(intent);
} BaseAdapter adapter = new BaseAdapter() {
@Override
public View getView(int position, View convertView, ViewGroup parent) {
convertView = View.inflate(MainActivity.this, R.layout.student,
null);
TextView et_id = (TextView) convertView.findViewById(R.id.tv_id);
TextView et_name = (TextView) convertView
.findViewById(R.id.tv_name);
TextView et_sex = (TextView) convertView.findViewById(R.id.tv_sex);
TextView et_age = (TextView) convertView.findViewById(R.id.tv_age); et_id.setText(list.get(position).getS_id() + "");
et_name.setText(list.get(position).getS_name());
et_sex.setText(list.get(position).getShowSex());
et_age.setText(list.get(position).getS_age() + "");
return convertView;
} @Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
} @Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return list.get(position);
} @Override
public int getCount() {
// TODO Auto-generated method stub
return list.size();
}
};
xml略
SQLite详解的更多相关文章
- Android SQlite详解
在项目开发中,我们或多或少都会用到数据库.在Android中,我们一般使用SQLite,因为Android在android.database.sqlite包封装了很多SQLite操作的API.我自己写 ...
- iOS SQLite详解
这周比较忙,前几天都加班到11点左右,基本都是到家都是12点左右(稍稍的抱怨一下,免费加班,何为免费,就是任何补偿都没有,例如调休,加班薪,餐补等各项福利,是一点都没有呀)因为App要上线了!App上 ...
- IOS 数据存储之 SQLite详解
在IOS开发中经常会需要存储数据,对于比较少量的数据可以采取文件的形式存储,比如使用plist文件.归档等,但是对于大量的数据,就需要使用数据库,在IOS开发中数据库存储可以直接通过SQL访问数据库, ...
- [转]ANDROID开发之SQLite详解
SQLite简介 Google为Andriod的较大的数据处理提供了SQLite,他在数据存储.管理.维护等各方面都相当出色,功能也非常的强大.SQLite具备下列特点: 1.轻量级 使用 SQLit ...
- SQLite详解,案例,手册
SQLite 存储类型 1.NULL 2.INTEGER 3.REAL 4.TEXT 5.BLOB 创建表 CREATE TABLE COMPANY( ID INT PRIMARY KEY NOT N ...
- ANDROID开发之SQLite详解
本文转自:http://www.cnblogs.com/Excellent/archive/2011/11/19/2254888.html
- [Android新手区] SQLite 操作详解--SQL语法
该文章完全摘自转自:北大青鸟[Android新手区] SQLite 操作详解--SQL语法 :http://home.bdqn.cn/thread-49363-1-1.html SQLite库可以解 ...
- windows phone 8.1开发SQlite数据库操作详解
原文出自:http://www.bcmeng.com/windows-phone-sqlite1/ 本文小梦将和大家分享WP8.1中SQlite数据库的基本操作:(最后有整个示例的源码)(希望能通过本 ...
- C#操作SQLite方法实例详解
用 C# 访问 SQLite 入门(1) CC++C#SQLiteFirefox 用 C# 访问 SQLite 入门 (1) SQLite 在 VS C# 环境下的开发,网上已经有很多教程.我也是从 ...
随机推荐
- 磁盘io负载查看
转自:http://blog.csdn.net/i_am_jojo/article/details/7698458 为了方便各位和自己今后遇到此类问题能尽快解决,我这里将查看linux服务器硬盘IO访 ...
- 在struts里使用Kindeditor注意事项
struts配置文件里 <filter-mapping> <filter-name>struts2</filter-name> ...
- MySQL半同步复制的安装和配置
(1)检查master/slave是否支持动态加载插件 > show variables like 'have_dynamic_loading'; +---------------------- ...
- Codeforce Round #225 Div2
这回的C- -,弄逆序,我以为要弄个正的和反的,没想到是等价的,弄两个还是正确的,结果我又没注意1和0只能指1个方向,结果弄了4个,取了4个的最小值就错了,自己作死没弄出来...,后面又玩去了...哎 ...
- 树形DP(01组合背包The Ghost Blows Light HDU4276)
题意:有n个房间,之间用n-1条道路连接,每个房间都有一个定时炸弹,在T时间后会一起爆炸,第i个房间有pi价值的珠宝,经过每条道路都需要花费一定的时间,一个人从1房间开始 ,从n房间出去,保证再不炸死 ...
- nyist 604 小明的难题
http://acm.nyist.net/JudgeOnline/problem.php?pid=604 小明的难题 时间限制:1000 ms | 内存限制:65535 KB 难度:1 描述 ...
- C++之路进阶——codevs1285(宠物收养所)
1285 宠物收养所 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题目描述 Description 最近,阿Q开了一间宠物收养所.收养所提供两种服 ...
- html5新增全局属性
data-* 如:data-type,data-role等 hidden <div hidden></div> 隐藏该div spellcheck <textarea ...
- XMLHttpRequest Level2实现跨域
Html5提供的XMLHttpRequest Level2已经实现的跨域访问以及一些新功能 1.ie10以下版本不支持 2.在服务器端做一些小改动即可: header("Access-Con ...
- css 标签 清除浮动
.clearfloat:after{content: "";clear:both;display: block;}