一想到Android到数据库,只需要想到一个类 SQLiteOpenHelper,然后写一个类继承 SQLiteOpenHelper,重写构造方法,对数据库进行配置

public class MySQLiteOpenHelper extends SQLiteOpenHelper {
  public MySQLiteOpenHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
  super(context, name, factory, version);
  }
}

SqliteDatabase数据库,所写的所有SQL语句都是通过系统sqlite.c文件执行成数据库文件的,SQlite数据库是关系型数据库,轻量级,体积小等特点

实现MySQLiteOpenHelper数据库帮助类:

package liudeli.datastorage.db;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper; public class MySQLiteOpenHelper extends SQLiteOpenHelper { public static MySQLiteOpenHelper mySQLiteOpenHelper; private static final String DB_NAME = "person_info.db";
private static final int VERSION = 1; public synchronized static MySQLiteOpenHelper getInstance(Context context) {
if (null == mySQLiteOpenHelper) {
mySQLiteOpenHelper = new MySQLiteOpenHelper(context, DB_NAME, null, VERSION);
}
return mySQLiteOpenHelper;
} /**
* 当开发者调用 getReadableDatabase(); 或者 getWritableDatabase();
* 就会通过此构造方法配置的信息 来创建 person_info.db 数据库
* 此方法的另外作用是,如果存着数据库就打开数据库,不存着数据库就创建数据库
* @param context 上下文
* @param name 数据库名
* @param factory 游标工厂
* @param version 版本,最低为1
*/
private MySQLiteOpenHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
super(context, name, factory, version);
} /**
* 此方法是何时调用? ,是需要开发者调用 getReadableDatabase(); 或者 getWritableDatabase();
* 此方法的作用是,如果没有表就创建打开,如果有表就打开
* @param db 可执行SQL语句
*/
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("create table student_table(_id integer primary key autoincrement, name text, age integer);");
} /**
* 此方法用于数据库升级
* @param db 可执行SQL语句
* @param oldVersion 以前旧版本的版本号
* @param newVersion 现在目前最新的版本号
*/
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { }
}

写SQL语句进行增删改查操作:

package liudeli.datastorage;

import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button; import liudeli.datastorage.db.MySQLiteOpenHelper; public class MainActivity extends AppCompatActivity implements View.OnClickListener { private final String TAG = MainActivity.class.getSimpleName(); private MySQLiteOpenHelper mySQLiteOpenHelper; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); mySQLiteOpenHelper = MySQLiteOpenHelper.getInstance(this); // person_info.db创建成功 table表创建成功 还有一个很重要的作用:刷新数据库 刷新表数据等
mySQLiteOpenHelper.getReadableDatabase();
mySQLiteOpenHelper.getWritableDatabase(); initViewListener();
} private void initViewListener() {
Button btQuery = findViewById(R.id.bt_query);
Button btInsert = findViewById(R.id.bt_insert);
Button btUpdate = findViewById(R.id.bt_update);
Button btDelete = findViewById(R.id.bt_delete); btQuery.setOnClickListener(this);
btInsert.setOnClickListener(this);
btUpdate.setOnClickListener(this);
btDelete.setOnClickListener(this);
} @Override
protected void onStart() {
super.onStart(); } /**
* 虽然之需要一次 getWritableDatabase getReadableDatabase 就可以来,为什么还需要每次点击都执行一次?
* 答:getWritableDatabase getReadableDatabase 还有一个很重要的作用:刷新数据库 刷新表数据等
* @param v
*/
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.bt_query: {
SQLiteDatabase db = mySQLiteOpenHelper.getReadableDatabase();
Cursor cursor = db.rawQuery("select * from "+MySQLiteOpenHelper.TABLE_NAME+";", null);
while (cursor.moveToNext()) {
int _id = cursor.getInt(cursor.getColumnIndex("_id"));
String name = cursor.getString(cursor.getColumnIndex("name"));
int age = cursor.getInt(cursor.getColumnIndex("age"));
Log.d(TAG, "_id:" + _id + " name:" + name + " age:" + age);
}
db.close();
break;
}
case R.id.bt_insert: {
SQLiteDatabase db = mySQLiteOpenHelper.getWritableDatabase();
db.execSQL("insert into " + MySQLiteOpenHelper.TABLE_NAME + "(name,age) values('刘德利',19);");
db.close();
break;
}
case R.id.bt_update: {
SQLiteDatabase db = mySQLiteOpenHelper.getWritableDatabase();
db.execSQL("update student_table set name='德利' where _id = 1;");
db.close();
break;
}
case R.id.bt_delete: {
SQLiteDatabase db = mySQLiteOpenHelper.getWritableDatabase();
db.execSQL("delete from student_table where _id = 1;");
db.close();
break;
}
default:
break;
}
}
}

布局代码:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity"> <Button
android:id="@+id/bt_query"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="查询"
/> <Button
android:id="@+id/bt_insert"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="插入"
/> <Button
android:id="@+id/bt_update"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="修改"
/> <Button
android:id="@+id/bt_delete"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="删除"
/> </LinearLayout>

Android-Sqlite-SQL操作增删改查的更多相关文章

  1. [Android] SQLite数据库之增删改查基础操作

        在编程中常常会遇到数据库的操作,而Android系统内置了SQLite,它是一款轻型数据库,遵守事务ACID的关系型数据库管理系统,它占用的资源非常低,可以支持Windows/Linux/Un ...

  2. Android下数据库操作——增删改查

    Android下数据库第一种方式增删改查     1.创建一个帮助类的对象,调用getReadableDatabase方法,返回一个SqliteDatebase对象     2.使用SqliteDat ...

  3. 【黑马Android】(04)数据库的创建和sql语句增删改查/LinearLayout展示列表数据/ListView的使用和BaseAdater/内容提供者创建

    数据库的创建和sql语句增删改查 1. 载入驱动. 2. 连接数据库. 3. 操作数据库. 创建表: create table person( _id integer primary key, nam ...

  4. Android-Sqlite-OOP方式操作增删改查

    之前写的数据库增删改查,是使用SQL语句来实现的,Google 就为Android开发人员考虑,就算不会SQL语句也能实现增删改查,所以就有了OOP面向对象的增删改查方式 其实这种OOP面向对象的增删 ...

  5. Hbase常用操作(增删改查)

    Hbase常用操作(增删改查) [日期:2014-01-03] 来源:Linux社区  作者:net19880504 [字体:大 中 小]     运行Eclipse,创建一个新的Java工程“HBa ...

  6. 数据库基本查询语句(SQL常用增删改查语句 简单复习 mark)

    SQL常用增删改查语句 1增 1.1[插入单行]insert [into] <表名> (列名) values (列值)例:insert into Strdents (姓名,性别,出生日期) ...

  7. JavaScript---Dom树详解,节点查找方式(直接(id,class,tag),间接(父子,兄弟)),节点操作(增删改查,赋值节点,替换节点,),节点属性操作(增删改查),节点文本的操作(增删改查),事件

    JavaScript---Dom树详解,节点查找方式(直接(id,class,tag),间接(父子,兄弟)),节点操作(增删改查,赋值节点,替换节点,),节点属性操作(增删改查),节点文本的操作(增删 ...

  8. android 对sqlite数据库的增删改查等各种操作

    转载:http://blog.csdn.net/vrix/article/details/6717090 package com.sqlite.main; import java.io.File; i ...

  9. Android学习---数据库的增删改查(sqlite CRUD)

    上一篇文章介绍了sqlite数据库的创建,以及数据的访问,本文将主要介绍数据库的增删改查. 下面直接看代码: MyDBHelper.java(创建数据库,添加一列phone) package com. ...

  10. Android下利用SQLite数据库实现增删改查

    1: 首先介绍如何利用adb查看数据库 1: adb shell 2: cd /data/data/包名/databases 3:  sqlite3 数据库 4   接下来就可以进行数据库的sql语法 ...

随机推荐

  1. bzoj4558: [JLoi2016]方

    Description 上帝说,不要圆,要方,于是便有了这道题.由于我们应该方,而且最好能够尽量方,所以上帝派我们来找正方形 上帝把我们派到了一个有N行M列的方格图上,图上一共有(N+1)×(M+1) ...

  2. eclipse调试时增加jvm参数

    下面的程中我们限制Java 堆的大小为20MB,不可扩展(将堆的最小值-Xms 参数与最大值-Xmx 参数设置为一样即可避免堆自动扩展),通过参数-XX:+HeapDumpOnOutOfMemoryE ...

  3. LeetCode 177. Nth Highest Salary

    https://leetcode.com/problems/nth-highest-salary/description/ Write a SQL query to get the nth highe ...

  4. 2018 Multi-University Training Contest 4-Problem B. Harvest of Apples

    由公式$S(n, m)=S(n - 1, m) + S(n - 1, m - 1) = 2 * S(n - 1, m) - C_{n-1}^{m}$ 莫队思想

  5. 二.jQuery源码解析之构建jQuery之构建函数jQuery的7种用法

    一:$(selectorStr[,限制范围]),接受一个选择器(符合jQuery规范的字符串),返回一个jQuery对象; 二:$(htmlStr[,文档对象]),$(html[,json对象])传入 ...

  6. instr 函数从后往前计数 instr(spell,' ',-1)

    update CY set last=substr(spell,instr(spell,' ',-1));

  7. 配置mysql环境变量

    配置mysql环境变量(非必要) 说明:给mysql配置环境变量后我们就可以在cmd里运行mysql(开启.停止等操作) 1. 和其实环境变量的配置方法一样,我们打开环境变量配置窗口(组合键win+P ...

  8. OpenCL Hello World

    ▶ OpenCL 的环境配置与第一个程序 ● CUDA 中自带 OpenCL 需要的头文件和库,直接拉近项目里边去就行:AMD 需要下载 AMD APP SDK(https://community.a ...

  9. spring jpa sqls

    package com.example.repository; import java.util.List; import org.springframework.data.jpa.repositor ...

  10. ls 查看时间排序

    1) ls -lt  时间最近的在前面 2) ls -ltr 时间从前到后 3) 利用sort ls -l | sort +7 (日期为第8列)   时间从前到后 ls -l | sort -r +7 ...