• Android学习笔记(SQLite的简单使用)


    1.SQLite介绍

         SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中。它是D.RichardHipp建立的公有领域项目。它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了

    2.SQLiteOpenHelper的使用方法

       常用方法
        1.getReadableDatabase():得到可读的数据库,返回一个SQLiteDatabase对象,提供一些管理数据库的方法
        2.getWritableDatabase():得到一个可写的数据库,返回一个SQLiteDataba
        3.onCreate(SQLiteDatabase db):创建一个表
        4.onOpen(SQLiteDatabase db):打开数据库
        5.onUpgrade(SQLiteDatabase db,int oldVersion,int newVersion):修改数据库的表结构的方法
        6.close()
        当需要操作数据库的时候,必须先获得一个SQLiteOpenHelper,他是一个抽象类,我们必须写一个类,来继承他,继承之后,我们拥有了getReadableDatabase和getWritableDatabase两个方法,

    3.使用adb访问SQLite

    进入adb命令行,查询数据库表,和普通的sql语句完全一样(select * from user)

    Adb为调试工具,进入命令行 /data/data 当我们创建应用程序的时候,只要应用运行,都会在此目录下生成

    当点击创建数据库之后,会生成如下文件夹

    进入Databases

    链接数据库实例

    4.SQLite实现增删改查的Demo

    布局代码(线性水平布局,五个按钮)

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        tools:context="com.example.sqlitedemo.MainActivity" >
    
    
        <Button 
            android:id="@+id/createBtn"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="创建数据库"/>
        
        <Button 
            android:id="@+id/updateBtn"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="更新数据库"/>
        
        <Button 
            android:id="@+id/insertDataBtn"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="插入数据"/>
        
        <Button 
            android:id="@+id/updateDataBtn"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="更新数据"/>
        
        <Button 
            android:id="@+id/queryDataBtn"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="查询数据"/>
    </LinearLayout>

    数据库工具类代码

    package com.example.sqlitedemo.db;
    
    import android.content.Context;
    import android.database.sqlite.SQLiteDatabase;
    import android.database.sqlite.SQLiteDatabase.CursorFactory;
    import android.database.sqlite.SQLiteOpenHelper;
    
    public class DatabaseHelper extends SQLiteOpenHelper{
    
        private static final int VERSION = 1;
        /**
         * 在sqliteOpenHelper子类中必须有该构造函数,
         * 第一个参数为activity
         * 第二个参数:表的名字
         * 第三个函数:null
         * 第四个参数:数据库的版本
         */
        
        public DatabaseHelper(Context context, String name, CursorFactory factory,
                int version) {
            super(context, name, factory, version);
            // TODO Auto-generated constructor stub
        }
    
        /**
         * 构造函数2
         * @param context
         * @param name
         */
        public  DatabaseHelper(Context context, String name) {
            // TODO Auto-generated constructor stub
            this(context, name, VERSION);
        }
        
        /**
         * 构造函数3
         * @param context
         * @param name
         * @param version
         */
        public  DatabaseHelper(Context context, String name,int version) {
            // TODO Auto-generated constructor stub
            this(context, name, null, version);
        }
        
        /**
         * 该函数在第一次创建数据库的时候执行,第一次得到SQLiteDatabase对象的时候,调用次方法
         * @param db
         */
        @Override
        public void onCreate(SQLiteDatabase db) {
            // TODO Auto-generated method stub
            System.out.println("创建数据库");
            String strCreateSQL = "create table user(id int,name varchar(20))";
            db.execSQL(strCreateSQL);
        }
    
        /**
         * 执行更新数据库
         * @param db
         * @param oldVersion
         * @param newVersion
         */
        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
            // TODO Auto-generated method stub
            System.out.println("更新数据库");
        }
    
    }

    数据库操作类代码

    package com.example.sqlitedemo;
    
    import com.example.sqlitedemo.db.DatabaseHelper;
    
    import android.app.Activity;
    import android.content.ContentValues;
    import android.database.Cursor;
    import android.database.sqlite.SQLiteDatabase;
    import android.os.Bundle;
    import android.view.Menu;
    import android.view.MenuItem;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    import android.widget.Toast;
    
    public class MainActivity extends Activity {
    
        private Button createBtn;
        private Button updateBtn;
        private Button insertDataBtn;
        private Button updateDataBtn;
        private Button queryDataBtn;
        
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            createBtn = (Button) findViewById(R.id.createBtn);
            updateBtn = (Button) findViewById(R.id.updateBtn);
            insertDataBtn = (Button) findViewById(R.id.insertDataBtn);
            updateDataBtn = (Button) findViewById(R.id.updateDataBtn);
            queryDataBtn = (Button) findViewById(R.id.queryDataBtn);
            
            createBtn.setOnClickListener(new createListener());
            updateBtn.setOnClickListener(new updateListener());
            insertDataBtn.setOnClickListener(new insertDataListener());
            updateDataBtn.setOnClickListener(new updateDataListener());
            queryDataBtn.setOnClickListener(new queryDataListener());
        }
    
        class createListener implements OnClickListener{
    
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                DatabaseHelper dbHelper = new DatabaseHelper(MainActivity.this, "test_mzl");
                SQLiteDatabase  db = dbHelper.getWritableDatabase();
                
            }
        }
        
        class updateListener  implements OnClickListener{
    
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                //更改数据库实力的版本。默认就会执行onUpgrade方法
                DatabaseHelper dbHelper = new DatabaseHelper(MainActivity.this, "test_mzl",2);
                SQLiteDatabase  db = dbHelper.getWritableDatabase();
            }
            
        }
        
        class insertDataListener  implements OnClickListener{
    
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                //生成一个数据库写入时存放数据的对象,键为列名,值为值
                ContentValues values = new ContentValues();
                values.put("id", 1);
                values.put("name", "mzl");
                
                //更改数据库实力的版本。默认就会执行onUpgrade方法
                DatabaseHelper dbHelper = new DatabaseHelper(MainActivity.this, "test_mzl",2);
                SQLiteDatabase  db = dbHelper.getWritableDatabase();
                db.insert("user", null, values);
                Toast.makeText(MainActivity.this, "插入成功", Toast.LENGTH_SHORT).show();
            }
            
        }
        
        class updateDataListener  implements OnClickListener{
    
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                ContentValues values = new ContentValues();
                values.put("name", "mzl修改");
                //更改数据库实力的版本。默认就会执行onUpgrade方法
                DatabaseHelper dbHelper = new DatabaseHelper(MainActivity.this, "test_mzl",2);
                SQLiteDatabase  db = dbHelper.getWritableDatabase();
                db.update("user", values, "id=?", new String[]{"1"});
                Toast.makeText(MainActivity.this, "更新成功", Toast.LENGTH_SHORT).show();
            }
            
        }
        
        
        class queryDataListener  implements OnClickListener{
    
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                //更改数据库实力的版本。默认就会执行onUpgrade方法
                DatabaseHelper dbHelper = new DatabaseHelper(MainActivity.this, "test_mzl",2);
                SQLiteDatabase  db = dbHelper.getReadableDatabase(); 
                Cursor  cursor = db.query("user", new String[]{"id","name"}, "id=?", new String[]{"1"}, null, null, null);
                while(cursor.moveToNext()){
                    String name = cursor.getString(cursor.getColumnIndex("name"));
                    Toast.makeText(MainActivity.this, name, Toast.LENGTH_SHORT).show();
                }
            }
            
        }
        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            // Inflate the menu; this adds items to the action bar if it is present.
            getMenuInflater().inflate(R.menu.main, menu);
            return true;
        }
    
        @Override
        public boolean onOptionsItemSelected(MenuItem item) {
            // Handle action bar item clicks here. The action bar will
            // automatically handle clicks on the Home/Up button, so long
            // as you specify a parent activity in AndroidManifest.xml.
            int id = item.getItemId();
            if (id == R.id.action_settings) {
                return true;
            }
            return super.onOptionsItemSelected(item);
        }
    }
  • 相关阅读:
    RocketMQ系列(一)基本概念
    怎样实现登录?| Cookie or JWT
    Hotspot GC研发工程师也许漏掉了一块逻辑
    初级Java工程师也能轻松进行JVM调优了
    自动化不知如何参数化(二)?xlrd来帮你解决
    自动化不知如何参数化(一)?xlrd来帮你解决
    SpringCloud系列之API网关(Gateway)服务Zuul
    SpringCloud系列之客户端负载均衡Netflix Ribbon
    SpringCloud系列之使用Feign进行服务调用
    Spring Security系列之极速入门与实践教程
  • 原文地址:https://www.cnblogs.com/qadada/p/4515924.html
Copyright © 2020-2023  润新知