Android中SQLite数据库小结

 Android提供了一个名为SQLiteDatabase的类,该类封装了一些操作数据库的API,使用该类可以完成对数据进行添加(Create)、查询(Retrieve)、更新(Update)和删除(Delete)操作(这些操作简称为CRUD)
  SQLite 目前支持 NULL,INTEGER,REAL(浮点数字),TEXT,BLOB(二进制文本)这5中数据类型。
  SQLite 的数据库文件默认位于/data/data/package-name/databases 目录下。
  创建一个数据库,首先要实现SQLiteOpenHelper的子类。创建MySqlHelper.java然后让该类实现SQLiteOpenHelper这个抽象类。
package com.alpha.sqlite;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;
public class MySqlHelper extends SQLiteOpenHelper {
public MySqlHelper(Context context, String name, CursorFactory factory,
int version) {
super(context, name, factory, version);
// TODO Auto-generated constructor stub
}
@Override
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
//创建一个数据库及表格 3个字段如下
//primary key 字段为主键 主键:表中经常有一个列或列的组合,其值能唯一地标识表中的每一行。这样的一列或多列称为表的主键
db.execSQL("create table mytable(id integer primary key autoincrement,name text,age text)");
}
@Override
public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) {
// TODO Auto-generated method stub
}
}
  上述代码成功的创建了 SQLiteOpenHelper 的子类 MySqlHelper 然后分别实现了其成员方法 在onCreate方法中 初始化数据库及字段。
private MySqlHelper mysql;
private SQLiteDatabase db;
mysql=new MySqlHelper(MainActivity.this,"mydb",null,1);
db=mysql.getReadableDatabase(); //推荐使用此种方法打开
  getReadableDatabase()方法创建的数据库首先以读写方式打开数据库,如果用户来存储数据库的磁盘空间已经满了,则会打开失败,然后重新以只读方式打开。
  getWritableDatabase()方法创建的数据库首先以读写方式打开数据库,如果用户来存储数据库的磁盘空间已经满了,则会报错。
  因此,建议用getReadableDatabase()来创建数据库的实例

 向数据库中增加数据:两种方法
  第一种用系统提供的API函数添加
ContentValues cv=new ContentValues();
//cv.put("id",1); //id是主键 自增长的 可以不赋值
cv.put("name","上帝");
cv.put("age","27");
db.insert("mytable",null,cv);
db.close();
  第二种方法用数据库语句
  db.execSQL("insert into mytable(name,age) values(?,?)",new Object[]{"上帝","27"});
  db.close();
  两种方法都可以
  删除数据两种方法
  第一种方法
  db.execSQL("delete from mytable where id=2"); //删除id=2的那一行
  db.execSQL("delete from mytable where name=?", new Object[]{"上帝"}); //删除符合字段name=上帝的所有行
  第二种方法
  db.delete("mytable",null,null); //删除数据表里所有的数据
  db.delete("mytable","id=?",new String[]{"2"}); //删除数据表mytable中字段 id=2的一整行
  修改数据两种方法
  第一种方法
  db.execSQL("update mytable set name='神',age='23' where id=2"); //注意此处id位 主键 不可修改
  //db.execSQL("update mytable set name='艾尼路',age='25' where name=?",new Object[]{"上帝"});
  第二种方法
ContentValues cv=new ContentValues();
cv.put("name","艾斯");
cv.put("age","21");
db.update("mytable",cv,"id=?",new String[]{"5"});
  查询数据库
Cursor cursor=db.query("mytable",new String[]{"id","name","age"},null,null,null,null,null);
while(cursor.moveToNext()) //指向下一行
{
int idindex=cursor.getColumnIndex("id");
int id=cursor.getInt(idindex);
int nameindex=cursor.getColumnIndex("name");
String name=cursor.getString(nameindex);
int ageindex=cursor.getColumnIndex("age");
String age=cursor.getString(ageindex);
String result=id+" "+name+" "+age;
Log.i("result",result); //打印日志
}
  打印的日志如下
  所有对数据库的操作最后都要
db.close();
最新内容请见作者的GitHub页:http://qaseven.github.io/

时间: 2024-08-19 22:50:40

Android中SQLite数据库小结的相关文章

android中sqlite数据库的更新问题

问题描述 android中sqlite数据库的更新问题 当我们的apk中的数据库更新的时候,我们会在onUpgrade()中修改版本号,这样用户 升级的时候就可以更新数据库了,但是如果此时新的用户安装此应用的话,那不是还是以前的旧版本的数据库(因为第一次安装只会执行onCreate()),这不是有问题吗,如果想让新用户也用新版本的数据库,而且老用户的数据不会丢失怎么办呢??? 解决方案 继承SQLiteOpenHelper后需要在构造方法里指定当前db的版本号super(context, DAT

Android中SQLite数据库操作

一.基础知识: 1.SQLite的数据类型: NULL:空值. INTEGER:带符号的整型,具体取决有存入数字的范围大小. REAL:浮点数字,存储为8-byte IEEE浮点数. TEXT:字符串文本. BLOB:二进制对象. smallint 16位元的整数. interger 32位元的整数. decimal(p,s) p 精确值和 s 大小的十进位整数,精确值p是指全部有几个数(digits)大小值,s是指小数点后有几位数.如果没有特别指定,则系统会设为 p=5; s=0 . floa

Android中SQlite数据库存取Bitmap(一)

mainActivity如下: package cn.com; import java.io.ByteArrayOutputStream; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.URL; import cn.db.DBservice; import cn.db.Photo; import android.app.Activity; import android.graphics

Android中SQlite数据库存取Bitmap(二)

main.xml如下: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" >

sqlite-android中SQLite数据库的触发

问题描述 android中SQLite数据库的触发 要求设置一个触发,在数据库中的Task表中加入了一个新task时,同时往Record表中插入一条新记录.我需要在标准匹配task的item表中,对每个开放项目插入一个record.虚拟码如下: CREATE TRIGGER update_item_records ON INSERT INTO tasksBEGIN SELECT item in ITEMS WHERE item.type=new.type AND item.program=new

cursor-Android中SQLite数据库查询不到的问题,求大神帮忙

问题描述 Android中SQLite数据库查询不到的问题,求大神帮忙 private static String sql1="create table user( _id integer primary key autoincrement, name varchar(20), pwd varchar(20))"; private static String sql2="create table account_book("+ "_id integer p

android 有关sqlite数据库的问题

问题描述 android 有关sqlite数据库的问题 写了个简单的登录注册界面,总是出现这个问题,求大神啊啊啊 都快被搞疯了啊啊啊啊啊,麻烦熟练Android的大神帮个忙啊 解决方案 Android中Sqlite数据库多线程并发问题Android中Sqlite数据库多线程并发问题解决SQLite数据库中文乱码问题 解决方案二: 查看一下你的sql语句是否正确. 解决方案三: 在网上查了一下 大部分说的 没有关闭数据库. 更重要的是,我想你应该重用sqlhandler对象,把它作为一个场变量.问

app-关于android APP开发中SQLITE数据库的问题

问题描述 关于android APP开发中SQLITE数据库的问题 代码如下,首先请问我写的这段创建数据库的代码有没有错误?然后把这个类的文件放在哪里才对啊,目前程序一打开就是程序已经停止运行,APP的第一个ACTIVITY我设置的就是判断这个库中的某个表中有没有数据.我现在感觉就是程序打开,这个库还没有创建,是不存在的,所以运行不了.请大神指教下我.或者说怎么让APP一开始运行的第一步就是运行以下的代码来创建这个数据库.求指教. //数据库创建类 package com.captain.dao

android 中 sqlite 一般用来干什么?

问题描述 android 中 sqlite 一般用来干什么? 做过几个APP,但是很少用到sqlite ,所以想请教各位大神,我们一般在什么时候会用到sqlite呢,用来保存些什么信息,.. 解决方案 比如应用中存储一些基本的枚举信息,一些应用的参数设置等 解决方案二: 存储数据啊,就是本地数据库,支持sql语句 解决方案三: SQLite是一种数据库存储方式.没有特定的使用环境,你想用就用呗.可以考虑使用SQLite是key-value的存储方式.在一些安全性要求不高的App中,你可以用它来做