Android开发入门(十九)数据库 19.3 预创建数据库

在开发过程中,有时候,预先创建好数据库比在程序运行时创建数据库更加地高效。举个例子,你想编写 一个程序,这个程序把你去过的地方的坐标都显示出来。这种情况下,预先创建数据库是更加容易的,比在 运行时创建数据库。

这里,需要使用一些免费的工具。推荐使用SQLite Database Browser,支持多 平台,并且免费。下载地址: http://sourceforge.net/projects/sqlitebrowser/

下面是创建一个 联系人表的例子。

在设计阶段把数据库建好,下 一步,就是把数据库和程序捆绑在一起,这样,在运行时,就能使用数据库了。

1. 把数据库放在 assets文件夹下面。

2. 把assets文件夹下面的数 据库,复制到程序的安装路径下。

public class DatabasesActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);  

        DBAdapter db = new DBAdapter(this);  

        try {
            String destPath = "/data/data/" + getPackageName() +
                "/databases";
            File f = new File(destPath);
            if (!f.exists()) {
             f.mkdirs();
                f.createNewFile();  

             //---copy the db from the assets folder into
             // the databases folder---
                CopyDB(getBaseContext().getAssets().open("mydb"),
                    new FileOutputStream(destPath + "/MyDB"));
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }  

        //---get all contacts---
        db.open();
        Cursor c = db.getAllContacts();
        if (c.moveToFirst())
        {
            do {
                DisplayContact(c);
            } while (c.moveToNext());
        }
        db.close();
    }  

    public void CopyDB(InputStream inputStream,
    OutputStream outputStream) throws IOException {
        //---copy 1K bytes at a time---
        byte[] buffer = new byte[1024];
        int length;
        while ((length = inputStream.read(buffer)) > 0) {
            outputStream.write(buffer, 0, length);
        }
        inputStream.close();
        outputStream.close();
    }  

    public void DisplayContact(Cursor c)
    {
        Toast.makeText(this,
                "id: " + c.getString(0) + "\n" +
                "Name: " + c.getString(1) + "\n" +
                "Email:  " + c.getString(2),
                Toast.LENGTH_LONG).show();
    }
}

3. 调试,用DDMS查看,数据库被复制到了指定的位置。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索数据库
, 程序
, outputstream
, inputstream
, public
, inputStream.read()
getstring
数据库学习入门、oracle数据库入门教程、nosql数据库入门、数据库入门教程、sql数据库入门,以便于您获取更多的相关知识。

时间: 2024-08-22 15:25:32

Android开发入门(十九)数据库 19.3 预创建数据库的相关文章

Windows 8风格应用开发入门 十九 基础控件II

Slider: Slider控件常见的效果图: 开发入门 十九 基础控件II-古诗十九首的艺术风格"> 如何在XAML代码中声明Slider控件呢?代码如下: Value属性值表示Slider控件显示的初始值,应用运行状态下我们也可以拖动改变Slider控件的值. C#代码中声明Slider控件.代码可以如下: 可以通过ValueChanged事件获取Slider控件当前的Value值 关于Slider类详细说明可以参考: Slider Class. Image: Image控件常见的效果

Android开发入门(九)用户界面 9.3 注册事件监听器

当用户与视图views进行交互的时候,views也会触发事件.举个例子,当用户点击了一个按钮,你需要为 这个事件服务,只有这样,才能去执行某些适当的行为.如果想这么做的话,你就需要为视图views注册监听 . 使用上一节中的例子,在activity中有两个Button.我们可以使用一个匿名的类,为按钮设置点击 事件. public class UIActivityActivity extends Activity { /** Called when the activity is first c

Android开发入门(九)用户界面 9.2 重写onKeyDown()

用户可以使用两种级别与你的UI进行交互,一种是activity级别,另一种是view级别.在activity级别, Activity类暴露了一些你可以重写的方法.有一些常用的方法,你可以在你的Activity中进行重写: onKeyDown onKeyUp onMenuItemSelected onMenuOpened 下面的例子重写了一些在activity中的方法,通过这个例子展示用户如何与众多的activity进行交互. 1. 创建一个工程:UIActivity. 2. main.xml中的

Android开发入门(九)用户界面 9.1 纯编码实现UI

到目前为止,在所有的章节中,我们所看见的UI都是通过XML来实现的.之前也提及过,除了使用XML,也 可以使用代码来实现UI界面.这个方式是很有用的,比如你的UI需要在运行时被生成.举个例子,假设你在 编写一个"电影票的预定系统",你的程序使用按钮Buttons去显示每个电影院的座位.在这种情况下,你就 会需要依据实际情况去动态地生成UI. 下面的例子将会展示如何通过编码,动态地在Activity中生成 UI. 1. 创建一个工程:UICode. 2. UICodeActivity.j

Android开发入门系列

Android开发入门(二十)内容提供者 20.3 经过预定义的查询字符 Android开发入门(二十)内容提供者 20.2 ContentProvider的使用 Android开发入门(二十)内容提供者 20.1 数据共享 Android开发入门(十九)数据库 19.3 预创建数据库 Android开发入门(十九)数据库 19.2 使用数据库 Android开发入门(十九)数据库 19.1创建数据库辅助类 Android开发入门(十八)文件 18.4使用静态资源 Android开发入门(十八)

Android开发入门(二十)内容提供者 20.1 数据共享

在上一章节中,我们介绍了数据持久化的几种方法:首选项,文件,以及数据库.在保存复杂的数据结构 时,推荐使用SQliteDatabase.但是,共享数据就成了一种挑战,因为,数据库只对创建它的程序包可用. 在这一章节中,将会介绍Android特有的数据共享方式:使用ContentProvider.也会介绍如何使用内 置的ContentProvider,以及创建自己的ContentProvider,以便在多个程序包之间共享数据. 在 Android中,共享数据的推荐方式是使用ContentProvi

Android简明开发教程十九:线程 Bezier曲线

Android中使用线程Thread的方法和Java SE相同.和大多数OS系统一样,Android中也有称为UI Thread的主线程.UI Thread 主要用来给相应的Widget分发消息,包括绘制(Drawing)事件.UI Thread 也是用来处理用户交互事件的线程.比如:如果你 按下屏幕上某个按钮,UI 线程则将Touch 事件通知对应的控件(Widgets),Widget 则将其状态设置成"按下",并把"重绘" (Invalidate)事件发到Eve

Android开发入门(十)基本控件 10.2

Button,ImageButton,EditText,ChcekBox,ToggleButton 除了最常用的TextView,Android还提供了一些其他的基本控件. Button ImageButton EditText CheckBox RadioGroup和RadioButton ToggleButton 下面的例子,展示如何使用这些基本控件. 1. 创建一个工程:BasicViews. 2. main.xml 中的代码. <?xml version="1.0" en

Windows 8开发入门(九) Windows 8中使用FlipView

FlipView控件类似于翻页控件,并且是现成的翻页按钮,你只需要为其增加数据项即可.本文讲述两种方 式的FlipView项目和展示. 一:直接前台FlipViewItem <FlipView> <FlipViewItem> <Image Stretch="Uniform" Source="http://imgcache.qq.com/club/item/wallpic/items/2/3802/760_300_3802.jpg"/&g