zoukankan      html  css  js  c++  java
  • Android对Sqlite数据库的增删改查

    SqLite 数据库

    Google 为我们提供了sqlite相关的api

    SqLiteOpenHelper 这是一个抽象的类 如果想要使用的话,需要其他的类去继承他

    SqLiteDatabase 类 暴露出了一系列的方法,为我们对数据库的操作

    实现SqLiteOpenHelper

    public class MySqlLiteOpenHelper extends SQLiteOpenHel
        public MySqlLiteOpenHelper(Context context, String
            super(context, dbName, null, version);
        }
        /*
        * 当数据第一次被创建的时候该方法会给执行
        * 这个方法特别适合做表的初始化
        * */
        @Override
        public void onCreate(SQLiteDatabase db) {
        }
        /*
        * 当数据库的版本升级的时候会执行该方法
        * 这个方法特别适合做表结构的修改
        * 注意:数据库的版本正能增加不能降低 否则会抛异常
        * */
        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVe
        }
    }
    

    SqLite 的增删改查

    初始化

    private MySqlLiteOpenHelper mySqlLiteOpenHelper;
    private SQLiteDatabase sDB;
    public final String TAG = "SqLiteActivity";
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_sql_lite);
        //这一步操作的时候数据库并不会被创建
        mySqlLiteOpenHelper = new MySqlLiteOpenHelper(this, "db.db", 1);
        //在这一步操作的时候数据库才会被读取或者创建 如果数据库不存在那么将会在/data/data/对应的包名 下建立一个databases目录其中包含刚刚创建的数据库以及其缓存文件
        sDB = mySqlLiteOpenHelper.getWritableDatabase();
    }
    

    insert

    //执行插入操作
    @RequiresApi(api = Build.VERSION_CODES.N)
    public void insert(View v) {
        try {
            /*
            * 通过sql语句来插入数据
            * 注意:下面是两种占位符的方式 如果是通过format方法来进行占位符操作需要对【单引号】使用【''】 		 * 进行转义
            * 如果是通过exceSql方法进行拼接的话那么 是不需要加 【单引号】的
            * */
            //两种拼接sql语句的方式
            String sql = MessageFormat.format("insert into userinfo (username,password) 					values(''{0}'',''{1}'')", "天王2121", "专刊需求到");
            sDB.execSQL("insert into userinfo (username,password) values(?,?)", new String[]{"天王		1", "专刊需求到"});
            //执行sql语句
            sDB.execSQL(sql);
          
          
            //如果sql语句不太熟练可以通过Google提供的方法进行插入操作
            ContentValues values = new ContentValues();
            values.put("username", "tianwang12121gaidihu");
            values.put("password", "baotazhenheyao");
            
            /*
            * 执行插入
            * 第二个参数是:如果为null 那么 如果values 是null 的话那么就会 向 数据库中插入一条null 行,如		* 果是可以的话 该参数一般为null 即可
            * 返回值:返回主键的值 如果插入失败那么返回-1
            * */
            long pk= sDB.insert("userinfo", null, values);
            values.clear();
            Toast.makeText(this, "insert successfully!", Toast.LENGTH_SHORT).show();
        } catch (Exception e) {
            Log.i(this.TAG, e.toString());
        }
    }
    

    Delete

    public void delete(View v) {
        //执行删除操作
        try {
            //返回被删除的行数
            int count = this.sDB.delete("userinfo", "username='天王2121'", null);
            Toast.makeText(this, String.valueOf(count), Toast.LENGTH_SHORT).show();
        } catch (Exception e) {
            Log.i(this.TAG, e.toString());
        }
    }
    

    Update

     //执行更新操作
     public void update(View v) {
         //需要进行修改的内容
         ContentValues values = new ContentValues();
         values.put("password", "123456");
         //参数: 需要进行更新操作的表 , 需要更新的内容, 过滤条件 ,过滤条件的值
         //返回值: 返回受营销的行数
         int count = this.sDB.update("userinfo", values, "_id>100", null);
         values.clear();
         Toast.makeText(this, String.valueOf(count), Toast.LENGTH_SHORT).show();
     }
    

    Query

    //数据库的查询操作
    public void select(View v) {
        Cursor cursor = null;
        //通过sql语句直接查询
        //String sql = "select * from userinfo where _id>100";
        //cursor = this.sDB.rawQuery(sql, null);
        //通过Google提供的方法来进行查询操作
        cursor = this.sDB.query("userinfo", new String[]{"_id", "username", "password"}, "_id > 100", null, null, null, null);
        if (cursor != null) {
            //打印获取到的内容
            while (cursor.moveToNext()) {
                Log.i(this.TAG, cursor.getString(cursor.getColumnIndex("_id")));
                Log.i(this.TAG, cursor.getString(cursor.getColumnIndex("username")));
                Log.i(this.TAG, cursor.getString(cursor.getColumnIndex("password")));
            }
        } else {
            Toast.makeText(this, "我就是null了", Toast.LENGTH_SHORT).show();
        }
    }
    
  • 相关阅读:
    什么是 Linux
    Java常用几种加密算法
    Java多线程
    SpringSecurity相关配置【SpringSecurityConfig】
    应用上下文配置【AppConfig】
    web.xml
    Web上下文配置【MvcConfig】
    SpringMVC4零配置--Web上下文配置【MvcConfig】
    HTML <meta> 标签 遇到<meta http-equiv="refresh" content="0; url=">详解
    java如何获取当前机器ip和容器port
  • 原文地址:https://www.cnblogs.com/slyfox/p/6882480.html
Copyright © 2011-2022 走看看