数据持久化:

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数据库的更多相关文章

  1. Android之SQLite数据库篇

    一.SQLite简介 Google为Andriod的较大的数据处理提供了SQLite,他在数据存储.管理.维护等各方面都相当出色,功能也非常的强大. 二.SQLite的特点 1.轻量级使用 SQLit ...

  2. Qt5 开发 iOS 应用之访问 SQLite 数据库

    开发环境: macOS 10.12.1 Xcode 8.1 Qt 5.8 iPhone 6S+iOS 10.1.1   源代码: 我在 Qt 程序里指定了数据库的名称来创建数据库,在 Win10.An ...

  3. 【Win 10 应用开发】Sqlite 数据库的简单用法

    如果老周没记错的话,园子里曾经有朋友写过如何在 UWP 项目中使用 Sqlite数据库的文章.目前我们都是使用第三方封装的库,将来,SDK会加入对 Sqlite 的支持. 尽管目前 UWP-RT 库中 ...

  4. Android之SQLite数据库使用

    转载整理于:http://my.csdn.net/lmj623565791 我刚开始接触Android的时候甚至都不敢相信,Android系统竟然是内置了数据库的!好吧,是我太孤陋寡闻了.由于我之前是 ...

  5. 让PDF.NET支持最新的SQLite数据库

    最近项目中用到了SQLite,之前项目中用的是PDF.NET+MySQL的组合,已经写了不少代码,如果能把写好的代码直接用在SQLite上就好了,PDF.NET支持大部分主流的数据库,这个当然可以,只 ...

  6. iOS sqlite数据库图像化查看

    问题描述:在xocde上用sqlite数据库的时候,因为没有图形化界面,有些时候很难看出自己设计的数据库是否有问题,比如我刚上手sqlite数据库设计id为自增长时,很自然的用了identify(1, ...

  7. Android中SQLite数据库小计

    2016-03-16 Android数据库支持 本文节选并翻译<Enterprise Android - Programing Android Database Applications for ...

  8. Android开发-之SQLite数据库

    之前我们讲了如何将数据存储在文件中,那么除了这种方式呢,就是我们常见的大家都知道的将数据存储在数据库当中了. 将数据存储在数据库中的优势: 1)存储在数据库中的数据更加方便操作,比如增.删.改.查等 ...

  9. Java操作Sqlite数据库-jdbc连接

    Java操作Sqlite数据库步骤: 1. 导入Sqlite jdbc 本文使用sqlite-jdbc-3.7.2.jar,下载地址 http://pan.baidu.com/s/1kVHAGdD 2 ...

  10. Android开发学习——SQLite数据库与单元测试

    SQLite数据库 轻量级关系型数据库 创建数据库需要使用的api:SQLiteOpenHelper  public class Myopenhelper extends SQLiteOpenHelp ...

随机推荐

  1. 数据库连接池原理 与实现(动脑学院Jack老师课后自己的练习有感)

    第一步: 首先创建一个数据库连接池的接口: 数据库连接池接口有两个主要的方法,其中一个getConnection();  通过数据库连接池返回给用户封装的数据库连接对象 createConnectio ...

  2. 一次性搞明白 service和factory区别

    原文链接 http://blog.thoughtram.io/angular/2015/07/07/service-vs-factory-once-and-for-all.html 等下,已经有一篇文 ...

  3. C学习笔记 知识集锦(二)

     1. 数组和指针 2. 字符串赋值 3. memset&memcpy 4. 机器数和真值,原码,反码和补码 5. 文件指针和文件描述符 6. 内存泄露和内存损坏 7. 什么是不可移植的程序 ...

  4. 在Eclipse中使用Git提交到远程仓库

  5. nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use) 错误解决

    今天在做LNMP的时候,启动nginx服务,无法开启,导致网页打不开.把服务从起一下发现提示错误如下: Starting nginx: nginx: [emerg] bind() to 0.0.0.0 ...

  6. 【转】fiddler-http协议调试代理工具

    题目有一些激进.但是在前端界打滚了这么多年,fiddler一直都是陪着我走过来了.它就是一个抓包神奇,代理神器.它的厉害之处,我简单地说一下,希望你们看了以后,能点上32个赞. 1.fiddler为何 ...

  7. Contributing to the C++ Core Guidelines

    Contributing to the C++ Core Guidelines "Within C++ is a smaller, simpler, safer language strug ...

  8. CSS中LI圆点样式li {list-style-type:符号名称}

    css中用list-style-type指定列表(lists)前面符号,如下: li {list-style-type:符号名称} 符号名称可用的值为: disc : CSS1 实心圆 circle ...

  9. ubuntu配置NFS

    ubuntu配置NFS: sudo apt-get install nfs-kernel-server 配置/etc/exports 例如:我们要将根目录下的 /opt/FriendlyARM/min ...

  10. 图片轮播器bcastr4.swf“&”符号的问题

    bcastr4.swf是一个很不错的网页图片轮播器,我一直使用它作为网站首页图片轮播的控件. http://xiaogui.org/bcastr-open-source-flash-image-sil ...