Android编程权威指南-----(三)SharedPreferences、SQLite使用
来源:互联网 发布:澳门网络博客游戏 编辑:程序博客网 时间:2024/04/30 05:33
1.SharedPreferences
存储,读取
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //存储数据 setContentView(R.layout.activity_main); SharedPreferences preferences =getSharedPreferences("user", Context.MODE_PRIVATE); SharedPreferences.Editor editor = preferences.edit(); String name = "Recar"; String age = "21"; editor.putString("name",name); editor.putString("age",age); editor.commit(); //获取数据 SharedPreferences preferencesget =getSharedPreferences("user", Context.MODE_PRIVATE); String nameget = preferencesget.getString("name","defaultname"); String ageget = preferencesget.getString("age","0"); System.out.println(nameget+"+"+ageget);
preferencesget.getString("name","defaultname");
中的第一个参数是存到的key。第二个是如果在SharedPreferences没有找到返回什么。
2.SQLite
SQLite是一种轻量级数据库系统
主要使用两个类
SQLiteOpenHelper
创建数据库,对数据库进行读取操作。打开数据库的回调函数,重要的关闭数据库
SQLiteDatabase
插入数据,删除,修改,查询。
一个例子参考
http://blog.csdn.net/jjaze3344/article/details/7249578
http://www.cnblogs.com/wenfei123chai/p/4270189.html
主要流程是写一个类继承SQLiteOpenHelper
用他可以创建数据库。创建表。
package com.example.administrator.sql2;import android.content.Context;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteOpenHelper;import android.util.Log;/** * Created by Administrator on 2017/4/10. */public class DatabaseHelper extends SQLiteOpenHelper { private static final int VERSION = 2; private static final String Recar="Recar"; //三个不同参数的构造函数 //带全部参数的构造函数,此构造函数必不可少 public DatabaseHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) { super(context, name, factory, version); } //带两个参数的构造函数,调用的其实是带三个参数的构造函数 public DatabaseHelper(Context context,String name){ this(context,name,VERSION); } //带三个参数的构造函数,调用的是带所有参数的构造函数 public DatabaseHelper(Context context,String name,int version){ this(context, name,null,version); } @Override public void onCreate(SQLiteDatabase db) { Log.i(Recar,"create a Database"); //创建数据库sql语句 String sql = "create table user(id int,name varchar(20))"; //执行创建数据库操作 db.execSQL(sql); } @Override public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) { Log.i(Recar,"update a Database"); }}
利用this来调用构造参数
第三个构造函数调用的是第一个全部参数的。第二个构造函数调用的是第三个三个参数的。
第二个最终是两个参数。用作初始化创建对象,会调用第三个,接着调用第一个构造函数。
布局文件
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <Button android:id="@+id/createDatabase" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/createDatabse"/> <Button android:id="@+id/updateDatabase" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/updateDatabase"/> <Button android:id="@+id/insert" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/insert"/> <Button android:id="@+id/update" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/update"/> <Button android:id="@+id/query" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/query"/> <Button android:id="@+id/delete" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/delete"/></LinearLayout>
字符串资源文件
<resources> <string name="createDatabse">createDatabse</string> <string name="updateDatabase">updateDatabase</string> <string name="insert">insert</string> <string name="update">update</string> <string name="query">query</string> <string name="delete">delete</string> <string name="app_name">sql2</string></resources>
activity
package com.example.administrator.sql2;import android.content.ContentValues;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.util.Log;import android.view.View;import android.widget.Button;public class MainActivity extends AppCompatActivity implements View.OnClickListener { private final static String Recar="Recar"; Button createDatabase=null; Button updateDatabase=null; Button insert=null; Button update=null; Button query=null; Button delete=null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); findViews(); } private void findViews() { //根据控件ID得到控件 createDatabase = (Button) this.findViewById(R.id.createDatabase); updateDatabase = (Button) this.findViewById(R.id.updateDatabase); insert = (Button) this.findViewById(R.id.insert); update = (Button) this.findViewById(R.id.update); query = (Button) this.findViewById(R.id.query); delete = (Button) this.findViewById(R.id.delete); //添加监听器 createDatabase.setOnClickListener( this); updateDatabase.setOnClickListener(this); insert.setOnClickListener(this); update.setOnClickListener(this); query.setOnClickListener(this); delete.setOnClickListener(this); } public void onClick(View v) { //判断所触发的被监听控件,并执行命令 switch(v.getId()){ //创建数据库 case R.id.createDatabase: //创建一个DatabaseHelper对象 DatabaseHelper dbHelper1 = new DatabaseHelper(MainActivity.this, "test_db"); //取得一个只读的数据库对象 SQLiteDatabase db1 = dbHelper1.getReadableDatabase(); break; //更新数据库 case R.id.updateDatabase: DatabaseHelper dbHelper2 = new DatabaseHelper(MainActivity.this, "test_db", 2); SQLiteDatabase db2 = dbHelper2.getReadableDatabase(); break; //插入数据 case R.id.insert: //创建存放数据的ContentValues对象 ContentValues values = new ContentValues(); //像ContentValues中存放数据 values.put("id", 1); values.put("name","zhangsan"); DatabaseHelper dbHelper3 = new DatabaseHelper(MainActivity.this, "test_db"); SQLiteDatabase db3 = dbHelper3.getWritableDatabase(); //数据库执行插入命令 db3.insert("user", null, values); break; //更新数据信息 case R.id.update: DatabaseHelper dbHelper4 = new DatabaseHelper(MainActivity.this, "test_db"); SQLiteDatabase db4 = dbHelper4.getWritableDatabase(); ContentValues values2 = new ContentValues(); values2.put("name", "xiaosan"); db4.update("user", values2, "id=?", new String[]{"1"}); break; //查询信息 case R.id.query: DatabaseHelper dbHelper5 = new DatabaseHelper(MainActivity.this, "test_db"); SQLiteDatabase db5 = dbHelper5.getReadableDatabase(); //创建游标对象 Cursor cursor = db5.query("user", new String[]{"id","name"}, "id=?", new String[]{"1"}, null, null, null, null); //利用游标遍历所有数据对象 while(cursor.moveToNext()){ String name = cursor.getString(cursor.getColumnIndex("name")); //日志打印输出 Log.i(Recar,"query-->"+name); } break; //删除记录 case R.id.delete: DatabaseHelper dbHelper6 = new DatabaseHelper(MainActivity.this,"test_db"); SQLiteDatabase db6 = dbHelper6.getWritableDatabase(); db6.delete("user", "id=?", new String[]{"1"}); break; default: Log.i(Recar,"error"); break; } }}
让activity实现了 View.OnClickListener
所以如此添加监听器 `
//添加监听器 createDatabase.setOnClickListener( this); updateDatabase.setOnClickListener(this);
然后只要当前activity被点击了就判断switch
利用 View.getId来获取点击的id然后进行对应操作
进行操作的话是先获取SQLiteDatabase
DatabaseHelper dbHelper= new DatabaseHelper(MainActivity.this, "test_db");SQLiteDatabase db = dbHelper.getWritableDatabase();
就可以用db来进行操作了。
对应的insert。update等
!注意query的参数和利用游标来获取
Cursor cursor = db5.query("user", new String[]{"id","name"}, "id=?", new String[]{"1"}, null, null, null, null); //利用游标遍历所有数据对象 while(cursor.moveToNext()){ String name = cursor.getString(cursor.getColumnIndex("name")); //日志打印输出 Log.i(Recar,"query-->"+name); }
参数是第一个是表名,然后字符串数组!要创建个!然后是wherer条件加上问号。再然后是?是什么具体的参数。之后就是一些groupby oredrby的等条件。
不用就写null
所有的都是从日志打出
遇到了一些问题
用命令行查看 SQLite的时候显示ls: .: Permission denied
是因为权限不够。su 一下就好了。
一定要开启avd的时候才能进入查看。
ContentProvider不是很明白。。。继续学习。
- Android编程权威指南-----(三)SharedPreferences、SQLite使用
- 《Android编程权威指南》
- Android编程权威指南-----(三)第二个Activity
- Android编程权威指南第三版挑战练习三
- Android编程权威指南笔记
- Android编程权威指南之使用RecyclerView显示列表
- Android编程权威指南之Activity的抽象类使用
- 《android编程权威指南》RecyclerView的notifyItemChanged()方法使用
- SQLite权威指南---SQLite介绍
- Android编程权威指南 图书笔记
- 《Android编程权威指南》学习笔记
- Android 编程权威指南 阅读笔记
- Android 编程 权威 指南 阅读 笔记
- android权威编程指南学习笔记
- Android编程权威指南学习笔记01
- Android编程权威指南学习笔记02
- Android权威编程指南学习笔记1
- Android权威编程指南学习笔记2
- 1.getting started Stanford CoreNLP
- 赶去公司(某客某易模拟题)
- MyBatis
- io.dropwizard.metrics
- 【Spring学习26】Aware相关接口
- Android编程权威指南-----(三)SharedPreferences、SQLite使用
- yuv、pcm数据的介绍和获取
- python进阶学习笔记(三)——实现python任意个数的关键字参数
- Docker搭建本地私有仓库
- 常用的安全算法
- KMP算法next数组详解
- UVA
- C++ 数组类型
- 位异或运算符