数据库: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数据库的更多相关文章

  1. [android] android下创建一个sqlite数据库

    Sqlite数据库是开源的c语言写的数据库,android和iphone都使用的这个,首先需要创建数据库,然后创建表和字段,android提供了一个api叫SQLiteOpenHelper数据库的打开 ...

  2. 创建一个 SQLite 数据库

    首先,我们学习如何创建一个SQLite 数据库.如果想要在data/example.sqlite 这个路径中创建一个示例数据库,就必须确保该路径存在.如果该路径不存在,就必须先创建路径:if (!di ...

  3. Android下创建一个输入法

    输入法是一种可以让用户输入文字的控件.Android提供了一套可扩展的输入法框架,使得应用程序可以让用户选择各种类型的输入法,比如基于触屏的键盘输入或者基于语音.当安装了特定输入法之后,用户即可在系统 ...

  4. android 一个SQLite数据库多个数据表的基本使用框架 (带demo)

    android 一个SQLite数据库多个数据表(带demo) 前言        demo演示        一.搭建        二.建立实体类        三.建立数据库操作类        ...

  5. android开发之使用SQLite数据库存储

    http://blog.csdn.net/jason0539/article/details/16360835 SQLite 介绍 SQLite 一个非常流行的嵌入式数据库,它支持 SQL 语言,并且 ...

  6. 在Android 开发中使用 SQLite 数据库笔记

    SQLite 介绍   SQLite 一个非常流行的嵌入式数据库,它支持 SQL 语言,并且只利用很少的内存就有很好的性能.此外它还是开源的,任何人都可以使用它.许多开源项目((Mozilla, PH ...

  7. Android数据存储之SQLite数据库

    Android数据存储 之SQLite数据库简介 SQLite的相关知识,并结合Java实现对SQLite数据库的操作. SQLite是D.Richard Hipp用C语言编写的开源嵌入式数据库引擎. ...

  8. android:Android中用文件初始化sqlite数据库(zz)

        很多时候在应用安装初始化时,需要创建本地数据库,同时为数据库添加数据,之后再从数据库中读取数据. 这里有2个思路 1.先在本地创建一个能支持android使用的sqlite数据库文件,启动时, ...

  9. 通过adb shell操作android真机的SQLite数据库

    要通过命令行直接操作android真机上的SQLite数据库,可以直接通过adb shell来完成,不过,前提是必须获得root权限. 另外,android系统其实就是linux的shell,这个应该 ...

随机推荐

  1. Theano入门神经网络(一)

    Theano是一个Python库,专门用于定义.优化.求值数学表达式,效率高,适用于多维数组.特别适合做机器学习.一般来说,使用时需要安装python和numpy. 首先回顾一下机器学习的东西,定义一 ...

  2. MVC之前的那点事儿系列(6):动态注册HttpModule

    文章内容 通过前面的章节,我们知道HttpApplication在初始化的时候会初始化所有配置文件里注册的HttpModules,那么有一个疑问,能否初始化之前动态加载HttpModule,而不是只从 ...

  3. JavaScript基础插曲---apply,call和URL编码等方法

    Js基础学习 Js的压缩: 就是利用js的语法格式通过缩短变量名,去掉空格等来进行压缩. Apply和call的使用 1:apply方法:应用某一对象的方法,用于一个对象替换当前对象.主要是改变thi ...

  4. 开源的即时通讯框架 (endv.cn) (一)

    先实现几个常用基本功能, 1.富文本编辑器.文字的发送与接收 2.表情选择.插入.发送.读取 3.截图的插入.发送.接收 4.视频的获取.发送.接收 5.内存垃圾回收 客户端模拟服务端发送与接收 源码 ...

  5. Nancy 学习-自宿主 继续跨平台

    Nancy简介 Nancy是一个轻量级的独立的框架,下面是官网的一些介绍: Nancy 是一个轻量级用于构建基于 HTTP 的 Web 服务,基于 .NET 和 Mono 平台,框架的目标是保持尽可能 ...

  6. C# Graphics绘图 picBox

    需求: Bitmap bm = new Bitmap(picboxPreview.Width, picboxPreview.Height); using (Graphics g = Graphics. ...

  7. qt 自动产生 Guid 方法

    strcpy(cmd->uid,QUuid::createUuid().toString().toStdString().c_str());

  8. CSRF 防御策略

    在业界目前防御 CSRF 攻击主要有三种策略:验证 HTTP Referer 字段:在请求地址中添加 token 并验证:在 HTTP 头中自定义属性并验证.下面就分别对这三种策略进行详细介绍. 验证 ...

  9. 基于.Net Framework 4.0 Web API开发(3):ASP.NET Web APIs 异常的统一处理Attribute 和统一写Log 的Attribute的实现

    概述:  ASP.NET Web API 的好用使用过的都知道,没有复杂的配置文件,一个简单的ApiController加上需要的Action就能工作.但是项目,总有异常发生,本节就来谈谈API的异常 ...

  10. Java项目打包部署war文件

    1.选中要打包的项目,右键单击,选择“Export-->WAR File”,在弹出的对话框中选择Destination.Server runtime等选项,点击Finish: 2.可以看到指定目 ...