博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
android之SQLlite操作
阅读量:6236 次
发布时间:2019-06-22

本文共 4835 字,大约阅读时间需要 16 分钟。

布局文件


创建了四个按键,分别对应增删改查

数据库操作


package xidian.dy.com.chujia;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.view.View;import android.widget.Button;import android.widget.Toast;public class MainActivity extends AppCompatActivity implements View.OnClickListener {    private SQLiteDatabase db;    private MainActivity mContext;    private int i = 1;    @Override    protected void onCreate(Bundle savedInstanceState) {        mContext = MainActivity.this;        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        MyDBOpenHelper myDBHelper = new MyDBOpenHelper(mContext, "my.db", null, 1);        db = myDBHelper.getWritableDatabase();        bindViews();    }    private void bindViews() {        Button btn_insert = (Button) findViewById(R.id.btn_insert);        Button btn_query = (Button) findViewById(R.id.btn_query);        Button btn_update = (Button) findViewById(R.id.btn_update);        Button btn_delete = (Button) findViewById(R.id.btn_delete);        if(btn_query != null)            btn_query.setOnClickListener(this);        if(btn_insert != null)            btn_insert.setOnClickListener(this);        if(btn_update != null)            btn_update.setOnClickListener(this);        if(btn_delete != null)            btn_delete.setOnClickListener(this);    }    @Override    public void onClick(View v) {        switch (v.getId()) {            case R.id.btn_insert:                ContentValues values1 = new ContentValues();                //name为数据库中属性名,第二个为欲插入的值                values1.put("name", "呵呵~" + i);                i++;                //参数依次是:表名,强行插入null值得数据列的列名,一行记录的数据                db.insert("person", null, values1);                Toast.makeText(mContext, "插入完毕~", Toast.LENGTH_SHORT).show();                break;            case R.id.btn_query:                StringBuilder sb = new StringBuilder();                //参数依次是:表名,列名,where约束条件,where中占位符提供具体的值,指定group by的列,进一步约束                //指定查询结果的排序方式                Cursor cursor = db.query("person", null, null, null, null, null, null);                if (cursor.moveToFirst()) {                    do {                        int id = cursor.getInt(cursor.getColumnIndex("_id"));                        String name = cursor.getString(cursor.getColumnIndex("name"));                        sb.append("id:" + id + ":" + name + "\n");                    } while (cursor.moveToNext());                }                cursor.close();                Toast.makeText(mContext, sb.toString(), Toast.LENGTH_SHORT).show();                break;            case R.id.btn_update:                ContentValues values2 = new ContentValues();                values2.put("name", "嘻嘻~");                //参数依次是表名,修改后的值,where条件,以及约束,如果不指定三四两个参数,会更改所有行                db.update("person", values2, "name = ?", new String[]{"呵呵~2"});                break;            case R.id.btn_delete:                //参数依次是表名,where条件,约束                db.delete("person", "_id = ?", new String[]{"3"});                //多个条件//                db.delete("person", "_id=? and name=?", new String[]{"1", "小名"});                break;        }    }}

这里先创建一个数据库助手,通过该助手获取数据库操作对象。利用该对象提供的API来操作数据库。

数据库助手类


 

package xidian.dy.com.chujia;import android.content.Context;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteOpenHelper;/** * Created by dy on 2016/6/13. */public class MyDBOpenHelper extends SQLiteOpenHelper {    public MyDBOpenHelper(Context context, String name, SQLiteDatabase.CursorFactory factory,                          int version) {
super(context, "my.db", null, 1); } @Override //数据库第一次创建时被调用 public void onCreate(SQLiteDatabase db) { db.execSQL("CREATE TABLE person(_id INTEGER PRIMARY KEY AUTOINCREMENT,name VARCHAR(20))"); } //软件版本号发生改变时调用 @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { db.execSQL("ALTER TABLE person ADD phone VARCHAR(12) NULL"); }}

事务


如果在数据库操作中使用到了事务可以参考以下的代码

//转账事物    public void transaction(){        try {            db.beginTransaction();            ContentValues values = new ContentValues();            values.put("salary", 9000);            db.update("person",values,"name=?", new String[]{"小王"});            values.clear();            values.put("salary", 11000);            db.update("person", values, "name=?", new String[]{"小张"});            //设置事务执行成功            db.setTransactionSuccessful();        }finally {            //关闭事物,同时提交,如果已经设置事务执行成功,那么sql将会生效,否则SQL回滚            db.endTransaction();        }    }

 

转载于:https://www.cnblogs.com/xidongyu/p/5592178.html

你可能感兴趣的文章
将团队迁移到可视化项目管理软件
查看>>
微软Edge扩展工具箱旨在将Chrome扩展带至Edge
查看>>
北大AI公开课2019 | 驭势科技吴甘沙:AI时代的自动驾驶趋势
查看>>
移动互联网下半场,iOS开发者如何“高薪”成长?
查看>>
Docker4Dev #7 新瓶装老酒 – 使用 Windows Container运行ASP.NET MVC 2 + SQLExpress 应用
查看>>
亚马逊一口气发布了9款机器学习产品
查看>>
Visual Studio 2017 15.9 Previews扩展C++调试功能
查看>>
别了MongoDB?
查看>>
Codeweavers的丰田模式
查看>>
【译文】Node.js官方文档(前言&目录)
查看>>
用关系型NoSQL回到未来
查看>>
Kotlin 1.2引入多平台项目特性
查看>>
隐私和安全是macOS Mojave和Safari 12的第一要务
查看>>
静态网站生成器将会成为下一个大热门
查看>>
Microsoft 推出在AzureApp Service上支持Windows容器的公开预览版
查看>>
杠上Spark、Flink?Kafka为何转型流数据平台
查看>>
运用供应链管理实现更快速、更高质量的交付
查看>>
刚刚,ACM宣布三位深度学习之父共同获得2018年图灵奖!
查看>>
Python将迁移到GitHub
查看>>
《JavaScript Cookbook 2nd》之 Function
查看>>