Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 584|回复: 0

[实例教程]Android 创建与删除数据库

[复制链接]

该用户从未签到

发表于 2011-10-22 12:41:33 | 显示全部楼层 |阅读模式
  数据库SQLite介绍
   
       数据库最经典的四个操作 添加、删除、修改、查找,在处理大量数据的时候使用数据库可以帮我们迅速定位当前须要处理的数据,举个例子 好比现在要实现一个搜索功能 用数据库的话只须要其中一个搜索条件 一个数据库语句就可以迅速的在N条数据中找到我们需要的数据,如果不使用数据库那么查找起来会非常麻烦,效率大打折扣,所以在处理大量数据的时候使用数据库是明确的选择,在Android的开发中使用的数据库是SQLite ,它是一个轻量级的数据库 、非常小 、 移植性好、效率高、可靠 ,嵌入式设备因为受到硬件条件的限制所以非常适合使用 SQLite  数据库。

       创建与删除数据库
       封装一个类去继承SQLiteOpenHelper  在构造函数中传入数据库名称与数据库版本号,数据库被创建的时候会调用onCreate(SQLiteDatabase db) 方法,数据库版本号发生改变的时候会调用onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)方法,可以方便的对软件游戏升级后做出相应处理避免覆盖安装数据库发生改变产生的错误。调用SQLiteOpenHelper  的getReadableDatabase()方法去创建数据库,如果数据库不存在则创建 并且返回SQLiteDatabase对象,如果数据库存在则不创建只返回SQLiteDatabase对象。调用deleteDatabase(DATABASE_NAME)方法 传入数据库名称则可删除数据库。

       封装了一个DatabaseHelper类继承SQLiteOpenHelper 我使用了设计模式中的单例模式来处理这个类,这里说一下单例模式 单例模式是常见的代码设计模式之一 它的好处是在于避免在内存中频繁的实例化所以将它的对象写成static 静态 这样它的对象就只有一份存在静态内存区使用的时候只须要通过getInstance()就可以直接拿到这个静态对象。

java代码: public class DatabaseHelper extends SQLiteOpenHelper {

private static DatabaseHelper mInstance = null;



/** 数据库名称 **/



public static final String DATABASE_NAME = "xys.db";



/** 数据库版本号 **/

private static final int DATABASE_VERSION = 1;



/**数据库SQL语句 添加一个表**/

private static final String NAME_TABLE_CREATE = "create table test("+ "_id INTEGER PRIMARY KEY AUTOINCREMENT," + "name TEXT,"+"hp INTEGER DEFAULT 100,"+ "mp INTEGER DEFAULT 100,"

+ "number INTEGER);";



DatabaseHelper(Context context) {

super(context, DATABASE_NAME, null, DATABASE_VERSION);

}



/**单例模式**/



public static synchronized DatabaseHelper getInstance(Context context) {

if (mInstance == null) {

mInstance = new DatabaseHelper(context);

}

return mInstance;

}



@Override

publicvoid onCreate(SQLiteDatabase db) {

/**向数据中添加表**/



db.execSQL(NAME_TABLE_CREATE);

}



@Override

public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

/**可以拿到当前数据库的版本信息 与之前数据库的版本信息 用来更新数据库**/



}



/**

* 删除数据库

* @param context

* @return

*/

public boolean deleteDatabase(Context context) {

return context.deleteDatabase(DATABASE_NAME);

}

}
在这个类中使用DatabaseHelper对象 实现创建与删除数据库、

java代码: public class NewSQLite extends Activity {

DatabaseHelper mDbHelper = null;

SQLiteDatabase mDb = null;

Context mContext = null;

@Override



protected void onCreate(Bundle savedInstanceState) {

setContentView(R.layout.create_sql);

mContext = this;

//创建DatabaseHelper对象



mDbHelper = DatabaseHelper.getInstance(mContext);

//调用getReadableDatabase方法如果数据库不存在 则创建 如果存在则打开



mDb= mDbHelper.getReadableDatabase();

Button button0 = (Button)findViewById(R.id.createDateBase);

button0.setOnClickListener(new OnClickListener() {



@Override

public void onClick(View arg0) {

Toast.makeText(NewSQLite.this, "成功创建数据库", Toast.LENGTH_LONG).show();

}

});

Button button1 = (Button)findViewById(R.id.deleteDateBase);

button1.setOnClickListener(new OnClickListener() {



@Override

public void onClick(View arg0) {

mDbHelper = DatabaseHelper.getInstance(mContext);

// 调用getReadableDatabase方法如果数据库不存在 则创建 如果存在则打开



mDb = mDbHelper.getReadableDatabase();

// 关闭数据库



mDbHelper.close();

// 删除数据库



mDbHelper.deleteDatabase(mContext);

Toast.makeText(NewSQLite.this, "成功删除数据库", Toast.LENGTH_LONG).show();

}

});



super.onCreate(savedInstanceState);

}

}
回复

使用道具 举报

该用户从未签到

发表于 2011-10-22 12:41:39 | 显示全部楼层

Re:[实例教程]Android

顶顶顶顶顶顶顶顶顶顶顶顶
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

GMT+8, 2025-1-22 16:50 , Processed in 0.402004 second(s), 47 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表