1,使用execSQL API 操作数据库。
     步骤1,创建Class MyOpenHelper实现接口SQLiteOpenHelper,复写构造函数、onCreate、onUpgrade方法;
     步骤2,在创建MyOpenHelper对象myOpenHelper后,使用 myOpenHelper 相关API进行操作数据库。

package com.xiaohui.createdb;import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;public class MyOpenHelper extends SQLiteOpenHelper {public MyOpenHelper(Context context) {super(context,"xiaohui2.db", null, 1);}/*** 当第一次创建库的时候执行* Called when the database is created for the first time*/@Overridepublic void onCreate(SQLiteDatabase db) {String sql = "create table user(_id integer primary key autoincrement,name varchar(20),phone varchar(12))";db.execSQL(sql);}/*** 当数据库版本升级的时候调用*/@Overridepublic void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {// TODO Auto-generated method stub
//      System.out.println("onUpgrade。。。");
//      String sql = "alter table user add phone varchar(20)";
//      db.execSQL(sql );}
}
package com.xiaohui.createdb;import android.app.Activity;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;public class MainActivity extends Activity {private MyOpenHelper myOpenHelper;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);myOpenHelper = new MyOpenHelper(getApplicationContext());}public void insert(View v){SQLiteDatabase wdb = myOpenHelper.getWritableDatabase();EditText etName = (EditText)findViewById(R.id.et_name);EditText etPhone = (EditText)findViewById(R.id.et_phone);wdb.execSQL("insert into user(name,phone) values(?,?)", new Object[]{etName.getText().toString(),etPhone.getText().toString()});wdb.close();}public void delete(View v){SQLiteDatabase wdb = myOpenHelper.getWritableDatabase();EditText etName = (EditText)findViewById(R.id.et_name);wdb.execSQL("delete from user where name=?", new Object[]{etName.getText().toString()});wdb.close();}public void update(View v){SQLiteDatabase wdb = myOpenHelper.getWritableDatabase();EditText etName = (EditText)findViewById(R.id.et_name);EditText etPhone = (EditText)findViewById(R.id.et_phone);wdb.execSQL("update user set phone=? where name=?", new Object[]{etPhone.getText().toString(),etName.getText().toString()});wdb.close();}public void select(View v){SQLiteDatabase wdb = myOpenHelper.getWritableDatabase();Cursor cursor = wdb.rawQuery("select * from user", null);String list = "";if(cursor != null && cursor.getCount() > 0){while (cursor.moveToNext()) {String id = cursor.getString(cursor.getColumnIndex("_id"));int i = cursor.getColumnIndex("name");String name = cursor.getString(i);String phone = cursor.getString(cursor.getColumnIndex("phone"));list += "{id="+id+",name="+name+",phone="+phone+"},";}}TextView tVlist = (TextView)findViewById(R.id.tv_list);tVlist.setText(list);}
}

2,使用AndroidAPI操作数据库。
    步骤同上面,所使用Android自带相关API

package com.xiaohui.createdb;import com.xiaohui.createdb4API.R;import android.app.Activity;
import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;public class MainActivity extends Activity {private MyOpenHelper myOpenHelper;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);myOpenHelper = new MyOpenHelper(getApplicationContext());}public void insert(View v){SQLiteDatabase wdb = myOpenHelper.getWritableDatabase();EditText etName = (EditText)findViewById(R.id.et_name);EditText etPhone = (EditText)findViewById(R.id.et_phone);
//      wdb.execSQL("insert into user(name,phone) values(?,?)", new Object[]{etName.getText().toString(),etPhone.getText().toString()});ContentValues values = new ContentValues();values.put("name", etName.getText().toString());values.put("phone", etPhone.getText().toString());long insert = wdb.insert("user", null, values );wdb.close();if(insert>0){Toast.makeText(getApplicationContext(), "新增成功", 1).show();}else{Toast.makeText(getApplicationContext(), "新增失败", 1).show();}}public void delete(View v){SQLiteDatabase wdb = myOpenHelper.getWritableDatabase();EditText etName = (EditText)findViewById(R.id.et_name);
//      wdb.execSQL("delete from user where name=?", new Object[]{etName.getText().toString()});int delete = wdb.delete("user", "name=?", new String[]{etName.getText().toString()});wdb.close();Toast.makeText(getApplicationContext(), "删除了"+delete+"条", 1).show();}public void update(View v){SQLiteDatabase wdb = myOpenHelper.getWritableDatabase();EditText etName = (EditText)findViewById(R.id.et_name);EditText etPhone = (EditText)findViewById(R.id.et_phone);
//      wdb.execSQL("update user set phone=? where name=?", new Object[]{etPhone.getText().toString(),etName.getText().toString()});ContentValues values = new ContentValues();values.put("phone", etPhone.getText().toString());int update = wdb.update("user", values , "name=?", new String[]{etName.getText().toString()});wdb.close();Toast.makeText(getApplicationContext(), "修改了"+update+"条", 1).show();}public void select(View v){SQLiteDatabase wdb = myOpenHelper.getWritableDatabase();
//      Cursor cursor = wdb.rawQuery("select * from user", null);EditText etName = (EditText)findViewById(R.id.et_name);Cursor cursor = wdb.query("user", null,"name != ?", new String[]{etName.getText().toString()}, null, null, null);String list = "";if(cursor != null && cursor.getCount() > 0){while (cursor.moveToNext()) {String id = cursor.getString(cursor.getColumnIndex("_id"));int i = cursor.getColumnIndex("name");String name = cursor.getString(i);String phone = cursor.getString(cursor.getColumnIndex("phone"));list += "{id="+id+",name="+name+",phone="+phone+"},";}}TextView tVlist = (TextView)findViewById(R.id.tv_list);tVlist.setText(list);}
}

3,SQLite数据库事务控制
   文档中标准的格式描述如下

Here is the standard idiom for transactions: db.beginTransaction();try {...db.setTransactionSuccessful();} finally {db.endTransaction();}
package com.xiaohui.transation;import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;public class MyDBHelper extends SQLiteOpenHelper {public MyDBHelper(Context context) {super(context, "Account.db", null, 1);}@Overridepublic void onCreate(SQLiteDatabase db) {db.execSQL("create table account(idCard carchar(20),name varchar(20),money varchar(15))");db.execSQL("insert into account(idCard,name,money) values(?,?,?)",new String[]{"111","张三","2000"});db.execSQL("insert into account(idCard,name,money) values(?,?,?)",new String[]{"222","李四","3000"});}@Overridepublic void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {}
}
package com.xiaohui.transation;import android.app.Activity;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.View;
import android.widget.Toast;public class MainActivity extends Activity {SQLiteDatabase db;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);MyDBHelper dbHelper = new MyDBHelper(getApplicationContext());db = dbHelper.getReadableDatabase();}public void trans(View v) {db.beginTransaction();try {db.execSQL("update account set money=money-100 where idCard=?",new String[]{"1111"});if(Math.random()*10 > 5){throw new Exception();}db.execSQL("update account set money=money+100 where idCard=?",new String[]{"2222"});db.setTransactionSuccessful();Toast.makeText(getApplicationContext(), "转账成功", 1).show();}catch(Exception e){Toast.makeText(getApplicationContext(), "转账失败", 1).show();} finally {db.endTransaction();}}
}

4,使用命令行查看数据
在class配置了Android的SDK环境后使用相关命令:adb shell;sqlite3;以及标准SQL进行数据库操作。

Android 第三章 SQLite 数据库相关推荐

  1. Android 绿豆通讯录【 SQLite数据库(增删改查、展示数据) + ListView数据展示控件(展示所有数据) 】

    前情提要:Android 数据库(SQLite) [简介.创建.使用(增删改查.事务.实战演练).数据显示控件(ListView.Adapter.实战演练-绿豆通讯录)] https://blog.c ...

  2. android属于数据库管理系统,详细谈谈Android系统中的SQLite数据库的应用

    数据库是按照数据结构来组织.存储和管理数据的仓库,而在信息话的社会,数据库又不单单仅限与数据的相关内容,现在数据库技术是管理信息系统.办公自动化系统.决策支持系统等各类信息系统的核心部分,而SQL是结 ...

  3. Android studio+SQLCipher加密SQLite数据库的几个坑

    Android studio SQLCipher加密SQLite数据库的几个坑 前言:Android 自带的SQLite数据库可以用于数据存储,但是,大家都知道其数据是存储于手机的data/data/ ...

  4. sqlite数据库android使用教程,Android开发教程之 SQLite数据库的使用

    在开发Android应用程序时经常需要存储数据,Android系统提供了SQLite数据库,还提供了SQLiteOpenHelper类,使我们可以很方便的操作数据库.通过一个例子来说明在Android ...

  5. Android 绿豆通讯录【SQLite数据库---数据库(增删改查、展示数据)】

    前情提要:Android 数据库(SQLite) [简介.创建.使用(增删改查.事务.实战演练).数据显示控件(ListView.Adapter.实战演练-绿豆通讯录)] https://blog.c ...

  6. android:Android中用文件初始化sqlite数据库(zz)

        很多时候在应用安装初始化时,需要创建本地数据库,同时为数据库添加数据,之后再从数据库中读取数据. 这里有2个思路 1.先在本地创建一个能支持android使用的sqlite数据库文件,启动时, ...

  7. 安卓视频开发 mysql_在Android应用中使用SQLite数据库(传智播客视频笔记)

    在Android应用中使用SQLite数据库 应用生成的数据库文件保存为/data/data/应用包名/databases/name.db,生成的文件可用SQLite Expert打开 (name是自 ...

  8. Android数据存储(三)----- SQLite数据库存储

    SQLite是Android系统内置的数据库,是一种轻量级的关系型数据库,它运算速度快,占用资源少,非常适合在移动设备上使用.同时,它不仅支持标准的SQL语法,还遵循了数据库的ACID事务. 一.创建 ...

  9. Android持久化存储(3)SQLite数据库的使用

    1.什么是SQlite SQLite是由C语言编写的一款轻型数据库,因占用资源小,处理速度快,功能齐全,特别适用于移动设备,最重要的是开源,任何人都可以使用它,许多开源项目(PHP,Python)和当 ...

最新文章

  1. 前沿丨人工智能的框架战争:FB继续挑战Google
  2. 使用 ASP.NET 配置类
  3. SAP Spartacus批量读取产品的逻辑
  4. SAP S/4HANA里修改了Business Partner后的调试入口
  5. 数字图像处理:各种变换滤波和噪声的类型和用途总结
  6. java 多线程两种方式_JAVA多线程实现的两种方式
  7. Eclipse的PyDev插件安装及解决安装后找不到的问题
  8. 从linux刷到windows,我为什么从Linux重新回归到Windows平台
  9. 用汇编的眼光看C++(之特殊函数)
  10. 阿里巴巴实习面试经历
  11. 【亲测有效】硬盘/分区修复教程
  12. Dynamics CRM 365零基础入门学习(五)权限管理
  13. 计算机word中如何左右缩进字符,【2人回答】Word文档怎么左右缩进两个字符?-3D溜溜网...
  14. 服务器2008系统 stop c0000218,电脑蓝屏STOP:C0000218错误解决方法实记
  15. hive sql系列(二)——统计每个人每个月访问量和累计月访问量
  16. redis-GEO地理位置
  17. Oracle的定时任务
  18. 计算机win7内容已满,Win7电脑C盘满了如何清理?
  19. Nvidia官网查询显卡详细参数
  20. 5G NR 随机接入RACH流程(7)--分类和重要RACH流程总结

热门文章

  1. 把这个写成一个类吧TREEVIEW
  2. 使用消息中间件时,如何保证消息不丢失且仅仅被消费一次
  3. LabVIEW I/O服务器创建时的相关问题汇总
  4. 多租户saas 架构_实战复盘:toB产品的多租户架构设计
  5. Vue路由传参及传参后刷新导致参数消失处理
  6. jQuery模拟下拉框单选框复选Select,Checkbox,Radio
  7. 支付宝当前最新版集成2.1.2版本
  8. 1.[数据结构和算法分析笔记]数组
  9. SqlServer中使用Mysql中的limit分页功能
  10. C# 用Attribute实现AOP事务