时间:2021-05-02
知识点:
1.使用sql helper创建数据库
2.数据的增删查改(prdu:put、read、delete、update)
背景知识:
上篇文章学习了android保存文件,今天学习的是保存数据到sql数据库中。相信大家对数据库都不陌生。对于大量重复的,有特定结构的数据的保存,用 sql数据库 来保存是最理想不过了。
下面将用一个关于联系人的数据库demo来具体学习。
具体知识:
1.定义contract类
在创建sql数据库之前,要创建contract类。那什么是contract类呢?
复制代码 代码如下:
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()方法。
复制代码 代码如下:删:delete()方法
复制代码 代码如下:改: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);
}
// 创建表
@override
public void oncreate(sqlitedatabase db) {
string create_contacts_table = "create table " + table_contacts + "("
+ key_id + " integer primary key," + key_name + " text,"
+ key_ph_no + " text" + ")";
db.execsql(create_contacts_table);
}
// 更新表
@override
public void onupgrade(sqlitedatabase db, int oldversion, int newversion) {
// 删除旧表
db.execsql("drop table if exists " + table_contacts);
//再次创建表
oncreate(db);
}
/**
*增删改查操作
*/
// 增加新的联系人
void addcontact(contact contact) {
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(); // 关闭数据库的连接
}
// 获取联系人
contact getcontact(int id) {
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;
}
// 获取所有联系人
public list<contact> getallcontacts() {
list<contact> contactlist = new arraylist<contact>();
// select all query
string selectquery = "select * from " + table_contacts;
sqlitedatabase db = this.getwritabledatabase();
cursor cursor = db.rawquery(selectquery, null);
if (cursor.movetofirst()) {
do {
contact contact = new contact();
contact.setid(integer.parseint(cursor.getstring(0)));
contact.setname(cursor.getstring(1));
contact.setphonenumber(cursor.getstring(2));
contactlist.add(contact);
} while (cursor.movetonext());
}
return contactlist;
}
// 更新单个联系人
public int updatecontact(contact contact) {
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 + " = ?",
new string[] { string.valueof(contact.getid()) });
}
// 删除单个联系人
public void deletecontact(contact contact) {
sqlitedatabase db = this.getwritabledatabase();
db.delete(table_contacts, key_id + " = ?",
new string[] { string.valueof(contact.getid()) });
db.close();
}
// 获取联系人数量
public int getcontactscount() {
string countquery = "select * from " + table_contacts;
sqlitedatabase db = this.getreadabledatabase();
cursor cursor = db.rawquery(countquery, null);
cursor.close();
return cursor.getcount();
}
}
还有一些代码不是本次学习的重点,就不贴出来了。有需要的留言找我要。
demo运行效果图:
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
本文实例讲述了Android编程之数据库Sql编程实现方法。分享给大家供大家参考。具体分析如下:Android中安装轻量级数据库Sqlite,现在测试数据库基本
--从Excel文件中,导入数据到SQL数据库中,很简单,直接用下面的语句:/*========================================
黑客通过SQL注入攻击可以拿到网站数据库的访问权限,之后他们就可以拿到网站数据库中所有的数据,恶意的黑客可以通过SQL注入功能篡改数据库中的数据甚至会把数据库中
MySQL数据库是一个基于结构化数据的开源数据库。SQL语句是MySQL数据库中核心语言。不过在MySQL数据库中执行SQL语句,需要小心两个陷阱。陷阱一:空值
什么是SQL?SQL是一种用于操作数据库的语言。SQL是用于所有数据库的基本语言。不同数据库之间存在较小的语法更改,但基本的SQL语法基本保持不变。SQL是St