SQLite数据库创建及增删改查

插入语句:insert into person (name,number) values(‘zhangsan’,20)

查询语句:

(1)    select * from person

(2)    select * from person wherename=’zhangsan’

更新语句:update person set number='200' where name='zhangsan'

删除语句:delete from person where name='zhangsan'

 

使用数据库

一共要有四个类

(1)      PersonSQLiteOpenHelper(数据库类)

(2)      PersonDB(操作数据库的类)

(3)      PersonDao(对数据库进行增删改查的操作工具类)

(4)      Person对象类

PersonSQLiteOpenHelper代码:

package com.example.db;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

public class PersonSQLiteOpenHelper extends SQLiteOpenHelper {

	/*
	 * 数据库的构造方法,用来定义数据库的名称,数据库查询的结果集,数据库的版本
	 * */
	public PersonSQLiteOpenHelper(Context context) {
		super(context, "persondb", null, 1);
		// TODO Auto-generated constructor stub
	}

	/*
	 * 数据库第一次被创建调用的方法
	 * */
	@Override
	public void onCreate(SQLiteDatabase db) {
		// TODO Auto-generated method stub
		//初始化数据库的表结构
		db.execSQL("create table person (id integer primary key autoincrement,name varchar(20),number varchar(20))");
	}

	@Override
	public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) {
		// TODO Auto-generated method stub

	}

}


 

PersonDB代码:

package com.example.test;

import java.util.List;

import android.database.sqlite.SQLiteDatabase;
import android.test.AndroidTestCase;

import com.example.db.PersonSQLiteOpenHelper;
import com.example.db.dao.PersonDao;
import com.example.db.dao.domain.Person;

public class TestPersonDB extends AndroidTestCase {

	public void testCreateDB() throws Exception{
		PersonSQLiteOpenHelper helper = new PersonSQLiteOpenHelper(getContext());
		SQLiteDatabase db = helper.getWritableDatabase();
	}
	
	public void testAdd() throws Exception{
		PersonDao dao = new PersonDao(getContext());
		dao.add("jim", "0181");
		dao.add("peter", "0007");
	}
	public void testfind() throws Exception{
		PersonDao dao = new PersonDao(getContext());
		boolean result = dao.find("jim");
	}
	public void testDel() throws Exception{
		PersonDao dao = new PersonDao(getContext());
		dao.delete("jim");
	}
	public void testUpdate() throws Exception{
		PersonDao dao = new PersonDao(getContext());
		dao.update("jim", "9999");
	}
	public void findAll() throws Exception{
		PersonDao dao = new PersonDao(getContext());
		List<Person> persons = dao.findAll();
		for(Person per:persons){
			System.out.println(per.toString());
		}
	}
}


 

PersonDao代码:

package com.example.db.dao;
//用于操作数据库的一个类
import java.util.ArrayList;
import java.util.List;

import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;

import com.example.db.PersonSQLiteOpenHelper;
import com.example.db.dao.domain.Person;

public class PersonDao {
	private PersonSQLiteOpenHelper helper;
	//在构造函数中进行初始化
	public PersonDao(Context context) {
		helper = new PersonSQLiteOpenHelper(context);
	}
	
	/*
	 * 添加一条数据到数据库
	 * name,number
	 * 
	 * */
	public void add(String name,String number){
		SQLiteDatabase db = helper.getWritableDatabase();
		
		db.execSQL("insert into person (name,number) values (?,?)",new Object[]{"zhangsan",50});
		db.close();
	}
	//查询记录是否存在
	//返回boolean
	public boolean find(String name){
		SQLiteDatabase db = helper.getWritableDatabase();
		Cursor cursor = db.rawQuery("select * from person where name=?", new String[]{name});
		boolean result = cursor.moveToNext();
		cursor.close();
		db.close();
		return result;
	}
	//更新数据
	public void update(String name,String newnumber){
		SQLiteDatabase db = helper.getWritableDatabase();
		db.execSQL("update person set number=? where name=?",new Object[]{name,newnumber});
		
		db.close();
	}
	//删除数据
	public void delete(String name){
		SQLiteDatabase db = helper.getWritableDatabase();
		db.execSQL("delete from person where name=?", new String[]{name});
		db.close();
	}
	//查询所有的数据
	public List<Person> findAll(){
		SQLiteDatabase db = helper.getWritableDatabase();
		List<Person> persons = new ArrayList<Person>();
		
		Cursor cursor = db.rawQuery("select * from person", null);
		//Cursor cursor = db.rawQuery("select id,name,number from person", null);//第二种写法
		
		while(cursor.moveToNext()){
			int id = cursor.getInt(cursor.getColumnIndex("id"));
			String name = cursor.getString(cursor.getColumnIndex("name"));
			String number = cursor.getString(cursor.getColumnIndex("number"));
			//创建一个对象,并初始化
			Person per = new Person(id,name,number);
			//把对象添加进集合中
			persons.add(per);
		}
		//关闭数据库的连接
		db.close();
		return persons;
	}
}


 

附:PersonDao代码中的db.execSQL()直接执行SQL语句可能会引起某些不可预知的错误,并且大部分人不熟SQL语句,所以google工程师把增删改查的四个语句封装成了API,供直接使用,说以上面的红色部分的语句可改如下

public long add(String name,String number){
		SQLiteDatabase db = helper.getWritableDatabase();
		
		//db.execSQL("insert into person (name,number) values (?,?)",new Object[]{"zhangsan",50});
		ContentValues values = new ContentValues();
		values.put("name", "zhangsan");
		values.put("number", 50);
		long num = db.insert("person", null, values);
		db.close();
		return num;
	}
	//查询记录是否存在
	//返回boolean
	public boolean find(String name){
		SQLiteDatabase db = helper.getWritableDatabase();
		//Cursor cursor = db.rawQuery("select * from person where name=?", new String[]{name});
		Cursor cursor = db.query("person", null, "nume=?", new String[]{name}, null, null, null);
		boolean result = cursor.moveToNext();
		cursor.close();
		db.close();
		return result;
	}
	//更新数据
	public int update(String name,String newnumber){
		SQLiteDatabase db = helper.getWritableDatabase();
		//db.execSQL("update person set number=? where name=?",new Object[]{name,newnumber});
		ContentValues values = new ContentValues();
		values.put("number", newnumber);
		int number = db.update("person", values, "name=?", new String[]{name});
		db.close();
		return number;
	}
	//删除数据
	public int  delete(String name){
		SQLiteDatabase db = helper.getWritableDatabase();
		//db.execSQL("delete from person where name=?", new String[]{name});
		int number = db.delete("person", "name=?", new String[]{name});
		db.close();
		return number;
	}

Person代码:
package com.example.db.dao.domain;

public class Person {
	private int id;
	private String name;
	private String number;
	public Person(){}
	public Person(int id, String name, String number) {
		super();
		this.id = id;
		this.name = name;
		this.number = number;
	}
	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 getNumber() {
		return number;
	}
	public void setNumber(String number) {
		this.number = number;
	}
	public String toString(){
		return this.id+" "+this.name+" "+this.number;
	}
}


 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
首先,我们需要在 Android Studio 中创建一个 SQLite 数据库。 1. 在项目中创建一个新的文件夹,命名为“database”或者其他你喜欢的名称。 2. 在该文件夹下创建一个新的类,命名为“DatabaseHelper”。 3. 在该类中,继承“SQLiteOpenHelper”类,并重写“onCreate”和“onUpgrade”方法。 ```java public class DatabaseHelper extends SQLiteOpenHelper { private static final String DATABASE_NAME = "myDatabase.db"; private static final int DATABASE_VERSION = 1; public DatabaseHelper(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); } @Override public void onCreate(SQLiteDatabase db) { // 创建表格 String sql = "CREATE TABLE IF NOT EXISTS student (" + "_id INTEGER PRIMARY KEY AUTOINCREMENT, " + "name TEXT, " + "age INTEGER)"; db.execSQL(sql); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { // 更新表格 String sql = "DROP TABLE IF EXISTS student"; db.execSQL(sql); onCreate(db); } } ``` 在这个例子中,我们创建了一个名为“myDatabase.db”的数据库,以及一个名为“student”的表格(包含三个字段:_id、name、age)。如果该表格不存在,则在“onCreate”方法中创建该表格。如果该表格已经存在,但版本号发生了变化,则在“onUpgrade”方法中更新该表格。 接下来,我们需要创建一个“DataHelper”类来实现数据库增删改查功能。 ```java public class DataHelper { private DatabaseHelper dbHelper; private SQLiteDatabase db; public DataHelper(Context context) { dbHelper = new DatabaseHelper(context); db = dbHelper.getWritableDatabase(); } public void insert(String name, int age) { ContentValues cv = new ContentValues(); cv.put("name", name); cv.put("age", age); db.insert("student", null, cv); } public void update(int id, String name, int age) { ContentValues cv = new ContentValues(); cv.put("name", name); cv.put("age", age); db.update("student", cv, "_id = ?", new String[] { String.valueOf(id) }); } public void delete(int id) { db.delete("student", "_id = ?", new String[] { String.valueOf(id) }); } public Cursor queryAll() { Cursor cursor = db.query("student", null, null, null, null, null, null); return cursor; } public Cursor queryById(int id) { Cursor cursor = db.query("student", null, "_id = ?", new String[] { String.valueOf(id) }, null, null, null); return cursor; } public void close() { db.close(); dbHelper.close(); } } ``` 在这个例子中,我们创建了一个“DataHelper”类,用于实现增删改查功能。我们在该类中创建了以下方法: 1. “insert”方法:用于向表格中插入数据。 2. “update”方法:用于更新表格中的数据。 3. “delete”方法:用于删除表格中的数据。 4. “queryAll”方法:用于查询表格中的所有数据。 5. “queryById”方法:用于根据ID查询表格中的数据。 6. “close”方法:用于关闭数据库连接。 最后,我们可以在 Activity 中调用这些方法来实现具体的操作。例如: ```java DataHelper dataHelper = new DataHelper(this); dataHelper.insert("Tom", 20); // 插入一条数据 dataHelper.update(1, "Jerry", 22); // 更新一条数据 dataHelper.delete(1); // 删除一条数据 Cursor cursor = dataHelper.queryAll(); // 查询所有数据 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("SQLite", "_id=" + id + ", name=" + name + ", age=" + age); } cursor.close(); dataHelper.close(); // 关闭数据库连接 ``` 这样,就可以实现一个简单的 SQLite 数据库增删改查功能了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值