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略

时间: 2024-08-01 19:32:10

SQLite详解的相关文章

[转]ANDROID开发之SQLite详解

SQLite简介 Google为Andriod的较大的数据处理提供了SQLite,他在数据存储.管理.维护等各方面都相当出色,功能也非常的强大.SQLite具备下列特点: 1.轻量级 使用 SQLite 只需要带一个动态库,就可以享受它的全部功能,而且那个动态库的尺寸想当小. 2.独立性 SQLite 数据库的核心引擎不需要依赖第三方软件,也不需要所谓的“安装”. 3.隔离性 SQLite 数据库中所有的信息(比如表.视图.触发器等)都包含在一个文件夹内,方便管理和维护. 4.跨平台 SQLit

ANDROID开发之SQLite详解

===================== 转自:http://www.cnblogs.com/Excellent/archive/2011/11/19/2254888.html ===================== SQLite简介 Google为Andriod的较大的数据处理提供了SQLite,他在数据存储.管理.维护等各方面都相当出色,功能也非常的强大.SQLite具备下列特点: 1.轻量级 使用 SQLite 只需要带一个动态库,就可以享受它的全部功能,而且那个动态库的尺寸想当小.

Android SQLite详解

在项目开发中,我们或多或少都会用到数据库.在Android中,我们一般使用SQLite,因为Android在android.database.sqlite包封装了很多SQLite操作的API.我自己写了一个Demo来总结SQLite的使用,托管在Github上,大家可以点击下载APK,也可以点击下载源码.Demo截图如下: 在使用SQLite时,我建议先下载一个本地SQLite客户端来验证操作,在本地写的SQL语句运行正确后,再转移到Android中.我用的是SQLite Expert Pers

andriod sqlite 详解转载

SQLite简介 Google为Andriod的较大的数据处理提供了SQLite,他在数据存储.管理.维护等各方面都相当出色,功能也非常的强大.SQLite具备下列特点: 1.轻量级 使用 SQLite 只需要带一个动态库,就可以享受它的全部功能,而且那个动态库的尺寸想当小. 2.独立性 SQLite 数据库的核心引擎不需要依赖第三方软件,也不需要所谓的“安装”. 3.隔离性 SQLite 数据库中所有的信息(比如表.视图.触发器等)都包含在一个文件夹内,方便管理和维护. 4.跨平台 SQLit

IOS 数据存储之 SQLite详解

在IOS开发中经常会需要存储数据,对于比较少量的数据可以采取文件的形式存储,比如使用plist文件.归档等,但是对于大量的数据,就需要使用数据库,在IOS开发中数据库存储可以直接通过SQL访问数据库,也可以通过ORM进行对象关系的映射,当然也可以选择使用第三方框架实现对数据库的操作.在这里,主要来讲解一下第一种方式,SQLite. SQLite 数据库有很多,分为重量级和轻量级两类,移动设备的内存比较小,因此需要选择轻量级的数据库.在移动设备上应用程序开发中使用数据库,比较主流的是SQLite.

iOS SQLite详解

这周比较忙,前几天都加班到11点左右,基本都是到家都是12点左右(稍稍的抱怨一下,免费加班,何为免费,就是任何补偿都没有,例如调休,加班薪,餐补等各项福利,是一点都没有呀)因为App要上线了!App上线,也可以抽出部分时间整理自己的东西啦,准备花一周时间讲述iOS数据存储方式.本篇主要是讲SQLite的使用和封装,读完大约10-15分钟. 一.SQLite概念 SQLite是轻量型关系型数据库(下面将拓展关系型数据库的概念):占用资源非常少:是无类型的数据库(意思是可以保存所有类型的数据)---

Android开发之SQLite数据库详解

Android开发之SQLite数据库详解 请尊重他人的劳动成果,转载请注明出处:Android开发之SQLite数据库详解 http://blog.csdn.net/fengyuzhengfan/article/details/40194393 Android系统集成了一个轻量级的数据库:SQLite, SQLite并不想成为像Oracle.MySQL那样的专业数据库.SQLite只是一个嵌入式的数据库引擎,专门适用于资源有限的设备上(如手机.PDA等)适量数据存取. 虽然SQLite支持绝大

Java连接SQLite数据库详解【转】

1 package com.hedalixin; 2 import java.sql.Connection; 3 import java.sql.DriverManager; 4 import java.sql.ResultSet; 5 import java.sql.Statement; 6 7 /** 8 * @author Chrome 9 * 10 */ 11 public class JavaSqlite { 12 13 /** 14 * @param args 15 */ 16 pu

[Android新手区] SQLite 操作详解--SQL语法

该文章完全摘自转自:北大青鸟[Android新手区] SQLite 操作详解--SQL语法  :http://home.bdqn.cn/thread-49363-1-1.html SQLite库可以解析大部分标准SQL语言.但它也省去了一些特性并且加入了一些自己的新特性.这篇文档就是试图描述那些SQLite支持/不支持的SQL语法的.查看关键字列表. 如下语法表格中,纯文本用蓝色粗体显示.非终极符号为斜体红色.作为语法一部分的运算符用黑色Roman字体表示. 这篇文档只是对SQLite实现的SQ