SQLite数据库
数据持久化:
1、文件存储
适合用于存储一些简单的文本数据或二进制数据
存储数据:openFileOutput(文件名,操作模式),返回值为一个FileOutputStream对象,借助FileOutputStream对象构建出OutputStreamWriter对象,再借助OutputStreamWriter构建出一个BufferedWriter对象,通过bufferedWriter对象将文本写入到文件中。
public void save(){
String data = "data to save"
FileOutputStream out = null;
BufferedWriter writer = null;
try{
out = openFileOutput("data",Context.MODE_PRIVATE);
writer = new BufferedWriter(new OutputStreamWriter(out));
writer.write(data);
}catch(IOException e){
e.printStackTrace();
}finally{
try{
if(writer != null){
writer.close();
}catch(IOException e){
e.printStackTrace();
}
}
}
}
读取数据:openFileInput(文件名),返回FileInputStream对象。
Public String load(){
FileInputStream in = null;
BufferedReader reader = null;
StringBuilder content = new StringBuilder();
try{
in = openFileInput("data");
reader = new BufferedReader(new InputStreamReader(in));
String line = "";
while((line = reader.readLine())!=null){
content.append(line);
}
}catch(IOException e){
e.printStackTrace();
}finally{
if(reader != null){
try{
reader.close();
}catch(IOException e){
e.printStackTrace();
}
}
}
return content.toString();
}
2、SharedPreferences存储
键值对。
获得SharePreferences对象那个的方法
(1)getSharedPreferences(文件名,操作模式)
(2)getPreferences(文件名)
(3)getDefaultSharePreferences(Context)
存储数据:
(1)调用edit()获取一个SharedPreferences.Editor对象
(2)向SharedPreferences.Editor中添加数据
(3)调用commit()提交数据
读取数据:
getXXX(键,默认值)方法
SQLite数据库
创建:通过SQLiteOpenHelper帮助类实现创建和升级。
getReadableDatabase()和getWritableDatabase()
DOS窗口操作SQLite数据库?
1)adb shell
2)ls
3)cd 数据表的路径
4)sqlite3 数据库完整的名字
4.1) .tables
4.2) select * from notetab;
4.3) .exit
4.4) .help
升级:更新版本号
增删改查
增:insert(表名,null,ContentValues对象)
改:updata(表名,ContentValues对象,某一行或几行的数据)
删:delete(表名,某一行或某几行的数据)
查:query(表名,哪列,某一行或几行的数据,group by的列,过滤,排序方式),返回一个Cursor对象
事务:保证一系列的操作要么完成,要么一个都不完成。
(1)调用beginTransaction()开启事务
(2)在异常捕获代码块中执行具体的数据库操作
(3)调用setTransactionSuccessful()表示执行成功
(4)endTransaction()结束事务
public class MainActivity extends Activity { private MyDatabaseHelper dbHelper; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
dbHelper = new MyDatabaseHelper(this,"BookStore.db",null,2);
Button createDatabase = (Button) findViewById(R.id.create_database);
createDatabase.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
dbHelper.getWritableDatabase();
}
}); Button addData = (Button) findViewById(R.id.add_data);
addData.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
SQLiteDatabase db = dbHelper.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("name","The Da Vinci Code");
values.put("author","Dan Brown");
values.put("pages","100");
values.put("price","30");
db.insert("Book",null,values);
values.clear(); values.put("name","世界末日");
values.put("author","死神");
values.put("pages","10000");
values.put("price","50000");
db.insert("Book",null,values);
}
});
Button updataData = (Button) findViewById(R.id.updata_data);
updataData.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
SQLiteDatabase db = dbHelper.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("price","200");
db.update("Book",values,"name = ?",new String[]{"Tea Da Vinci Code"});
}
});
Button deleteData = (Button) findViewById(R.id.delete_data);
deleteData.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
SQLiteDatabase db = dbHelper.getWritableDatabase();
db.delete("Book","pages<?",new String[]{"450"});
}
});
Button quertData = (Button) findViewById(R.id.query_data);
quertData.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
SQLiteDatabase db = dbHelper.getWritableDatabase();
Cursor cursor = db.query("Book",null,null,null,null,null,null);
if (cursor.moveToFirst()){
do{
String name = cursor.getString(cursor.getColumnIndex("name"));
String author = cursor.getString(cursor.getColumnIndex("author"));
int pages = cursor.getInt(cursor.getColumnIndex("pages"));
double price = cursor.getDouble(cursor.getColumnIndex("price")); Log.i("XYZ","book name is"+name);
Log.i("XYZ","book author name is"+author);
Log.i("XYZ","book pages is"+pages);
Log.i("XYZ","book price is"+price);
}while (cursor.moveToNext());
}
cursor.close();
}
});
Button replaceData = (Button) findViewById(R.id.replace_data);
replaceData.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
SQLiteDatabase db = dbHelper.getWritableDatabase();
db.beginTransaction(); //开启事务
db.delete("Book",null,null);
if (true){
throw new NullPointerException();
} ContentValues values = new ContentValues();
values.put("name","游戏大全");
values.put("author","老三");
values.put("pages","20");
values.put("price","35.5");
db.insert("Book",null,values);
db.setTransactionSuccessful(); //事务执行成功
db.endTransaction(); //结束事务
}
}); }
}
SQLite数据库的更多相关文章
- Android之SQLite数据库篇
一.SQLite简介 Google为Andriod的较大的数据处理提供了SQLite,他在数据存储.管理.维护等各方面都相当出色,功能也非常的强大. 二.SQLite的特点 1.轻量级使用 SQLit ...
- Qt5 开发 iOS 应用之访问 SQLite 数据库
开发环境: macOS 10.12.1 Xcode 8.1 Qt 5.8 iPhone 6S+iOS 10.1.1 源代码: 我在 Qt 程序里指定了数据库的名称来创建数据库,在 Win10.An ...
- 【Win 10 应用开发】Sqlite 数据库的简单用法
如果老周没记错的话,园子里曾经有朋友写过如何在 UWP 项目中使用 Sqlite数据库的文章.目前我们都是使用第三方封装的库,将来,SDK会加入对 Sqlite 的支持. 尽管目前 UWP-RT 库中 ...
- Android之SQLite数据库使用
转载整理于:http://my.csdn.net/lmj623565791 我刚开始接触Android的时候甚至都不敢相信,Android系统竟然是内置了数据库的!好吧,是我太孤陋寡闻了.由于我之前是 ...
- 让PDF.NET支持最新的SQLite数据库
最近项目中用到了SQLite,之前项目中用的是PDF.NET+MySQL的组合,已经写了不少代码,如果能把写好的代码直接用在SQLite上就好了,PDF.NET支持大部分主流的数据库,这个当然可以,只 ...
- iOS sqlite数据库图像化查看
问题描述:在xocde上用sqlite数据库的时候,因为没有图形化界面,有些时候很难看出自己设计的数据库是否有问题,比如我刚上手sqlite数据库设计id为自增长时,很自然的用了identify(1, ...
- Android中SQLite数据库小计
2016-03-16 Android数据库支持 本文节选并翻译<Enterprise Android - Programing Android Database Applications for ...
- Android开发-之SQLite数据库
之前我们讲了如何将数据存储在文件中,那么除了这种方式呢,就是我们常见的大家都知道的将数据存储在数据库当中了. 将数据存储在数据库中的优势: 1)存储在数据库中的数据更加方便操作,比如增.删.改.查等 ...
- Java操作Sqlite数据库-jdbc连接
Java操作Sqlite数据库步骤: 1. 导入Sqlite jdbc 本文使用sqlite-jdbc-3.7.2.jar,下载地址 http://pan.baidu.com/s/1kVHAGdD 2 ...
- Android开发学习——SQLite数据库与单元测试
SQLite数据库 轻量级关系型数据库 创建数据库需要使用的api:SQLiteOpenHelper public class Myopenhelper extends SQLiteOpenHelp ...
随机推荐
- QT 调试时出现 During startup program exited with code 0xc0000135 错误
我用的QT creator 5.70 出现上述原因是动态库加载不成功,但是QTcreator 不会提示什么动态库,具体缺乏什么动态库要用VS新建一个工程调用才可以看到,这也是QT Creator很大的 ...
- myisam、innodb存储引擎比较
MYSQL表类型(存储引擎) 1.概述 MySQL数据库其中一个特性是它的存储引擎是插件式的.用户可以根据应用需要选择存储引擎.Mysql默认支持多种存储引擎,以适用各种不同的应用需要.默认情况下,创 ...
- VSO-Branch和Merge
分支策略 一般采用一个MAIN分支,一个或多个DEVELOPMENT分支的分支结构,如下图(来自:https://msdn.microsoft.com/en-us/library/ee782536.a ...
- Java以基础类库
Java以基础类库JFC(Java Foundation Class)的形式为程序员提供编程接口API,类库中的类按照用途归属于不同的包中. (一)java.lang包 Java最常用的包都属于该包, ...
- Python快速建站系列-Part.Five.3-个人主页及资料页面
|版权声明:本文为博主原创文章,未经博主允许不得转载. 第五部分最后一节,完成个人主页里资料页面的个人资料的展示和修改功能,不过毕竟功能比较少,个人资料其实只有昵称一项,手动滑稽. 一如既往先写出来u ...
- 关于oracle数据库中进行查询的时候出现效率特别差的一种情况
下面这段代码执行效率是极慢的(根本没执行完成过): select /*+ parallel(16) */ z.small_code,trunc(hs.CREATED_AT),sum(hs.COST_S ...
- SQL Server 参数化 PARAMETERIZATION
ALTER DATABASE dbname SET PARAMETERIZATION SIMPLE --默认 ALTER DATABASE dbname SET PARAMETERIZATI ...
- Openbox中指定目录打开程序
现在遇到这样的情况,在浏览器的下载中,点击在文件夹中显示, 结果这个使用系统调用的是Baobab,一款分析磁盘使用情况的软件,而不是使用目录浏览程序,例如nautilus 查询后知道,系统使用xdg- ...
- ExtJS6 自适应浏览器窗口大小
ExtJS6官方文档推荐使用Ext.on.做一个小例子,创建一个Panel显示在页面上,使它的大小随浏览器变化,自适应浏览器窗口大小. html:增加一个css样式给Panel加上红色border. ...
- 数据流 in redux
之前用学过的react和react-router写了个单页面应用,但写完后总感觉还欠缺点什么,怎么说呢,就是感觉在数据流的控制上被框架约束的厉害,很不自由,比如兄弟组件间的通信就很不方便.然后才了解到 ...