Android学习笔记-保存数据到SQL数据库中(Saving Data in SQL Databases)


本文整理自网络,侵删。

知识点:

1.使用SQL Helper创建数据库
2.数据的增删查改(PRDU:Put、Read、Delete、Update)

背景知识:

上篇文章学习了android保存文件,今天学习的是保存数据到SQL数据库中。相信大家对数据库都不陌生。对于大量重复的,有特定结构的数据的保存,用 SQL数据库 来保存是最理想不过了。

下面将用一个关于联系人的数据库Demo来具体学习。

具体知识:

1.定义Contract类

在创建SQL数据库之前,要创建Contract类。那什么是Contract类呢?

代码如下:

Contract Class的定义:
    Contract Class,又可以叫做Companion Class。
    Android Developer的帮助文档是这么说的:
   < A contract class is a container for constants that define names for URIs,
     tables, and columns. The contract class allows you to use the same constants
     across all the other classes in the same package. This lets you change a
     column name in one place and have it propagate throughout your code.>
     Contact 类是定义URI、表、列的名字的容器。这个类允许我们在同一包的不同类下使用相同的常量。
     我们在一处修改了列名,同时传播到我们代码的每个地方。

代码如下:

package com.example.sqlitetest;
//Contract类
public class Contact {
   
    int _id;
    String _name;
    String _phone_number;
   
    public Contact(){
       
    }
    public Contact(int id, String name, String _phone_number){
        this._id = id;
        this._name = name;
        this._phone_number = _phone_number;
    }
   
    public Contact(String name, String _phone_number){
        this._name = name;
        this._phone_number = _phone_number;
    }
    public int getID(){
        return this._id;
    }
   
    public void setID(int id){
        this._id = id;
    }
   
    public String getName(){
        return this._name;
    }
   
    public void setName(String name){
        this._name = name;
    }
   
    public String getPhoneNumber(){
        return this._phone_number;
    }

    public void setPhoneNumber(String phone_number){
        this._phone_number = phone_number;
    }
}

2.使用SQLHelper创建数据库

          就像保存文件在内部存储一样,Android在私有的应用存储空间存储我们的数据库,这样就保证我们的数据是安全的。不能被其他应用访问到。

在设备上存储的数据库保存在:
             /data/data/<package_name>/databases目录下

为了使用SQLiteOpenHelper,我们需要创建一个重写了onCreate(),onUpgrade()和onOpen()回调方法的子类。

3.数据的增删改查

增:传ContentValue值到insert()方法。

代码如下:

SQLiteDatabase db = this.getWritableDatabase();
 
ContentValues values = new ContentValues();
values.put(KEY_NAME, contact.getName());
values.put(KEY_PH_NO, contact.getPhoneNumber());
 
db.insert(TABLE_CONTACTS, null, values);
db.close();

删:delete()方法

代码如下:

SQLiteDatabase db = this.getWritableDatabase();
db.delete(TABLE_CONTACTS, KEY_ID + " = ?",
        new String[] { String.valueOf(contact.getID()) });
db.close();

 改:update()方法

 

代码如下:

 SQLiteDatabase db = this.getWritableDatabase();

ContentValues values = new ContentValues();
values.put(KEY_NAME, contact.getName());
values.put(KEY_PH_NO, contact.getPhoneNumber());


return db.update(TABLE_CONTACTS, values, KEY_ID + " = ?",
          ew String[] { String.valueOf(contact.getID()) });
 

查:query()方法

代码如下:

SQLiteDatabase db = this.getReadableDatabase();

Cursor cursor = db.query(TABLE_CONTACTS, new String[] { KEY_ID,
                KEY_NAME, KEY_PH_NO }, KEY_ID + "=?",
                new String[] { String.valueOf(id) }, null, null, null, null);
if (cursor != null)
cursor.moveToFirst();

Contact contact = new Contact(Integer.parseInt(cursor.getString(0)),
                cursor.getString(1), cursor.getString(2));

return contact;

完整DatabaseHelper代码如下:

代码如下:

package com.example.sqlitetest;

import java.util.ArrayList;
import java.util.List;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

public class DatabaseHelper extends SQLiteOpenHelper {

    // 数据库版本
    private static final int DATABASE_VERSION = 1;

    // 数据库名
    private static final String DATABASE_NAME = "contactsManager";

    //Contact表名
    private static final String TABLE_CONTACTS = "contacts";

    //Contact表的列名
    private static final String KEY_ID = "id";
    private static final String KEY_NAME = "name";
    private static final String KEY_PH_NO = "phone_number";

    public DatabaseHelper(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }

阅读剩余部分

相关阅读 >>

mysql一些常用高级sql语句详解

mysql 4种导入数据的方法

sql为什么会出现无效的列索引

sqlserver2019 数据库环境搭建与使用的实现

数据库开发总结(ado.net小结)

在mysql数据库中使用c执行sql语句的方法

sqlserver删除某数据库中所有表实现思路

sql将一个表中的数据插入到另一个表中的方法

关于mysql基础知识的介绍

合并sql脚本文件的方法分享

更多相关阅读请进入《sql》频道 >>


数据库系统概念 第6版
书籍

数据库系统概念 第6版

机械工业出版社

本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...