Android学习四:数据库操作
1前言
android中使用SQLite作为数据库,在进行相关的开发的时候不需要导入包。SQLite起符合SQL标准,也有自己的一些特性,是一个轻量级的数据库。
2代码
简单的数据库类封装
package org.tonny.utils; import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper; public class DBHelper extends SQLiteOpenHelper {
public DBHelper(Context context) {
/**
* students.db 数据库的名字 ;null 表示使用默认的游标工厂 ;1 表示一开始的版本,建议设置为1
*/
super(context, "sutdents.db", null, 1);
} @Override
public void onCreate(SQLiteDatabase db) {
// 该方法在第一次创建数据库的时候被调用
// 因此可以在这个地方创建表之类的操作
db.execSQL("CREATE TABLE student(id INTEGER PRIMARY KEY AUTOINCREMENT, name VARCHAR(20))");
} @Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// 修改数据库的版本会触发此函数
// 在这里可以添加新的表或者修改表的字段
}
}
模型对象
package org.tonny.utils; public class Student {
private int id;
private String name; public Student() { } public Student(int id, String name) {
this.id = id;
this.name = name;
} public int getId() {
return id;
} public void setId(int id) {
this.id = id;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
}
}
控制逻辑
package org.tonny.utils; import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase; public class StudentService { private DBHelper dbHelper = null; public StudentService(Context context) {
this.dbHelper = new DBHelper(context);
} public void insert(Student stu) {
// 内部有緩存功能,使用的是同一個句柄,如果数据库满了,则返回一个只读的句柄
SQLiteDatabase db = dbHelper.getWritableDatabase();
// 使用占位符號‘?’,防止特殊字符
db.execSQL("INSERT INTO student VALUES(?,?)",
new Object[] { stu.getId(), stu.getName() });
} public void delete(Integer id) {
SQLiteDatabase db = dbHelper.getReadableDatabase();
db.execSQL("DELETE FROM student WHERE id = ?",
new String[] { String.valueOf(id) });
} public void update(Student stu) {
SQLiteDatabase db = dbHelper.getWritableDatabase();
db.execSQL("UPDATE student SET name = ? WHERE id = ?", new String[] {
stu.getName(), String.valueOf(stu.getId()) });
} public Student query(Integer id) {
SQLiteDatabase db = dbHelper.getReadableDatabase();
String sql = "SELECT * FROM student WHERE id = ?";
Cursor cursor = db.rawQuery(sql, new String[] { String.valueOf(id) });
if (cursor.moveToFirst()) {
int stuId = cursor.getInt(cursor.getColumnIndex("id"));
String stuName = cursor.getString(cursor.getColumnIndex("name"));
return new Student(stuId, stuName);
}
return null;
}
}
3总结
数据库的操作都差不多,就这些吧,还有的其他功能等我回头再完善吧。
Android学习四:数据库操作的更多相关文章
- android中的数据库操作(转)
android中的数据库操作 android中的应用开发很难避免不去使用数据库,这次就和大家聊聊android中的数据库操作. 一.android内的数据库的基础知识介绍 1.用了什么数据库 an ...
- android中的数据库操作(SQLite)
android中的数据库操作 android中的应用开发很难避免不去使用数据库,这次就和大家聊聊android中的数据库操作. 一.android内的数据库的基础知识介绍 1.用了什么数据库 an ...
- PHP学习之-数据库操作
PHP学习之-数据库操作 1.PHP支持那些数据库 PHP通过安装相应的扩展来实现数据库操作,现代应用程序的设计离不开数据库的应用,当前主流的数据库有MsSQL,MySQL,Sybase,Db2,Or ...
- Android中SQLite数据库操作(1)——使用SQL语句操作SQLite数据库
下面是最原始的方法,用SQL语句操作数据库.后面的"Android中SQLite数据库操作(2)--SQLiteOpenHelper类"将介绍一种常用的android封装操作SQL ...
- 我的Android六章:Android中SQLite数据库操作
今天学习的内容是Android中的SQLite数据库操作,在讲解这个内容之前小编在前面有一篇博客也是讲解了SQLite数据库的操作,而那篇博客的讲解是讲述了 如何在Window中通过DOM来操作数据库 ...
- android中的数据库操作
如何在android中调用数据库资源 在android中主要有两种方法来实现对数据库的访问,一种是adb shell方式,另一种是通过相关的android 的java类来间接的对数据库来进行操作.其中 ...
- PHP学习之数据库操作
PHP数据库操作: 一.连接数据库 mysql_connect() 例:$link=mysql_connent("localhost","root"," ...
- java EE学习之数据库操作
jdbc开发流程 注册驱动 建立连接(Connection) 创建运行SQL的语句(Statement) 运行语句 处理运行结果(ResultSet) 释放资源 注冊驱动有三种方式: Class.fo ...
- ThinkPHP5.1学习笔记 数据库操作
数据库 参见<Thinkphp5.1完全开发手册>学习 Mirror王宇阳 数据库连接 ThinkPHP采用内置抽象层对数据库操作进行封装处理:且基于PDO模式,可以适配各种数据库. 数据 ...
- spring学习之三 数据库操作jdbcTemplate
概念 jdbcTemplate就Spring对数据库持久化技术的实现,通过它可以对数据库进行CRUD等操作. JDBCTemplate和代码实现 public void jdbcadd() { Dri ...
随机推荐
- (九)errno和perror、标准IO
3.1.6.文件读写的一些细节3.1.6.1.errno和perror(1)errno就是error number,意思就是错误号码.linux系统中对各种常见错误做了个编号,当函数执行错误时,函数会 ...
- 【Asp.net之旅】--数据绑定控件之Repeater
http://blog.csdn.net/zhang_xinxiu/article/details/21872433
- MDK的一些设置(尤其是部分代码无法断点问题的解决)
转自http://www.cnblogs.com/worldsing/p/3412323.html
- Python之路 day2 初识字典
#Author:ersa ''' key-value 键值对 字典是无序的,不需要下标,有key 字典的查找.修改.添加.判断.删除 ''' info = { 'stu1101': "Ten ...
- javascript复习总结
改变HTML内容:document.getElementById(id).innerHTML = new HTML; 改变HTML属性:document.getElementById(id).inne ...
- C++中 接口的定义 COM
首先定义一个虚基类的接口,其中包含虚函数AddRef Release QueryInterface,(MFC 类IUnKnown unknwn.h)分别是增加减去引用计数和查询接口然后定义一个实现类, ...
- PHP判断变量是否为整型
1.使用is_int() 2.使用is_numeric() 两个函数的区别,当变量为'1'时, is_int()的返回值为false, is_numeric()的返回值为true 当变量为1时, 两个 ...
- Linux下文件和目录的相关操作
文件和目录的操作命令,按以下思路进行整理,感觉更便于记忆和使用 1.创建一个二进制文件 touch f1 2.向文件中写入数据 echo "hello" >> f1 e ...
- HttpCache ETag与Last-Modified与Expires
Last-Modified 是检查一个资源最后修改时间.如果时间过期了则返回资源内容.如果没过期,返回304.当Last-Modified更新了,但是资源本质上没有更新,比如资源是A,Last-Mod ...
- QML的一些基础的区分
什么时候用Item什么时候用Rectangle? 什么时候用Row什么时候用RowLayout? 这2个问题经常会让人迷糊. 什么时候用Item,就是你要做一个组件,这个组件是一个复合的组件,组件有部 ...