Android开发入门(十九)数据库 19.1创建数据库辅助类

目前所介绍的方法只是用来存储一些简单的数据。如果想要存储关系型数据,那么使用数据库将会更加的 效率。举个例子,你要存储学校里面每一个学生的分数,这种情况下,最好使用数据库,因为你可以查询某 个学生的具体分数。而且,使用数据库能够保持不同数据之间关系的完整性。

Android使用SQLite数 据库系统。使用这种数据库,只有创建它的程序可以使用它,别的程序无法访问到它。

在接下来的几 节中,会简述如何通过编码在你的程序中创建一个SQLite数据库。对于Android来说,通过编码创建的数据库 的存储位置是/data/data/<packane_name>

/databases 。

想要处理数据库的一种良好 的方式就是创建一个数据库辅助类,这个类中,封装了所有的数据操作方式。因此,这节中我们来看看如何 创建一个数据库辅助类DBAdapter,这个类中包含创建,打开,关闭和使用SQLite数据库。

我们讲创 建一个数据库,名字叫MyDB;包含一张表,名字叫contacts,有3列_id,name和email。

开发入门(十九)数据库 19.1创建数据库辅助类-rman 创建辅助数据库">

1. 创建一个工程,Databases。

2. 创建一个类,DBAdater。

3. DBAdapter.java中的代码。

public class DBAdapter {
    static final String KEY_ROWID = "_id";
    static final String KEY_NAME = "name";
    static final String KEY_EMAIL = "email";
    static final String TAG = "DBAdapter";  

    static final String DATABASE_NAME = "MyDB";
    static final String DATABASE_TABLE = "contacts";
    static final int DATABASE_VERSION = 2;  

    static final String DATABASE_CREATE =
        "create table contacts (_id integer primary key autoincrement, "
        + "name text not null, email text not null);";  

    final Context context;  

    DatabaseHelper DBHelper;
    SQLiteDatabase db;  

    public DBAdapter(Context ctx)
    {
        this.context = ctx;
        DBHelper = new DatabaseHelper(context);
    }  

    private static class DatabaseHelper extends SQLiteOpenHelper
    {
        DatabaseHelper(Context context)
        {
            super(context, DATABASE_NAME, null, DATABASE_VERSION);
        }  

        @Override
        public void onCreate(SQLiteDatabase db)
        {
            try {
                db.execSQL(DATABASE_CREATE);
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }  

        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)
        {
            Log.w(TAG, "Upgrading database from version " + oldVersion + " to "
                    + newVersion + ", which will destroy all old data");
            db.execSQL("DROP TABLE IF EXISTS contacts");
            onCreate(db);
        }
    }  

    //---opens the database---
    public DBAdapter open() throws SQLException
    {
        db = DBHelper.getWritableDatabase();
        return this;
    }  

    //---closes the database---
    public void close()
    {
        DBHelper.close();
    }  

    //---insert a contact into the database---
    public long insertContact(String name, String email)
    {
        ContentValues initialValues = new ContentValues();
        initialValues.put(KEY_NAME, name);
        initialValues.put(KEY_EMAIL, email);
        return db.insert(DATABASE_TABLE, null, initialValues);
    }  

    //---deletes a particular contact---
    public boolean deleteContact(long rowId)
    {
        return db.delete(DATABASE_TABLE, KEY_ROWID + "=" + rowId, null) > 0;
    }  

    //---retrieves all the contacts---
    public Cursor getAllContacts()
    {
        return db.query(DATABASE_TABLE, new String[] {KEY_ROWID, KEY_NAME,
                KEY_EMAIL}, null, null, null, null, null);
    }  

    //---retrieves a particular contact---
    public Cursor getContact(long rowId) throws SQLException
    {
        Cursor mCursor =
                db.query(true, DATABASE_TABLE, new String[] {KEY_ROWID,
                KEY_NAME, KEY_EMAIL}, KEY_ROWID + "=" + rowId, null,
                null, null, null, null);
        if (mCursor != null) {
            mCursor.moveToFirst();
        }
        return mCursor;
    }  

    //---updates a contact---
    public boolean updateContact(long rowId, String name, String email)
    {
        ContentValues args = new ContentValues();
        args.put(KEY_NAME, name);
        args.put(KEY_EMAIL, email);
        return db.update(DATABASE_TABLE, args, KEY_ROWID + "=" + rowId, null) > 0;
    }  

}

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索数据库
, string
, final
, static
, null
, public
, getcontact
, #DbHelper
, 辅助类
, Email类
Dbhelper
rman 创建辅助数据库、数据库学习入门、oracle数据库入门教程、nosql数据库入门、数据库入门教程,以便于您获取更多的相关知识。

时间: 2024-08-06 23:37:29

Android开发入门(十九)数据库 19.1创建数据库辅助类的相关文章

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开发入门(十九)数据库 19.2 使用数据库

DBAdapter已经创建好了,现在我们可以去使用数据库了.下面的章节,将介绍常规的CRUD(增加,读取, 更新,删除). 往表中添加联系人. 1. 使用之前的项目,在DatabasesActivity.java中添加 一些代码. public class DatabasesActivity extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bun

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