安卓简单的操作数据库
安卓本身自带数据,一般用于保存一些数据。操作数据库首先要创建,其次是增删改查。看过诸多网友的介绍,现简单的总结如下:(再次感谢大家的分享)代码奉上:
package com.myapplication.sql;import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;/*** Created by lake* 此类的功能:第三页的缓存数据的库*/
public class SQLiteHelper extends SQLiteOpenHelper {private final static String DATABASE_NAME = "Library";private final static int DATABASE_VERSION = 1;private final static String TABLE_NAME = "msg";//创建数据库,里面添加了3个参数,分别是:Msgone VARCHAR类型,30长度当然这了可以自定义//Msgtwo VARCHAR(20) Msgthree VARCHAR(30)) NOT NULL不能为空String sql = "CREATE TABLE " + TABLE_NAME+ "(_id INTEGER PRIMARY KEY,"+ " Msgone VARCHAR(30) NOT NULL,"+ " Msgtwo VARCHAR(20),"+ " Msgthree VARCHAR(30))";//构造函数,创建数据库public SQLiteHelper(Context context) {super(context, DATABASE_NAME, null, DATABASE_VERSION);}//建表@Overridepublic void onCreate(SQLiteDatabase db) {db.execSQL(sql);}@Overridepublic void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {String sql = "DROP TABLE IF EXISTS " + TABLE_NAME;db.execSQL(sql);onCreate(db);}//获取游标public Cursor select() {SQLiteDatabase db = this.getReadableDatabase();Cursor cursor = db.query(TABLE_NAME, null, null, null, null, null, null);return cursor;}//插入一条记录public long insert(String msg1,String msg2,String msg3 ) {SQLiteDatabase db = this.getWritableDatabase();ContentValues cv = new ContentValues();cv.put("Msgone", msg1);cv.put("Msgtwo", msg2);cv.put("Msgthree", msg3);long row = db.insert(TABLE_NAME, null, cv);return row;}//根据条件查询public Cursor query(String[] args) {SQLiteDatabase db = this.getReadableDatabase();Cursor cursor = db.rawQuery("SELECT * FROM "+TABLE_NAME+" WHERE BookName LIKE ?", args);return cursor;}//删除记录public void delete(int id) {SQLiteDatabase db = this.getWritableDatabase();String where ="_id = ?";String[] whereValue = { Integer.toString(id) };db.delete(TABLE_NAME, where, whereValue);}//更新记录public void update(int id, String msg1,String msg2,String msg3 ) {SQLiteDatabase db = this.getWritableDatabase();String where = "_id = ?";String[] whereValue = { Integer.toString(id) };ContentValues cv = new ContentValues();cv.put("Msgone", msg1);cv.put("Msgtwo", msg2);cv.put("Msgthree", msg3);db.update(TABLE_NAME, cv, where, whereValue);}
}
好,数据库创建完毕,剩下的就是如何使用了
但你网络请求到数据之后,可以定义一个方法:
addRec(数据);
这个方法如果每次网络请求都要调用的话,为了防止数据库里的数据重复,需要根据自己的情况删除数据。切记切记切记!!!
一般来说,这个数据就是一个实体类,我们早addRec的方法里循环它
for (int i = 0; i < movies.size(); i++) {//这里只是添加了一个数据,如果需要多个数据,那么在创建数据库表的时候可以增加字段。helper.insert(movies.get(i).getThumbnail(), "a", "b");//重新加载数据cursor.requery();
}
然后我们在没有网络的时候,也需要展示数据,就可以从数据库里获取了
先判断数据库里是否有数据,否则你懂得。
这里我保存了2个数据,所以只取2个
if (cursor.moveToNext()){cursor.moveToPosition(0);String picone = cursor.getString(1);cursor.moveToPosition(1);String pictwo = cursor.getString(1);//把数据放到实体类里movies1.add(new Movies.ResultBean(picone));movies1.add(new Movies.ResultBean(pictwo));//展示图片,你也可以做别的rv.setAdapter(new RVAdapter(getActivity(), movies1));
}
数据库基本方法:
1,获取某行的某个值:其中0表示第几行,默认是从第0行开始,1表示第几个,从第一个开始
cursor.moveToPosition(0);
cursor.getString(1);
cursor.isClosed();//如果为TRUE表示该游标已关闭
cursor.close();//关闭游标,且释放资源
cursor.getColumnCount();//返回所有列的总数
cursor.getColumnNames();//返回一个字符串数组的列名,即将列名全部返回到一个字符串数组中
cursor.getCount();//返回Cursor中的行数
cursor.moveToFirst();//移动光标到第一行
cursor.moveToLast();//移动光标到最后一行
cursor.moveToNext();//移动光标到下一行
cursor.moveToPrevious();//移动光标到上一行
int columnIndex = 0;
int position = 0;
cursor.getColumnName(columnIndex);//从给定的索引返回列名
cursor.moveToPosition(position);//移动光标到给定位置
2,循环
while(cursor.moveToNext()){
//moveToNext()移动光标到下一行
HashMap<String,String> HM = new HashMap<String,String>();
String id = cursor.getString(cursor.getColumnIndex("cityid"));
String name = cursor.getString(cursor.getColumnIndex("cityname"));
HM.put("cityid", id);
HM.put("cityname", name);
AL.add(HM);
}
3,判读是否为空
if (cursor.moveToFirst() == false)
{
Toast.makeText(mContext, "您的表中无数据!!!", Toast.LENGTH_SHORT).show();
}
安卓简单的操作数据库相关推荐
- android ormlite 查询,Android—Ormlite框架简单的操作数据库
大家在Android项目中或多或少的都会使用数据库,为了提高我们的开发效率,当然少不了数据库ORM框架了,尤其是某些数据库操作特别频繁的app:本篇博客将详细介绍ORMLite的简易用法. 下面开始介 ...
- Python学习 | pymysql操作数据库?真原生...
转载本文章请标明作者和出处 本文出自<Darwin的程序空间> 能阻止你成功的人,只有你自己 vlog 时间:2020年03月08日-2020年03月09日 ------晚上三个小时 学习 ...
- 安卓案例:利用SQLiteOpenHelper操作数据库及表
安卓案例:利用SQLiteOpenHelper操作数据库及表 一.运行效果 二.涉及知识点 1.利用SQLiteOpenHelper类创建与升级数据库 这个类是一个抽象类,我们必须继承该类创建一个子类 ...
- 简单的DOS命令操作数据库
简单的DOS命令操作数据库 启动服务:net start 数据库服务名字 关闭服务:net stop 数据库服务名字 连接数据库:mysql -u用户名 -p密码 show databases -- ...
- 批处理 操作mysql_超简单使用批处理(batch)操作数据库
超简单使用批处理(batch)操作数据库 批处理(batch)是什么 批处理的执行就好比快递员的工作: 未使用批处理的时候,快递员一次从分发点将一件快递发给客户: 使用批处理,则是快递员将所有要派送的 ...
- php django mysql配置文件_Mysql学习Django+mysql配置与简单操作数据库实例代码
<Mysql学习Django+mysql配置与简单操作数据库实例代码>要点: 本文介绍了Mysql学习Django+mysql配置与简单操作数据库实例代码,希望对您有用.如果有疑问,可以联 ...
- cad与连接mySQL数据库_跨服务器操作数据库?其实很简单!(下)
之前一篇文章一步一步的教小伙伴们如何建立SQL Server的数据库链接(DBLINK),详细步骤可查看上篇:跨服务器操作数据库?其实很简单!(上) 今天我们来教大家如何连接MYSQL和Oracle的 ...
- nodejs操作sqlserver数据_nodejs基于mssql模块连接sqlserver数据库的简单封装操作示例...
本文实例讲述了nodejs基于mssql模块连接sqlserver数据库的简单封装操作.分享给大家供大家参考,具体如下: 注意:开启sqlserver服务器允许远程连接的步骤,自行百度,很多经验,no ...
- 安卓案例:利用SQLiteDatabase操作数据库与表
安卓案例:利用SQLiteDatabase操作数据库与表 一.SQLite简介 SQLite是D. Richard Hipp用 C语言编写 的开源嵌入式数据库引擎.它支持大多数的SQL92标准,并且可 ...
最新文章
- windows10+Python3.7安装dlib库进行面部标志识别
- adb指令没有数据线,在WLAN下也可使用
- 决心书之学习linux高级运维
- NiceScroll文档阅读笔记-NiceScroll(3.7.6)基本使用
- TransE:Translating Embedding多元关系数据嵌入(知识图谱嵌入)2013 NIPS
- git本地给远程仓库创建分支
- 最大似然估计和最大后验估计
- pythonsample_python sample code | 学步园
- 使用python编写聊天小程序
- html获取屏幕的高度,js如何获取屏幕高度
- C语言编程练习----山东理工大学ACM平台实验一A--I题解
- 串联型与并联型电压基准的区别
- Error Based Injection和sql注入函数
- 阿里巴巴社招笔试题——多线程打印
- BUGKU-成绩查询
- JointJS+新的MindMap应用程序
- 怎么把英文文献转译为中文?
- php crypt md5,PHP crypt()-返回的md5哈希
- ORA-20005 统计信息被锁定
- BUUCTF:[安洵杯 2019]吹着贝斯扫二维码
热门文章
- MFC WebBrowser获取网面完整源码 WebBrowser获取网面完整HTML
- 微信转发(分享)功能
- Axure可视化动态数据图表6合1元件库
- java 发送邮件 outlook_JavaMail发送带图片正文的邮件,outlook等邮箱不显示的问题 | 学步园...
- 关于解决错误apt --fix-broken install
- 科技云报道:超融合遍地开花,用户离“云计算自由”却依然很远?
- 数据存储大讲堂:谈磁盘列阵与RAID技巧
- 没见面,未说话,TA却在风雨里更懂你
- 【深度学习入门:基于Python的理论与实现】书本学习笔记 第三章 神经网络
- PS中括号不能调整画笔或仿章大小