数据储存之SQLite(单例模式)

数据储存之SQLite(单例模式),第1张

概述1.SQLite数据库简介     在某些情况下,文件不是有效的 � 如果多线程数据访问是相关的 � 如果应用程序处理可能变化的复杂数据结构 � 等等 � 因此,Android带来了内置SQLite数据库支持 � 数据库对于创建它们的包套件是私有的 � 数据库不应该用来存贮文件 � 提示:在SDK中的samples/NotePad下可以找到关于如何使用数据库的例子 � SQLite是一个轻量级的软 1.sqlite数据库简介 在某些情况下,文件不是有效的
� 如果多线程数据访问是相关的
� 如果应用程序处理可能变化的复杂数据结构
� 等等
� 因此,AndroID带来了内置sqlite数据库支持
� 数据库对于创建它们的包套件是私有的
� 数据库不应该用来存贮文件
� 提示:在SDK中的samples/NotePad下可以找到关于如何使用数据库的例子
� sqlite是一个轻量级的软件库
� 实现了一个完全适应严峻环境的数据库
� 原子量性
� 坚固性
� 独立性
� 耐久性
� 体积大小只用几千字节
� 一些sql的指令只是部分支持,例如:ALTER、table
� 参阅http://www.sqlite.org 获取更多信息
2.单例模式简介

单例模式(singleton)顾名思义,就是只有一个实例。

  作为对象的创建模式[GOF95], 单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。这个类称为单例类。

单例模式的要点有三个;一是某个类只能有一个实例;二是它必须自行创建这个实例;三是它必须自行向整个系统提供这个实例。

单例模式在Java中的使用,Java中单例模式实例:

Java中的单例模式   在java中,可以使用以下这种方式使用单例模式创建类的实例: 

 public class MyBean {  

private static MyBean instance = null;  

//构造方法权限为 private

private MyBean(){  

//do something 

  } 

//在程序中可以直接使用MyBean.getInstance()获得MyBean的实例

  public static synchronized MyBean getInstance(){  

if(instance == null){  

instance = new MyBean(); 

 } 

 return instance; 

  } 

 }


3.sqlite继承sqliteOpenHelper类单例模式的实现:


public class DBHelper extends sqliteOpenHelper {

private final static String DB_name="my_info";
private final static int VERSION =1;

private static DBHelper instance=null;
public static DBHelper getInstance(Context context){

if(instance==null){

instance=new DBHelper(context);
}

return instance;
}
private DBHelper(Context context){

super(context,DB_name,null,VERSION);

}

........

}


4.建表语句在onCreate()方法中的实现:

@OverrIDe
public voID onCreate(sqliteDatabase db) {
// Todo auto-generated method stub

//建表语句直接使用db.execsql(String sql)方法执行sql建表语句

String createtable="create table user(ID integer primary key,name text,age integer);";
db.execsql(createtable);

}

5.sqlite增删改查的实现

public static voID insertInfo(Context context,Info info) {
sqliteDatabase db=DBHelper.getInstance(context).getWritableDatabase();
ContentValues values = new ContentValues();
values.put("name",info.getname());
values.put("age",info.getAge());

db.insert("user",values);
db.close();
}
//删除信息
public static voID deleteInfo(Context context,int ID) {
sqliteDatabase db=DBHelper.getInstance(context).getWritableDatabase();

db.delete("user","ID=" + ID,null);
db.close();
}
//更新信息
public static voID updateInfo(Context context,int ID,info.getAge());
db.update("user",values,"ID="+ID,null);
db.close();
}


// 查找所有用户信息

public List<Info> queryAllinfo(Context context) {
sqliteDatabase db=DBHelper.getInstance(context).getWritableDatabase();
List List = new ArrayList<Info>();

Cursor cursor = db.query("user",null);
if (cursor.movetoFirst()) {

do {
int age = cursor.getInt(cursor.getColumnIndex("age"));
String name = cursor.getString(cursor.getColumnIndex("name"));
Info info=new Info();
info.setname(name);
info.setAge(age);
List.add(info);

} while (cursor.movetoNext());

}
db.close();
return List;

}









6.插入一条测试数据


点击按钮:

按钮的事件处理如下:

private OnClickListener Listener=new OnClickListener(){

@OverrIDe
public voID onClick(VIEw v) {
// Todo auto-generated method stub


Info info=new Info("Jun",21);
DBHelper.getInstance(ShowActivity.this).insertInfo(ShowActivity.this,info);
Toast.makeText(ShowActivity.this,"insert data success!",Toast.LENGTH_SHORT).show();

}};


数据库中sqlite数据库中user表中的信息为:

总结

以上是内存溢出为你收集整理的数据储存之SQLite(单例模式)全部内容,希望文章能够帮你解决数据储存之SQLite(单例模式)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1175136.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-02
下一篇 2022-06-02

发表评论

登录后才能评论

评论列表(0条)

保存