android之SQLlite操作
布局文件
创建了四个按键,分别对应增删改查
- <?xml version="1.0" encoding="utf-8"?>
- <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:paddingBottom="@dimen/activity_vertical_margin"
- android:paddingLeft="@dimen/activity_horizontal_margin"
- android:paddingRight="@dimen/activity_horizontal_margin"
- android:paddingTop="@dimen/activity_vertical_margin"
- android:orientation="vertical"
- tools:context="xidian.dy.com.chujia.MainActivity">
- <Button
- android:id="@+id/btn_insert"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="插入一条数据"/>
- <Button
- android:id="@+id/btn_query"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="查询当前数据" />
- <Button
- android:id="@+id/btn_update"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="修改一条数据"/>
- <Button
- android:id="@+id/btn_delete"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="删除一条数据"/>
- </LinearLayout>
数据库操作
- 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();
- }
- }
android之SQLlite操作的更多相关文章
- [转]Android - 文件读写操作 总结
转自:http://blog.csdn.net/ztp800201/article/details/7322110 Android - 文件读写操作 总结 分类: Android2012-03-05 ...
- android管理联系人操作
ContentProvider扩展之管理系统联系人 我们都知道ContentProvider是用来共享数据的,然而android本身就提供了大量的ContentProvider,例如联系人信息,系统的 ...
- 【转】Android 使用ORMLite 操作数据库
Android 使用ORMLite 操作数据库 用过ssh,s2sh的肯定不会陌生 ,应该一学就会 第一步: 下载ormlite-android-4.41.jar和ormlite-core-4.4 ...
- [Android] Android 使用 Greendao 操作 db sqlite(2)-- 封装DaoUtils类
继续接上文: Android 使用 Greendao 操作 db sqlite(1)-- 直接在MainActivity中调用 布局文件同上文一致,这里就不贴了. 一.封装DaoUtils类 User ...
- [Android] Android 使用 Greendao 操作 db sqlite(1)-- 直接在MainActivity中调用
继续接上文: Android 使用 Greendao 操作 db sqlite 布局文件: activity_test_green.xml <?xml version="1.0&quo ...
- [Android] Android 使用 Greendao 操作 db sqlite
Android 使用 Greendao 操作 db sqlite GreenDAO是一个开源的安卓ORM框架,能够使SQLite数据库的开发再次变得有趣.它减轻开发人员处理低级数据库需求,同时节省开发 ...
- Android开发---如何操作资源目录中的资源文件4 ---访问xml的配置资源文件的内容
Android开发---如何操作资源目录中的资源文件4 XML,位于res/xml/,这些静态的XML文件用于保存程序的数据和结构. XmlPullParser可以用于解释xml文件 效果图: 描述: ...
- Android开发---如何操作资源目录中的资源文件3--圆角边框、背景颜色渐变效果、边框颜色
Android开发---如何操作资源目录中的资源文件3 效果图 1.圆角边框 2.背景颜色渐变效果 1.activity_main.xml 描述: 定义了一个shape资源管理按钮 <?xml ...
- Android开发 ---如何操作资源目录中的资源文件2
Android开发 ---如何操作资源目录中的资源文件2 一.颜色资源管理 效果图: 描述: 1.改变字体的背景颜色 2.改变字体颜色 3.改变按钮颜色 4.图像颜色切换 操作描述: 点击(1)中的颜 ...
随机推荐
- 百度地图秘钥ak的获取
今天打开网站的时候出现了这个问题“百度未授权使用地图API, 可能是因为您提供的密钥不是有效的百度开放平台密钥或此密钥未对本应用的百度地图JavasoriptAPI授权.....”经过研究终于知道什么 ...
- Oracle PLSQL
Oracle :show explain plan select * from table(dbms_xplan.display); EXPLAIN PLAN FOR statements In fa ...
- Doctype文档类型、作用及触发方式
Doctype文档类型 1) 该标签可声明三种 DTD 类型,分别表示严格版本.过渡版本以及基于框架的 HTML 文档. 2) HTML 4.01 规定了三种文档类型:Strict.Transit ...
- myeclipse中运行tomcat报错java.lang.NoClassDefFoundError
有关myeclipse的小问题,在myeclipse中运行tomcat时显示已启动,但是无法访问localhost:8080/,显示404错误.在控制台中发现报错代码如下: java.lang.NoC ...
- 数据持久化之sqlite基本用法
一.ACID 即原子性(Atomicity).一致性(Consistency).隔离性(Isolation).持久性(Durability). 原子性:整个事务中的所有操作,要么全部完成,要么全部不完 ...
- 【C#】SQL数据库助手类2.0(自用)
using System; using System.Collections.Generic; using System.Configuration; using System.Data; using ...
- bzoj-3288 3288: Mato矩阵(数论)
题目链接: 3288: Mato矩阵 Time Limit: 10 Sec Memory Limit: 128 MB Description Mato同学最近正在研究一种矩阵,这种矩阵有n行n列第i ...
- CSS强制性换行word-break与word-wrap的使用
一般情况下,元素拥有默认的white-space:normal(自动换行,不换行是white-space:nowrap),当录入的文字超过定义的宽度后会自动换行,但当录入的数据是一堆没有空格的字符或字 ...
- JSP中文乱码问题《转》
之前总是碰到JSP页面乱码的问题,每次都是现在网上搜,然后胡乱改,改完也不明白原因. 这次正好作下总结,中文乱码就是因为编码不符,可能出现乱码有四个地方: 1 JSP编码乱码 2 HTML编码乱码 3 ...
- springMVC+ajax分页查询
项目用到ajax技术的查询,查询结果很多时候要分页展示.这两天摸索了一下,在这里做一总结,方便自己随时查看, 也方便后人参考. 这里的顺序遵从从前台页面到后台控制器,业务层,Dao层,Mapper 下 ...