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

时间: 2024-10-10 06:09:26

Android下创建一个SQLite数据库的相关文章

Android下创建一个输入法

输入法是一种可以让用户输入文字的控件.Android提供了一套可扩展的输入法框架,使得应用程序可以让用户选择各种类型的输入法,比如基于触屏的键盘输入或者基于语音.当安装了特定输入法之后,用户即可在系统设置中选择个输入法,并在接下来的输入场景中使用该输入法.不过在任一时刻,只能使用一个输入法. 为了在安卓系统下创建一个输入法,需要新建一个包含扩展了InputMethodService类的安卓应用,并创建一个用于设置的activity,用户可以通过它将设置选项传给输入法的service,因此,你还需

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

android 一个SQLite数据库多个数据表(带demo) 前言        demo演示        一.搭建        二.建立实体类        三.建立数据库操作类        四.配置Application        五.使用    GitHub 前言 我的上一篇博客讲的是简单的 android SQLite 数据库的基本操作如增删改查,有兴趣的朋友可以点一下这里android 简单SQLite数据库 增删改查 但是呢,一般的项目里,一个数据库也不会只有一个数据表,

android下创建数据库学习笔记

##在Android中创建一个数据库## ###步骤### 1.创建一个类继承SQLiteOpenHelper并在类中重写父类的构造方法.onCreate方法.onGrade方法(数据库的版本只能升级,不能降级) ###数据库增删改查方法##     public void add(View view){         SQLiteDatabase db = sql.getWritableDatabase();         //Random random = new Random();  

Android学习笔记(42):SQLite数据库

(1)SQLite数据库 先简单介绍一下SQLite数据库: 2000年由D.Richard Hipp发布. 是一款轻型.开源嵌入式关系数据库,占用资源非常低.目前用于很多嵌入式产品中,在嵌入式设备中,SQLite可能只需要几百K的内存就够了. 与Mysql.PostgreSQL这两款开源世界著名的数据库管理系统相比,它的处理速度更快. 在Android平台下,除了可以在Android程序中操作SQLite数据库之外,还可以在命令行模式下进行各种数据库的操作,包括表的各种操作,对数据的增加.删除

Android 查看和管理sqlite数据库

在Android中可以使用Eclipse插件DDMS来查看,也可以使用Android工具包中的adb工具来查看.android项目中的sqlite数据库位于/data/data/项目包/databases中. 使用DDMS导出sqlite数据库. 1.首先打开android项目的调试模式,然后找到显示DDMS: 选择DDMS 2.切换到DDMS,显示File Explorer窗口,找到/data/data/ 然后找到程序包的文件夹,打开databases,就能看到sqlite数据库文件了.选择将

Android——使用SQLiteDatabase操作SQLite数据库

除了可以使用文件或SharedPreferences存储数据,还可以选择使用SQLite数据库存储数据. 在Android平台上,集成了一个嵌入式关系型数据库-SQLite,SQLite3支持 NULL.INTEGER.REAL(浮点数字).TEXT(字符串文本)和BLOB(二进制对象)数据类型,虽然它支持的类型只有五种,但实际上sqlite3也接受varchar(n).char(n).decimal(p,s) 等数据类型,只不过在运算或保存时会转成对应的五种数据类型. SQLite最大的特点是

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

要通过命令行直接操作android真机上的SQLite数据库,可以直接通过adb shell来完成,不过,前提是必须获得root权限. 另外,android系统其实就是linux的shell,这个应该大家都知道,不过一般情况下,在/system/xbin/目录下, 没有sqlite3命令,需要手动copy一个进去,通常情况下,需要两个文件 sqlite3.libncurses.so 解压后两个文件都有了,比如解压到:~/Downloads/sqlite3/ 然后就是通过下面的这些个命令,一步一步

《android 1: 创建一个安卓项目》

创建方式有两种: 通过Eclipse创建 在工具栏上选择New>android>android application project,或者在导航栏上选择file>new>project>android>android application project. 在出现的窗口上填上与选择你的 Application Name .Project Name.Package Name.Minimum Required SDK.Target SDK.Compile With.Th

[Android]如何创建一个View的分割线

如何创建一个View的分割线,如上图 我们见介绍三种可以创建看起来很不错的view的分割线,如在button之间添加分割线. 这个例子是将为LinearLayout内的三个Button间添加分割线. 这三个例子可能容易实现,相信会有更好的实现办法. 1 人工添加LinearLayout的分割线 我们可以创建一个View,这个View就是分割线,只要简单在Button之间添加这个分割线就可以. 分割线的实现,如下: <View android:layout_height="fill_pare