zoukankan      html  css  js  c++  java
  • 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();    //结束事务
                }
            });
    
        }
    }
    

      

  • 相关阅读:
    利用进制转换压缩数字
    一个不错的移动政务网站
    系统缓存全解析(转摘)
    GeoDatabase元数据不能编辑的问题“The application is not licensed to perform this operation ”
    RSA算法的分析与实现(转载)
    云计算经济学
    Memcached在Windows操作系统下多实例并存(转载)
    AGS FlexView 与 ArcGIS Server的FeatureLayer交互的过程
    转载>ArcEngine中版本的使用
    基于ArcEngine的地图四着色算法的实现(转载)
  • 原文地址:https://www.cnblogs.com/yl-saber/p/6098497.html
Copyright © 2011-2022 走看看