Android下创建一个SQLite数据库
数据库:SQLite(轻量级,嵌入式的数据库)
大量的相似结构的数据的储存,快速的查询。特殊的文件(按照一定的格式生成)
数据库的创建
创建文件
1.声明文件对象,文件是不会被创建出来的。
File file = new File("文件名称");
2.写文件(文件才会被创建出来)
FileOutputStream fos = new FileOutputStream(file);
fos.write("hdahfdsaklfh".getbytes());
创建数据库
1.实现SQLiteOpenHelper的子类PersonSQLiteOpenHelper
public class PersonSQLiteOpenHelper extends SQLiteOpenHelper {
public PersonSQLiteOpenHelper(Context context, String name,
CursorFactory factory, int version) {
super(context, name, factory, version);
// TODO Auto-generated constructor stub
}
@Override
public void onCreate(SQLiteDatabase arg0) {
// TODO Auto-generated method stub
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
}
}
SQLiteOpenHelper的几个参数的解释如下:
android.database.sqlite.SQLiteOpenHelper.SQLiteOpenHelper(Context context, String name, CursorFactory factory, int version) Create a helper object to create, open, and/or manage a database. This method always returns very quickly. The database is not actually created or opened until one of getWritableDatabase or getReadableDatabase is called. Parameters:
context to use to open or create the database
name of the database file, or null for an in-memory database
factory to use for creating cursor objects, or null for the default
version number of the database (starting at 1); if the database is older, onUpgrade will be used to upgrade the database; if the database is newer, onDowngrade will be used to downgrade the database
2.getWritableDatabase/getReadableDatabase()
新建TestPersonDB.java
package com.wuyudong.db.test;
import com.wuyudong.db.PersonSQLiteOpenHelper;
import android.test.AndroidTestCase;
public class TestPersonDB extends AndroidTestCase {
public void testCreateDB() throws Exception {
PersonSQLiteOpenHelper helper = new PersonSQLiteOpenHelper(getContext());
helper.getWritableDatabase();
}
}
3.onCreate() 数据库第一次创建的执行的方法,适合做数据库表结构的初始化
// Called when the database is created for the first time.
// 在数据库第一次创建的时候执行的方法
// 如果数据库已经创建完毕,就不会再去执行了。
// 适合做数据库表结构的初始化操作
// db代表的就是当前的数据库
@Override
public void onCreate(SQLiteDatabase db) {
// 初始化数据库的表结构
db.execSQL("create table person (id integer primary key autoincrement, name varchar(20), number varchar(20))");
}
注意:
sqlite数据库是一个嵌入式轻量级的数据库,内部不区分数据类型的,不对数据的长度校验。
新建AndroidTest工程test

将AndroidManifest.xml中的如下相关的代码复制到本项目的AndroidManifest.xml中
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.wuyudong.db.test"
android:versionCode="1"
android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" /> <instrumentation
android:name="android.test.InstrumentationTestRunner"
android:targetPackage="com.wuyudong.db" /> <application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<uses-library android:name="android.test.runner" />
</application> </manifest>
复制后的代码如下:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.wuyudong.db"
android:versionCode="1"
android:versionName="1.0" > <instrumentation
android:name="android.test.InstrumentationTestRunner"
android:targetPackage="com.wuyudong.db" /> <uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="17" /> <application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<uses-library android:name="android.test.runner" /> <activity
android:name="com.wuyudong.db.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application> </manifest>
项目结构如下:

PersonSQLiteOpenHelper.java完整代码如下:
package com.wuyudong.db; import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper; public class PersonSQLiteOpenHelper extends SQLiteOpenHelper { /**
* 定义一个数据库创建的帮助类,里面有两个方法需要实现 相当于 file类
*
* @author Administrator
*
*/
public PersonSQLiteOpenHelper(Context context) {
// context 上下文
// person.db 数据库文件名称
// factory 游标工厂
// version 数据库的版本号 从1开始
super(context, "person.db", null, 1);
// TODO Auto-generated constructor stub
} // Called when the database is created for the first time.
// 在数据库第一次创建的时候执行的方法
// 如果数据库已经创建完毕,就不会再去执行了。
// 适合做数据库表结构的初始化操作
// db代表的就是当前的数据库
@Override
public void onCreate(SQLiteDatabase db) {
// 初始化数据库的表结构
db.execSQL("create table person (id integer primary key autoincrement, name varchar(20), number varchar(20))");
} // 当数据库的版本号发生升级的时候调用。
// 数据库只能升级不能降级。
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub }
}
运行程序

打开person.db

Android下创建一个SQLite数据库的更多相关文章
- [android] android下创建一个sqlite数据库
Sqlite数据库是开源的c语言写的数据库,android和iphone都使用的这个,首先需要创建数据库,然后创建表和字段,android提供了一个api叫SQLiteOpenHelper数据库的打开 ...
- 创建一个 SQLite 数据库
首先,我们学习如何创建一个SQLite 数据库.如果想要在data/example.sqlite 这个路径中创建一个示例数据库,就必须确保该路径存在.如果该路径不存在,就必须先创建路径:if (!di ...
- Android下创建一个输入法
输入法是一种可以让用户输入文字的控件.Android提供了一套可扩展的输入法框架,使得应用程序可以让用户选择各种类型的输入法,比如基于触屏的键盘输入或者基于语音.当安装了特定输入法之后,用户即可在系统 ...
- android 一个SQLite数据库多个数据表的基本使用框架 (带demo)
android 一个SQLite数据库多个数据表(带demo) 前言 demo演示 一.搭建 二.建立实体类 三.建立数据库操作类 ...
- android开发之使用SQLite数据库存储
http://blog.csdn.net/jason0539/article/details/16360835 SQLite 介绍 SQLite 一个非常流行的嵌入式数据库,它支持 SQL 语言,并且 ...
- 在Android 开发中使用 SQLite 数据库笔记
SQLite 介绍 SQLite 一个非常流行的嵌入式数据库,它支持 SQL 语言,并且只利用很少的内存就有很好的性能.此外它还是开源的,任何人都可以使用它.许多开源项目((Mozilla, PH ...
- Android数据存储之SQLite数据库
Android数据存储 之SQLite数据库简介 SQLite的相关知识,并结合Java实现对SQLite数据库的操作. SQLite是D.Richard Hipp用C语言编写的开源嵌入式数据库引擎. ...
- android:Android中用文件初始化sqlite数据库(zz)
很多时候在应用安装初始化时,需要创建本地数据库,同时为数据库添加数据,之后再从数据库中读取数据. 这里有2个思路 1.先在本地创建一个能支持android使用的sqlite数据库文件,启动时, ...
- 通过adb shell操作android真机的SQLite数据库
要通过命令行直接操作android真机上的SQLite数据库,可以直接通过adb shell来完成,不过,前提是必须获得root权限. 另外,android系统其实就是linux的shell,这个应该 ...
随机推荐
- c#中高效的excel导入sqlserver的方法
将oledb读取的excel数据快速插入的sqlserver中,很多人通过循环来拼接sql,这样做不但容易出错而且效率低下,最好的办法是使用bcp,也就是System.Data.SqlClient.S ...
- Android版的菜谱客户端应用源码完整版
Android版的菜谱客户端应用源码完整版,这个文章是从安卓教程网转载过来的,不是本人的原创,希望能够帮到大家的学习吧. <ignore_js_op> 152936qc7jdnv6vo0c ...
- CRC编码
一.循环冗余码校验英文名称为Cyclical Redundancy Check,简称CRC. 它是利用除法及余数的原理来作错误侦测(Error Detecting)的.实际应用时,发送装置计算出CRC ...
- 通过参数传递,判断数字、字符串、list、tuple、词典等数据类型是否为可变数据对象
list: >>> a = [1,2,3,4]>>> a[0]1>>> a[1]2>>> a[0] = 10>>&g ...
- 点我吧工作总结(技术篇) zookeeper
我思故我在,提问启迪思考! 1.什么是zookeeper? 2.zookeeper与dubbo.springMVC之间的协同工作? http://doc.okbase.net/congcong68/a ...
- Java基础复习笔记系列 九 网络编程
Java基础复习笔记系列之 网络编程 学习资料参考: 1.http://www.icoolxue.com/ 2. 1.网络编程的基础概念. TCP/IP协议:Socket编程:IP地址. 中国和美国之 ...
- 初识 PHPunit stub 模拟返回数据
这是这段时间以来结合 PHPunit 文档和大牛们的讲解,想记录下自己学习到的知识,未来参考补充,完善学到的东西 我们一般使用单测对公司业务里的代码进行测试,他会帮忙找到你的一个个小小的思考不够全面的 ...
- [转载][翻译] IoC 容器和 Dependency Injection 模式
原文地址:Inversion of Control Containers and the Dependency Injection pattern 中文翻译版本是网上的PDF文档,发布在这里仅为方便查 ...
- c# 学习心得(函数方法类)
函数或者说方法都是写在类下的,我们可以通过函数名来调用它们.首先,我们要弄清楚为什么会有函数或者说方法这种东西?这里,我们使用了与前一篇同样的思维方式,先从它的目的或者实用价值出发.当我们在编写程序的 ...
- jQuery瀑布流从不同方向加载3种效果演示
很实用的一款插件jQuery瀑布流从不同方向加载3种效果演示在线预览 下载地址 实例代码 <section class="grid-wrap"> <ul clas ...