这里主要是掌握一些基本的相应的知识,具体的是阿金是等到明天在进行。

相应的知识点如下:

对于数据库中的一些常识。SQLite 没有服务器进程,它通过文件保存数据,该文件是跨平台的,可以放在其他平台中使用。并且在保存数据时,支持null(零) 、integer (整数)、real (浮点数字) 、text (字符串文本)和blob(二进制对象)5种数据类型。但实际上SQLite也接收varchar(n)、 char(n)、decimal(p,s)等数据类型,只不过在运算或保存时会转换成对应的5种数据类型。因此,可以将各种类型的数据保存到任何字段中,而不用关心字段声明的数据类型

SqliteOpenHelper的用法:
该类的方法:
1、getReadableDatabase() 创建或者打开一个可读写的数据库,如果出现问题(磁盘满等),则打开一个只读的数据库。

2、getWritableDatabase() 获得一个可读写的数据库。如果磁盘满则会抛异常。

3、onCreate(SQLiteDatabase db) 只有第一次创建这个数据库的时候调用。一般在这个方法中创建数据的相应表。

4、onOpen(SQLiteDatabase db) 当每次打开数据库的时候都会调用。这个方法很少使用

5、onUpgrade(SQLiteDatabase db,int oldVersion,int newVersion) 当升级数据库即数据库的版本号发生改变的时候调用,一般如果需要修改表结构就写在这里.

//db.execSQL(“alert 表名 add 列名列数据类型”);

6、close()   关闭打开的所有数据库对象

二、进行增加数据的相关操作是:

通过getWritableDatabase()方 法得到SQLiteDatabase对象,然后获得ContentValues对象并将数据添加到ContentValues对象中,最后调用inser()方法将数据插入到person表中。

insert()方法接收3个参数,第一个参数是数据表的名称,第二个参数表示如果发现将要插入的行为空行时,会将这个列名的值设为null,第三个参数为ContentValues对象。ContentValues类类似于Map类,通过键值对的形式存入数据,这里的key表示插入数据的列名,value 表示要插入的数据。

需要注意的是,使用完SQLiteDatabase对象后定要调用close()方法关闭,否则数据库连接会一直存在,不断消耗内存,当系统内存不足时将获取不到SQLiteDatabase对象,并且会报出数据库未关闭异常。

三、修改相应数据的注意事项

通过SQLiteDatebase对象db调用update()方法用来修改数据库中的数据,update()方法接收4个参数,第一个参数表示表名,第二个参数接收一个ContentValues对象,第三个参数可选择where语句,第四个参数表示whereClause语句中的占位参数列表,这些字符串会替换掉where条件中的 " ? "。

四、查询数据的先关操作是

在进行数据查询时使用的是SQLiteDatabase的query0方法,该方法返回的是一个行数集合Cursor。 Cursor 是一个游标接口,提供了遍历查询结果的方法,如移动指针方法move(),获得列值方法getString()等,通过这些方法可以获取集合中的属性值以及序号等。

需要注意的是,在使用完Cursor对象后,一定要及时关闭,否则会造成内存泄露。下面介绍如何使用SQLiteDatabase的query()方法查询数据,

这种操作方法类似于执行SQL语句 (语法和SQL server类似)。

1. 增加一条数据

1
db.execSQL("insert into perosn (name, price) values(?,?)",new String[]{name,price})

2. 修改一条数据

1
db.execSQL("update person set price =? where name =?", new String[]{price,name});

3. 删除一条数据

1
db.execSQL("delete from person where _id = ?",new String[]{id});

4. 查询一条数据

1
Cursor cursor = db.rawQuery("select _id,name,price from person where id =?",new String[]{id});

从上述代码可以看出,查询操作与增、删、改操作有所不同,前面三个操作都是通过execSQL()方法执行SQL语句,而查询操作使用的是rawQuery()方法。这是因为查询数据库会返回一个结果集Cursor,而execSQL()方法则没有返回值。

创建数据库的基本代码如下:

public class SqliteHelper extends SQLiteOpenHelper{

/**
* 1.上下文
* 2.数据库名字
* 3.工厂游标
* 4.版本号
* @param context
*/
public SqliteHelper(Context context) {
super(context, "Person.db", null, 1);
// TODO Auto-generated constructor stub
}
//创建  创建表  只要创建成功 只会执行一次
@Override
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
db.execSQL("create table person(id integer primary key autoincrement," +
"name text," +
"sex text)");
}

对于数据库方面的增删改查的相应代码如下:

//添加
public boolean add(String name,String age){ ContentValues values = new ContentValues();
//1.key 字段名  2.要进行添加的值
values.put("name", name);
values.put("age", age);
//1. 表名 2.要进行添加的列  3. 添加的值
long insert = sb.insert("user", null, values );
if(insert!=-1){
return true;
}else{
return false;
} } //查询
public String select(){
/**
* table, 表名
* columns, 查询列
* selection, 条件
* selectionArgs,条件的值
*  groupBy,组查询
*  having, 子查询
*  orderBy 顺序  升序  降序
*/
Cursor query = sb.query("user", null, null, null, null, null, null);
StringBuffer stringBuffer = new StringBuffer();
while (query.moveToNext()) { String name = query.getString(query.getColumnIndex("name"));
String age = query.getString(query.getColumnIndex("age"));
stringBuffer.append(name+"----"+age);
}
return stringBuffer.toString();
} //删除
public boolean delete(String name){
/**
* 1.表名
* 2.条件
* 3.条件的值
*/
int delete = sb.delete("user", "name = ?", new String[]{name});
if(delete!=-1){
return true;
}else{
return false;
} }
//修改 public boolean update(String name,String age,String tj){ /**
* table, 表名
* values,要修改的值
*  whereClause, 条件
*  whereArgs 条件的值
*/
ContentValues values = new ContentValues();
values.put("name", name);
values.put("age", age);
int update = sb.update("user", values, "name = ?", new String[]{tj}); if(update!=-1){
return true;
}else{
return false;
}
}
}

关于android中数据库的创建以及基础的增删改查的相应操作的更多相关文章

  1. 【黑马Android】(04)数据库的创建和sql语句增删改查/LinearLayout展示列表数据/ListView的使用和BaseAdater/内容提供者创建

    数据库的创建和sql语句增删改查 1. 载入驱动. 2. 连接数据库. 3. 操作数据库. 创建表: create table person( _id integer primary key, nam ...

  2. 数据库开发基础-SQl Server 控制数据库的服务+数据库的创建与管理(增删改查)

    控制数据库的服务: 方法一: 1.Windows+R 打开运行  打开cmd 2.输入net start MSSQLserver 启动数据库服务 输入net stop MSSQLserver 关闭数据 ...

  3. 数据库开发基础-★SQl Server 控制数据库的服务+数据库的创建与管理(增删改查)★

    控制数据库的服务: 方法一: 1.Windows+R 打开运行  打开cmd 2.输入net start MSSQLserver 启动数据库服务 输入net stop MSSQLserver 关闭数据 ...

  4. MVC3+EF4.1学习系列(二)-------基础的增删改查和持久对象的生命周期变化

    上篇文章中 我们已经创建了EF4.1基于code first的例子  有了数据库 并初始化了一些数据  今天这里写基础的增删改查和持久对象的生命周期变化 学习下原文先把运行好的原图贴来上~~ 一.创建 ...

  5. BitAdminCore框架应用篇:(二)创建一个简单的增删改查模块

    NET Core应用框架之BitAdminCore框架应用篇系列 框架演示:http://bit.bitdao.cn 框架源码:https://github.com/chenyinxin/cookie ...

  6. mysql之数据库的介绍和基本的增删改查

    一 学前知识 什么叫做静态页面:用户传入内容后,不能处理用户的请求,只能单纯的显示主页面的信息. 什么是负载均衡:通过计算服务器的性能,将客户发送过来的请求指派给某台服务器.一般还要有一个备份的负载均 ...

  7. Yii2.0高级框架数据库增删改查的一些操作(转)

    yii2.0框架是PHP开发的一个比较高效率的框架,集合了作者的大量心血,下面通过用户为例给大家详解yii2.0高级框架数据库增删改查的一些操作 --------------------------- ...

  8. Yii2.0高级框架数据库增删改查的一些操作

    yii2.0框架是PHP开发的一个比较高效率的框架,集合了作者的大量心血,下面通过用户为例给大家详解yii2.0高级框架数据库增删改查的一些操作 --------------------------- ...

  9. android 对sqlite数据库的增删改查等各种操作

    转载:http://blog.csdn.net/vrix/article/details/6717090 package com.sqlite.main; import java.io.File; i ...

随机推荐

  1. ubuntu下使用apt-get install安装软件的安装位置

    在ubuntu下使用 apt-get install 或 apt install 下载安装软件,软件下载及安装后的目录.: A.下载的软件的存放位置:/var/cache/apt/archives B ...

  2. 微信小程序修改request合法域名不生效及解决方法

    在小程序微信公众平台修改后请求,依然在console中显示修改前的域名. 解决:在小程序开发者工具中点击“详情”后点击“域名信息”,就会自动刷新

  3. php 数据库 操作

    header.php <?php error_reporting(0);//加上error_reporting(0);就不会弹出警告了 // header("Content-type: ...

  4. Python接口测试(第一个接口返回的数据作为第二个参数的入参)

    python代码如下 import requests url1="http://localhost:8080/pinter/com/getSku?id=1" respon=requ ...

  5. 基于Python3 + appium的Ui自动化测试框架

    UiAutoTest 一.概要 数据驱动的Ui自动化框架 二.环境要求 框架基于Python3 + unittest + appium 运行电脑需配置adb.aapt的环境变量,build_tools ...

  6. 同网页的WebRTC实现与源码分析

    基本按照Real time communication with WebRTC搭建(下面简称该网站为官方tutorial) 本文重视WebRTC的基于同页面通信的代码实现,主要讲述顺序是WebRTC的 ...

  7. 如何区分前端BUG和后台BUG?

    测试工程师不只是负责发现问题,除了发现问题这种基本功外,定位问题,提出解决方案,提出预防方案也是要掌握的技能.这里先说定位问题的要求,定位问题要向深入,前提当然是对功能.产品的流程.开发方案.开发人员 ...

  8. 基于 HTML5 Canvas 的拓扑组件 ToolTip 应用

    前言 ToolTip 效果是网页制作中常见的使用特效.当用户将鼠标悬浮在某个控件上时,ToolTip 显示并向用户展示相应的提示信息:当鼠标离开时,ToolTip 隐藏.一般情况下,我们使用 Tool ...

  9. oracle数据库表用序列实现主键自增长

    原理注意:序列和触发器必须建立在同一个用户名下否则运行出错1.建立数据表create table 表名(           userid number(10) primary key,        ...

  10. Oracle client客户端简易安装网上文档一

    Oracle client客户端简易安装网上文档一-------------------------------------------------------------------------一. ...