目标效果:

点击不同的按钮,可分别对数据库进行不同的操作并输出Toast提示和LogCat日志信息。

1.activity_main.xml页面定义所有的按钮控件。

activity_main.xml页面:

<RelativeLayout 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"tools:context=".MainActivity" ><Buttonandroid:id="@+id/btCreate"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_alignParentTop="true"android:layout_centerHorizontal="true"android:layout_marginTop="30dp"android:text="Create database" /><Buttonandroid:id="@+id/btAdd"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentLeft="true"android:layout_alignParentRight="true"android:layout_below="@+id/btCreate"android:layout_marginTop="30dp"android:text="Add data" /><Buttonandroid:id="@+id/btUpdate"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentLeft="true"android:layout_alignParentRight="true"android:layout_below="@+id/btAdd"android:layout_marginTop="20dp"android:text="Update_data" /><Buttonandroid:id="@+id/btDelete"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentLeft="true"android:layout_alignParentRight="true"android:layout_below="@+id/btUpdate"android:layout_marginTop="20dp"android:text="Delete_Date" /><Buttonandroid:id="@+id/btReplace"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_alignParentLeft="true"android:layout_below="@+id/btDelete"android:layout_marginTop="20dp"android:text="Replace_data" /><Buttonandroid:id="@+id/btQuery"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_alignParentLeft="true"android:layout_below="@+id/btReplace"android:layout_marginTop="20dp"android:text="Query_data" /></RelativeLayout>

2.定义Book.java实体类并重写toString方法,用于查询时数据的输出。
Book.java页面:

package com.example.entity;public class Book {private int id;private String name;private String author;private int pages;private double price;public Book(String name, String author, int pages, double price) {super();this.name = name;this.author = author;this.pages = pages;this.price = price;}public Book() {super();}public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getAuthor() {return author;}public void setAuthor(String author) {this.author = author;}public int getPages() {return pages;}public void setPages(int pages) {this.pages = pages;}public double getPrice() {return price;}public void setPrice(double price) {this.price = price;}@Overridepublic String toString() {// TODO Auto-generated method stubreturn "book id "+id+",name "+name+",author "+author+",pages "+pages+",price "+price;}}

3.定义BookDao.java接口页面用于定义父类方法。
BookDao.java页面:

package com.example.dao;import java.util.List;import com.example.entity.Book;public interface BookDao {public void add(Book book);public void delete(int pages);public void update(Book book);public List<Book> query();public void replace(Book book);
}

4.定义MyDatabaseHelper.java页面用于继承SQLiteOpenHelper类,进行创建数据库。
MyDatabaseHelper.java页面:

package com.example.newclass;import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;
import android.widget.Toast;public class MyDatabaseHelper extends SQLiteOpenHelper{private static final String DB_NAME="books.db";//数据库名称private static final int BOOK_VERSION=1;//版本号public static final String TABLE_BOOK="book";//表名public static final String BOOK_ID="id";public static final String BOOK_AUTHOR="author";public static final String BOOK_PRICE="price";public static final String BOOK_PAGES="pages";public static final String BOOK_NAME="name";public static final String CREATE_BOOK="create table book ( id integer primary key autoincrement, author text, price real, pages integer, name text)";public MyDatabaseHelper(Context context) {super(context,DB_NAME,null,BOOK_VERSION);}@Overridepublic void onCreate(SQLiteDatabase db) {db.execSQL(CREATE_BOOK);}/*升级数据库*//*** 1、第一次创建数据库的时候,这个方法不会走* 2、清除数据后再次运行(相当于第一次创建)这个方法不会走* 3、数据库已经存在,而且版本升高的时候,这个方法才会调用*/@Overridepublic void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {}
}

5.定义BookDaoImpl.java页面用于实现BookDao.java接口,重写BookDao.java页面中的增删改查方法。
BookDaoImpl.java页面:

package com.example.dao;import java.util.ArrayList;
import java.util.List;import com.example.entity.Book;
import com.example.newclass.MyDatabaseHelper;import android.R.string;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.util.Log;public class BookDaoImpl implements BookDao{MyDatabaseHelper myDatabaseHelper;public BookDaoImpl(Context context){myDatabaseHelper=new MyDatabaseHelper(context);}/*添加信息*/@Overridepublic void add(Book book) {SQLiteDatabase sqLiteDatabases=myDatabaseHelper.getWritableDatabase();ContentValues values=new ContentValues();//开始组装数据values.put(MyDatabaseHelper.BOOK_NAME,book.getName());values.put(MyDatabaseHelper.BOOK_AUTHOR,book.getAuthor());values.put(MyDatabaseHelper.BOOK_PAGES,book.getPages());values.put(MyDatabaseHelper.BOOK_PRICE,book.getPrice());sqLiteDatabases.insert(MyDatabaseHelper.TABLE_BOOK,null,values);//插入数据values.clear();}/*根据页码数目删除信息*/@Overridepublic void delete(int pages) {SQLiteDatabase sqLiteDatabases=myDatabaseHelper.getWritableDatabase();sqLiteDatabases.delete(MyDatabaseHelper.TABLE_BOOK,MyDatabaseHelper.BOOK_PAGES + ">?",new String[]{String.valueOf(pages)});}/*根据价格修改信息*/@Overridepublic void update(Book book) {SQLiteDatabase sqLiteDatabases=myDatabaseHelper.getWritableDatabase();ContentValues values=new ContentValues();values.put(MyDatabaseHelper.BOOK_NAME,book.getName());values.put(MyDatabaseHelper.BOOK_AUTHOR,book.getAuthor());values.put(MyDatabaseHelper.BOOK_PAGES,book.getPages());values.put(MyDatabaseHelper.BOOK_PRICE,book.getPrice());sqLiteDatabases.update(MyDatabaseHelper.TABLE_BOOK,values,MyDatabaseHelper.BOOK_PRICE + "=?",new String[]{String.valueOf(book.getPrice())});values.clear();}/*查询信息,使用List返回*/@Overridepublic List<Book> query() {List<Book> books=null;SQLiteDatabase sqLiteDatabases=myDatabaseHelper.getReadableDatabase();//查询是Readable,其余是WritableCursor cursor=sqLiteDatabases.query(MyDatabaseHelper.TABLE_BOOK,null,null,null,null,null,null);if(cursor!=null){books=new ArrayList<Book>();while(cursor.moveToNext()){Book book=new Book();int id=cursor.getInt(cursor.getColumnIndex(myDatabaseHelper.BOOK_ID));String name=cursor.getString(cursor.getColumnIndex(MyDatabaseHelper.BOOK_NAME));String author=cursor.getString(cursor.getColumnIndex(MyDatabaseHelper.BOOK_AUTHOR));int pages=cursor.getInt(cursor.getColumnIndex(MyDatabaseHelper.BOOK_PAGES));double price=cursor.getDouble(cursor.getColumnIndex(MyDatabaseHelper.BOOK_PRICE));book.setId(id);book.setName(name);book.setAuthor(author);book.setPages(pages);book.setPrice(price);books.add(book);//Log.i("MainActivity","book id is "+id+" name is  "+name+",author is "+author+",pages is "+pages+",price is "+price);}}cursor.close();return books;}@Overridepublic void replace(Book book) {SQLiteDatabase sqLiteDatabases=myDatabaseHelper.getWritableDatabase();sqLiteDatabases.beginTransaction();//开启事务try {sqLiteDatabases.delete(MyDatabaseHelper.TABLE_BOOK,null,null);ContentValues values=new ContentValues();values.put(MyDatabaseHelper.BOOK_NAME,book.getName());values.put(MyDatabaseHelper.BOOK_AUTHOR,book.getAuthor());values.put(MyDatabaseHelper.BOOK_PAGES,book.getPages());values.put(MyDatabaseHelper.BOOK_PRICE,book.getPrice());sqLiteDatabases.insert(MyDatabaseHelper.TABLE_BOOK,null,values);sqLiteDatabases.setTransactionSuccessful();//事物已经执行成功values.clear();} catch (Exception e) {e.printStackTrace();}finally{sqLiteDatabases.endTransaction();//结束事物}}
}

6.MainActivity.java页面用于将增删改查方法和按钮绑定。
MainActivity.java页面:

package com.example.sqlite;import java.util.List;import com.example.dao.BookDaoImpl;
import com.example.entity.Book;
import com.example.newclass.MyDatabaseHelper;import android.os.Bundle;
import android.app.Activity;
import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;public class MainActivity extends Activity {private Button btCreate,btAdd,btUpdate,btDelete,btQuery,btReplace;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);/*创建*/btCreate=(Button) findViewById(R.id.btCreate);btCreate.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {MyDatabaseHelper myDatabaseHelper=new MyDatabaseHelper(MainActivity.this);myDatabaseHelper.getWritableDatabase();Toast.makeText(MainActivity.this, "Create succeeded",Toast.LENGTH_SHORT).show();}});/*添加*/btAdd=(Button) findViewById(R.id.btAdd);btAdd.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {BookDaoImpl bookDaoImpl=new BookDaoImpl(MainActivity.this);Book book1=new Book("The Da Vinci ode","Dan Brown",454,16.96);Book book2=new Book("hello c","Tan",510,24.00);bookDaoImpl.add(book1);bookDaoImpl.add(book2);Toast.makeText(MainActivity.this,"Add Succeed",Toast.LENGTH_SHORT).show();}});/*修改*/btUpdate=(Button) findViewById(R.id.btUpdate);btUpdate.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v){BookDaoImpl bookDaoImpl=new BookDaoImpl(MainActivity.this);Book book=new Book("The Da Vinci ode","Dan Brown",540,24.00); bookDaoImpl.update(book);Toast.makeText(MainActivity.this,"Update Succeed",Toast.LENGTH_SHORT).show();}});/*删除*/btDelete=(Button) findViewById(R.id.btDelete);btDelete.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {BookDaoImpl bookDaoImpl=new BookDaoImpl(MainActivity.this);bookDaoImpl.delete(500);Toast.makeText(MainActivity.this,"Delete Succeed",Toast.LENGTH_SHORT).show();}});/*查询*/btQuery=(Button) findViewById(R.id.btQuery);btQuery.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {BookDaoImpl bookDaoImpl=new BookDaoImpl(MainActivity.this);List<Book> books=bookDaoImpl.query();for(Book book : books){Log.i("MainActivity",book.toString());}Log.i("MainActivity","-----分割线-----");Toast.makeText(MainActivity.this,"Query Succeed",Toast.LENGTH_SHORT).show();}});/*替换*/btReplace=(Button) findViewById(R.id.btReplace);btReplace.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {BookDaoImpl bookDaoImpl=new BookDaoImpl(MainActivity.this);Book book=new Book("java","Li Brown",320,14.50); bookDaoImpl.replace(book);Toast.makeText(MainActivity.this,"Replace Succeed",Toast.LENGTH_SHORT).show();}});}
}

7.程序运行就可以显示目标效果了。

8.生成的数据库文件在/data/data/项目包名/databases/文件夹中,导出后,添加到Navicat Premium环境中,可进行查看数据库内容。

————————————————
版权声明:本文为CSDN博主「Vivinia_Vivinia」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/hester_hester/article/details/51447189

Android SQLite封装sql语句、查看数据库相关推荐

  1. 用SQL语句查看数据库数据量的大小

    1.进入MQSQL命令行界面 2.输入密码 3.输入命令 1.进入information_schema 数据库(存放了其他的数据库的信息) use information_schema; 2.查询所有 ...

  2. Android Sqlite 简单SQL语句

    --- 创建表 create table student(_id integer primary key autoincrement, name text);--- 查询全部 select _id,n ...

  3. oracle 查看用户日志,Oracle查看用户操作sql语句以及数据库日志

    --查看日志文件 select member from v$logfile; --查看表空间使用情况 SELECT SUM(bytes) / (1024 * 1024) AS free_space, ...

  4. sql语句查看MySQL数据库大小

    SQL语句查看MySQL数据库大小 > SELECT table_schema "Database Name", sum( data_length + index_lengt ...

  5. 3,SQL语句及数据库优化

     1,统一SQL语句的写法 对于以下两句SQL语句,程序员认为是相同的,数据库查询优化器认为是不同的. 所以封装成复用方法,用标准模板来控制. select*from dual select*From ...

  6. android sqlite使用之模糊查询数据库数据的三种方式

    android sqlite使用之模糊查询数据库数据的三种方式 android应用开发中常常需要记录一下数据,而在查询的时候如何实现模糊查询呢?很少有文章来做这样的介绍,所以这里简单的介绍下三种sql ...

  7. oracle维护常用SQL语句(查看系统表和视图)

    转:http://www.360doc.com/content/11/1230/15/7489308_176090474.shtml oracle维护常用SQL语句(查看系统表和视图) 1.查看表空间 ...

  8. sql server xp_readerrorlog SQL语句查看错误日志

    sql server xp_readerrorlog SQL语句查看错误日志 xp_readerrorlog 一共有7个参数: 存档编号 日志类型(1为SQL Server日志,2为SQL Agent ...

  9. 一条SQL语句查询数据库中的所有表、存储过程、触发器

    一条SQL语句查询数据库中的所有表.存储过程.触发器 (sysobjects表信息)   该条语句查询返回所有的用户表 select * from sysobjects where xtype='u' ...

  10. sql语句提高数据库查询效率

    可以通过以下多个方面优化sql语句提高数据库查询效率 1. 应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描. 2. 应尽量避免在 where 子 ...

最新文章

  1. vue组件定义、组件的切换、组件的通信、渲染组件的几种方式(标签、路由、render)...
  2. 021_Jedis的ZSet数据类型
  3. 获取RadioButton选中的值
  4. linux 防火墙 iptables 允许 某个 某段 IP访问 某个端口
  5. configure project qt,如何为Qt Framework配置CLion IDE?
  6. 代码的坏味道之一——译自《重构》
  7. SpringCloud与Seata分布式事务初体验
  8. html 圆环实现多种颜色,SVG实现多彩圆环倒计时效果的示例代码
  9. java resultset转json_ResultSet到JSON的最有效转换?
  10. SQL Server安全性和基于策略的管理–高级条件
  11. “引才入湘”大行动正式启动,CSDN携手万兴科技助力长沙打造人才品牌
  12. python 的库如何开发_如何开发Python第三方库?
  13. svg html转换器,html – 将嵌入的SVG转换为PNG到位
  14. TCL语言中的执行顺序
  15. 平面三角形外接圆圆心与半径求解算法
  16. SPLUS XML操作
  17. 安卓android系统集成自己的程序 (海思hi3798mv200 安卓7.1sdk)
  18. 网易云接口加直链下载vip歌曲
  19. 办公室电脑如何共享计算机,办公室电脑如何互相共享文件?
  20. c语言挂科 合工大,合工大计算机学院程序设计01程序设计与C语言初步.ppt

热门文章

  1. Dummary、Fake、Stub、Spy、Mock
  2. 关于equals和hashCode
  3. swift项目第七天:构建访客界面以及监听按钮点击
  4. JavaScript从父页面获取子页面的值(子页面又如何访问父页面)
  5. InnoDB存储引擎--学习笔记-redo log
  6. ACCESS数据库增强器需求及介绍
  7. REGEXP使用经验
  8. 干货 | 集成学习综述与代码实现
  9. 20200221_2_国家非文化遗产爬虫代码
  10. 4.1 API : MultinomialNB、GaussianNB、BernoulliNB