Android开发之sqlite数据库的应用
来源:互联网 发布:30岁自学大数据工程师 编辑:程序博客网 时间:2024/06/07 14:08
第一步先定义自己需要的表结构。
第二步定义helper方法,建表,定义更新表的内容
第三步定义数据对象,set、get
第四步定义数据库的适配器,定义增删查改方法,方便SQLitedatabase对象直接调用
套路:
1.创建SQLiteDatabase对象,并调用getWritableDatabase 或getReadableDatabase方法
SQLiteDatabase db=dbhelper.getWritableDatabase();
2.增: 创建ContentValues对象values,往values里放值,让后调用db.insert()方法
删:找到删除条件,调用db.delete()方法
改: 创建ContentValues对象values,往values里放值,同时确认要修改的条件
查:确认要查的条件,调用db.query()方法获取内容,并赋值给一个Cursor对象。 若只有一个查询结果,直接复制给数据对象,若有多行值,创建ArrayList对象,放入循环放入其中。
3.调用db.close() (若创建了Cursor对象c,需要需关闭,c.close())
第五步 调用适配器方法
1.创建一个DatabaseAdapter对象,并实例化dbAdapter=new DatabaseAdapter(this);
2.调用方法:
增:创建一个数据对象,并赋值,然后调用dbAdapter.add()
删:调用dbAdapter.delete()
改:创建新的数据对象,赋值,然后调用dbAdapter.updata();
查:调用查方法,并赋值Dog dog=dbAdapter.findById(1);若有多行值,则创建ArrayList对象,循环赋值
代码如下:
package com.Cactus.sqlitetest;import android.provider.BaseColumns;//第一步先定义自己需要的表结构public final class PetMetaData { private PetMetaData(){} public static abstract class DogTable implements BaseColumns { public static final String TABLE_NAME = "dog"; public static final String NAME = "name"; public static final String AGE = "age"; }}
package com.Cactus.sqlitetest;import android.content.Context;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteDatabase.CursorFactory;import android.database.sqlite.SQLiteOpenHelper;//第二步定义helper方法,建表,定义更新表的内容public class DatabaseHelper extends SQLiteOpenHelper{ private static final String DB_NAME="pet.db"; private static final int VERSION=1; private static final String CREATE_TABLE_DOG="CREATE TABLE dog(_id INTEGER PRIMARY KEY AUTOINCREMENT"+ ",name TEXT,age INTEGER)"; private static final String DROP_TABLE_DOG="DROP TABLE IF EXISTS dog"; //定义方法 public DatabaseHelper(Context context) { super(context, DB_NAME, null, VERSION); // TODO Auto-generated constructor stub } @Override public void onCreate(SQLiteDatabase db) { // TODO Auto-generated method stub db.execSQL(CREATE_TABLE_DOG); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { // TODO Auto-generated method stub db.execSQL(DROP_TABLE_DOG); db.execSQL(CREATE_TABLE_DOG); }}
package com.Cactus.sqlitetest;//第三步定义数据对象,set、getpublic class Dog { private int id; private String name; private int age; public Dog() { } public Dog(int id,String name,int age) { this.id=id; this.name=name; this.age=age; } public Dog(String name, int age) { this.name = name; this.age = age; } 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 int getAge() { return age; } public void setAge(int age) { this.age = age; } @Override public String toString() { return "Dog [id=" + id + ", name=" + name + ", age=" + age + "]"; } }
package com.Cactus.sqlitetest;import java.util.ArrayList;import android.content.ContentValues;import android.content.Context;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;//第四步定义数据库的适配器,定义增删查改方法,方便SQLitedatabase对象直接调用public class DatabaseAdapter { private DatabaseHelper dbhelper; public DatabaseAdapter(Context context) { dbhelper=new DatabaseHelper(context); } //套路:// 1.创建SQLiteDatabase对象,并调用getWritableDatabase 或getReadableDatabase方法 // SQLiteDatabase db=dbhelper.getWritableDatabase(); // 2.增: 创建ContentValues对象values,往values里放值,让后调用db.insert()方法 // 删:找到删除条件,调用db.delete()方法 // 改: 创建ContentValues对象values,往values里放值,同时确认要修改的条件 // 查:确认要查的条件,调用db.query()方法获取内容,并赋值给一个Cursor对象。 若只有一个查询结果, // 直接复制给数据对象,若有多行值,创建ArrayList对象,放入循环放入其中。 // 3.调用db.close() (若创建了Cursor对象c,需要需关闭,c.close()) public void add(Dog dog) { SQLiteDatabase db=dbhelper.getWritableDatabase(); ContentValues values=new ContentValues(); values.put(PetMetaData.DogTable.NAME, dog.getName()); values.put(PetMetaData.DogTable.AGE, dog.getAge()); db.insert(PetMetaData.DogTable.TABLE_NAME, null, values); db.close(); } public void delete(int id) { SQLiteDatabase db=dbhelper.getWritableDatabase(); String whereClause=PetMetaData.DogTable._ID+"+?"; String[] whereArgs={String.valueOf(id)}; db.delete(PetMetaData.DogTable.TABLE_NAME, whereClause, whereArgs); db.close(); } public void updata(Dog dog) { SQLiteDatabase db=dbhelper.getWritableDatabase(); ContentValues values=new ContentValues(); values.put(PetMetaData.DogTable.NAME, dog.getName()); values.put(PetMetaData.DogTable.AGE, dog.getAge()); String whereClause=PetMetaData.DogTable._ID+"+?"; String[] whereArgs={String.valueOf(dog.getId())}; db.update(PetMetaData.DogTable.TABLE_NAME, values, whereClause, whereArgs); db.close(); } public Dog findById(int id) { SQLiteDatabase db=dbhelper.getReadableDatabase(); String[] columns={PetMetaData.DogTable._ID,PetMetaData.DogTable.NAME,PetMetaData.DogTable.AGE}; Cursor c=db.query(true, PetMetaData.DogTable.TABLE_NAME, columns, PetMetaData.DogTable._ID+"=?", new String[]{String.valueOf(id)}, null, null, null, null, null); Dog dog=null; if(c.moveToNext()) { dog=new Dog(); dog.setId(c.getInt(c.getColumnIndexOrThrow(PetMetaData.DogTable._ID))); dog.setAge(c.getInt(c.getColumnIndexOrThrow(PetMetaData.DogTable.AGE))); dog.setName(c.getString(c.getColumnIndexOrThrow(PetMetaData.DogTable.NAME))); } c.close(); db.close(); return dog; } public ArrayList<Dog> findAll() { SQLiteDatabase db=dbhelper.getReadableDatabase(); String[] columns={PetMetaData.DogTable._ID,PetMetaData.DogTable.NAME,PetMetaData.DogTable.AGE}; Cursor c=db.query(true, PetMetaData.DogTable.TABLE_NAME, columns, null, null, null, null, null, null, null); ArrayList<Dog> dogs=new ArrayList<Dog>(); Dog dog=null; while(c.moveToNext()) { dog=new Dog(); dog.setId(c.getInt(c.getColumnIndexOrThrow(PetMetaData.DogTable._ID))); dog.setAge(c.getInt(c.getColumnIndexOrThrow(PetMetaData.DogTable.AGE))); dog.setName(c.getString(c.getColumnIndexOrThrow(PetMetaData.DogTable.NAME))); dogs.add(dog); } c.close(); db.close(); return dogs; }}
package com.Cactus.sqlitetest;import java.util.ArrayList;import android.app.Activity;import android.os.Bundle;import android.util.Log;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.TextView;//第五步 调用适配器方法:// 1.创建一个DatabaseAdapter对象,并实例化dbAdapter=new DatabaseAdapter(this);// 2.调用方法: // 增:创建一个数据对象,并赋值,然后调用dbAdapter.add();// 删:调用dbAdapter.delete()// 改:创建新的数据对象,赋值,然后调用dbAdapter.updata();// 查:调用查方法,并赋值Dog dog=dbAdapter.findById(1);若有多行值,则创建ArrayList对象,循环赋值public class MainActivity extends Activity { private DatabaseAdapter dbAdapter; private Button add,delete,updata,findById,findAll; private TextView text; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); dbAdapter=new DatabaseAdapter(this); add=(Button)findViewById(R.id.add); delete=(Button)findViewById(R.id.delete); updata=(Button)findViewById(R.id.updata); findById=(Button)findViewById(R.id.findById); findAll=(Button)findViewById(R.id.findAll); text=(TextView)findViewById(R.id.textView1); addListener addlistener=new addListener(); add.setOnClickListener(addlistener); updataListener updatalistener =new updataListener(); updata.setOnClickListener(updatalistener); deleteListener deletelistener=new deleteListener(); delete.setOnClickListener(deletelistener); findByIdListener findbyidlistener =new findByIdListener(); findById.setOnClickListener(findbyidlistener); findAllListener findalllistener=new findAllListener(); findAll.setOnClickListener(findalllistener); } class addListener implements OnClickListener { @Override public void onClick(View v) { Dog dog=new Dog("beibei", 5); dbAdapter.add(dog); } } class deleteListener implements OnClickListener { @Override public void onClick(View v) { dbAdapter.delete(1); } } class updataListener implements OnClickListener { @Override public void onClick(View v) { Dog dog=new Dog("jingjing", 5); dbAdapter.updata(dog); } } class findByIdListener implements OnClickListener { @Override public void onClick(View v) { Dog dog=dbAdapter.findById(1); System.out.print(dog); Log.v(dog.getName(), "------------------------"); } } class findAllListener implements OnClickListener { @Override public void onClick(View v) { ArrayList<Dog> dogs=dbAdapter.findAll(); int size=dogs.size(); for(int i=0;i<size;i++) {// System.out.print(dogs.get(i)); Log.v(dogs.get(i).getName(), "---------------------"); } } }}
- Android开发之sqlite数据库的应用
- Android应用开发之SQLite数据库
- Android应用开发之SQLite数据库2
- Android开发当中SQLite数据库的应用
- 【Android 应用开发】Android 数据存储 之 SQLite数据库详解
- 【Android 应用开发】Android 数据存储 之 SQLite数据库详解
- Android 开发之SQLITE 数据库的使用
- android应用之SQLite数据库
- Android开发之Sqlite数据库
- Android开发之SQLite数据库
- Android开发之Sqlite数据库
- Android开发之数据库Sqlite
- Android开发之SQLite数据库
- Android开发之SQLite数据库
- android开发之-数据库SQLite
- Android应用开发之sqlite使用模糊查询数据库数据的三种方式
- Android 开发应用SQLite数据库的简单使用(三)
- Android应用开发技巧之更方便的使用Sqlite
- Python——列表生成式备忘
- Codeforces785D (组合数的逆元)
- poj1496—Word Index(组合数)
- c#基础 (一)数据类型,数据类型转换 结构体,构造函数
- PHP基础教程-11 创建单位转换器
- Android开发之sqlite数据库的应用
- android学习——使用TableLayout动态生成表格,并为tablerow中的列添加点击监听
- nlp中加入attention
- [PAT乙级]1048. 数字加密(20)
- 剑指Offer读书笔记5
- hdu2767(强连通分量+缩点)
- 进程的地址空间
- matlab 中的sum 函数的用法
- Windows 10 安装 Tensorflow GPU版本