`

android app 示例 SQLiteOpenHelper 实现数据操作

阅读更多

 

一个简单的入门 Android app 示例, 学生管理系统,  单表查询, 实习增、删、改、查, 基于:SQLiteOpenHelper

 

部分代码:SQLiteOpenHelper.java

package com.lw.db;

import java.util.ArrayList;
import java.util.List;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;
import android.text.TextUtils;

import com.lw.main.Student;


public class DBHelper extends SQLiteOpenHelper {
	
	private static DBHelper myDBHelper = null;

	public DBHelper(Context context, String name, CursorFactory factory, int version) {
		super(context, name, factory, version);
	}
	
	public static DBHelper getDBHelper(Context context) {
		if(myDBHelper == null) {
			myDBHelper = new DBHelper(context, DBConfig.DB_NAME, null, DBConfig.DB_VERSION);
		}
		return myDBHelper;
	}
	
	@Override
	public void onCreate(SQLiteDatabase db) {
		String sql = "create table "
				+ DBConfig.TABLE_STUDENT
				+ "(_id integer primary key autoincrement, serialNo VARCHAR2(20) not null, name VARCHAR2(50) not null, sex VARCHAR2(4), age VARCHAR2(4), className VARCHAR2(50) not null)";
		db.execSQL(sql);
	}

	@Override
	public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
		String sql = "DROP TABLE IF EXISTS " + DBConfig.TABLE_STUDENT;
		db.execSQL(sql);
		onCreate(db);
	}
	
	/***
	 * insert 学生信息
	 * @param serialNo
	 * @param name
	 * @param sex
	 * @param age
	 * @param className
	 * @return
	 */
	public long insertStudent(String serialNo, String name, String sex, String age, String className) {
		SQLiteDatabase db = this.getWritableDatabase();
		ContentValues cv = new ContentValues();
		cv.put("serialNo", serialNo);
		cv.put("name", name);
		cv.put("sex", sex);
		cv.put("age", age);
		cv.put("className", className);
				long rowId=db.insert(DBConfig.TABLE_STUDENT, null, cv);
				System.out.println("-----rowId-------"+rowId);
				return rowId;
	}

	/***
	 * 删除表的(所有)数据
	 * @param tableName
	 */
	public void clearData(String tableName) {
		SQLiteDatabase db = this.getReadableDatabase();
		String sql = "DELETE FROM " + tableName;
		db.execSQL(sql);
	}

	/***
	 * 删除单条记录
	 * @param _id
	 */
	public void deleteStudent(int _id) {
		SQLiteDatabase db = this.getReadableDatabase();
		String sql = "DELETE FROM " + DBConfig.TABLE_STUDENT + " WHERE _id=" + _id;
		db.execSQL(sql);
	}
	
	/***
	 * 编辑
	 * @param _id
	 */
	public void updateStudent(Student stu) {
		SQLiteDatabase db = this.getReadableDatabase();
		ContentValues cv = new ContentValues();
		//cv.put("serialNo", stu.getSerialNo());
		cv.put("name", stu.getName());
		cv.put("sex", stu.getSex());
		cv.put("age", stu.getAge());
		cv.put("className", stu.getClassName());
		int rowId=db.update(DBConfig.TABLE_STUDENT, cv, "_id =?", new String[]{ stu.get_id() + "" });
		System.out.println("-----update RowId------"+rowId);
	}

	/***
	 * 查询全部学生信息
	 * @param stu
	 * @return
	 */
	public List<Student> queryStudents(Student stu) {
		List<Student> list = new ArrayList<Student>();
		SQLiteDatabase db = this.getReadableDatabase();
		String sql = "select * from " + DBConfig.TABLE_STUDENT;
		if(stu != null) {
			sql += " where 1=1 ";
			if(TextUtils.isEmpty(stu.getSerialNo()) == false) {
				// TODO
			}
			if(TextUtils.isEmpty(stu.getName()) == false) {
				sql += " and name like '%" + stu.getName() + "%'";
			}
		}
		sql += " order by serialNo ";
		Cursor cursor = db.rawQuery(sql, null);
		Student info = null;
		while(cursor.moveToNext()) {
			info = new Student();
			info.set_id(cursor.getInt(cursor.getColumnIndexOrThrow("_id")));
			info.setSerialNo(cursor.getString(cursor.getColumnIndexOrThrow("serialNo")));
			info.setName(cursor.getString(cursor.getColumnIndexOrThrow("name")));
			info.setSex(cursor.getString(cursor.getColumnIndexOrThrow("sex")));
			info.setAge(cursor.getString(cursor.getColumnIndexOrThrow("age")));
			info.setClassName(cursor.getString(cursor.getColumnIndexOrThrow("className")));
			list.add(info);
		}
        return list;
	}
	

}

 

 

登录界面:


 

 

信息列表:
 

 

 

新增信息:
 

 

  • 大小: 65 KB
  • 大小: 357.3 KB
  • 大小: 348.7 KB
0
0
分享到:
评论

相关推荐

    Android应用源码获取数据库数据并动态显示在APP

    开发者可以通过SQLiteOpenHelper类来创建、升级数据库,并通过SQL语句来操作数据。例如,创建一个表的SQL语句可能是这样的: ```java CREATE TABLE IF NOT EXISTS TableName ( id INTEGER PRIMARY KEY ...

    Android-数据库SQLite的简单示例

    Android 数据库 SQLite 的简单示例 Android 中提供了三种数据存储方式,分别是文件存储、SharedPreferences 存储和数据库 SQLiteDatabase 存储。文件存储和 SharedPreferences 存储已经在之前的文章中进行了详细的...

    android 中 SQLiteOpenHelper的封装使用详解

    "Android 中 SQLiteOpenHelper 的封装使用详解" SQLiteOpenHelper 是 Android 中一个...SQLiteOpenHelper 的封装使用详解非常重要,它提供了对 SQLite 数据库的访问和管理功能,方便了 Android 应用程序的数据库操作。

    基于Android系统的Sqlite的数据应用实例

    在项目`EmployeeSQLiteAndroidApp-master`中,你可以找到一个完整的示例,展示了如何在Android应用中实现SQLite数据库的创建、增删改查操作。通过研究这个例子,你可以更深入地理解如何在实际项目中运用SQLite,提高...

    android lifecost app端源码

    综上所述,Android Lifecost App源码提供了一个全面的Android应用开发示例,涵盖了从UI设计到后台数据处理的多个关键环节,对于Android开发者来说具有很高的学习价值。通过深入分析和实践,我们可以掌握Android应用...

    contentprovider+sqlite

    - 在`ContentProvider` 中,我们通常会创建一个`SQLiteOpenHelper` 的子类,用于处理数据库的生命周期和数据操作。 - `ContentProvider` 的数据访问方法(如`query()`)会调用`SQLiteOpenHelper` 的相应方法,完成...

    Android应用源码----智能交通app.rar

    通过以上分析,我们可以看出这个智能交通app是如何利用SQLite数据库来实现用户登录功能的,同时也涉及到了Android应用的基本结构和数据库操作。对于Android开发者来说,理解这些知识点对于提升自己的开发技能非常有...

    Android studio App开发 SQLite数据的使用

    目录SQLite数据库简介SQLiteOpenHelper主要方法构造方法onCreate方法onUpgradegetWritableDatabase() 和getReadableDatabase()方法SQLiteOpenHelper类的完整示例代码SQLiteDatabase主要方法增 AddDelete 删查 query...

    Android应用源码之sqlite的操作,数据库升级创建表增删改查-IT计算机-毕业设计.zip

    总之,这个Android应用源码示例提供了对SQLite数据库操作的全面实践,对于理解和掌握Android应用中的数据管理至关重要,尤其对于正在进行毕业设计或者准备论文的学生,这是一个非常有价值的参考资源。通过学习和理解...

    Android-笔记一款以sqlitedatabase为数据库采用MVP架构的轻便易用的笔记app

    本项目名为"Android-笔记一款以sqlitedatabase为数据库采用MVP架构的轻便易用的笔记app",它是一个典型的Android应用示例,旨在展示如何结合SQLite数据库和Model-View-Presenter(MVP)架构模式来创建一个功能完善的...

    安卓SQLite数据库相关-android读取本地.db文件实现不变数据本地化.rar

    总之,Android应用中的SQLite数据库是数据存储的关键工具,通过创建SQLiteOpenHelper子类、操作SQL语句以及复制预置.db文件,我们可以实现数据的本地化存储,满足应用对数据持久化的需要。对于初学者来说,理解和...

    Android应用源码酒店在线预定app项目全套.zip

    【Android应用源码酒店在线预定app项目全套】这个压缩包文件提供了一个完整的Android应用程序源代码,主要用于实现酒店在线预订的功能。这个项目可以帮助开发者深入理解Android应用开发中的诸多技术和最佳实践,包括...

    天气预报app android studio

    - **实现原理**:创建一个服务类,在服务中进行数据获取与通知发送的操作。 - **实现步骤**: - 创建服务类,继承自`Service`。 - 在服务中访问网络获取最新天气数据并更新数据库。 - 使用`NotificationManager`...

    Android应用源码之Android学习之数据存储-IT计算机-毕业设计.zip

    这份“Android应用源码之Android学习之数据存储”压缩包提供了有关Android数据存储的实践示例,是进行Android毕业设计或移动开发App学习的宝贵资源。以下将详细解释Android中常用的数据存储方式及其在实际应用中的...

    android 密码管理app增删改查密码.zip

    开发者可能使用SQLiteOpenHelper的子类来管理数据库的版本和结构,通过ContentProvider进行数据的CRUD操作,这样还可以方便其他应用通过标准的Android数据共享机制访问这些数据。 两级密码管理是指在应用中设置了两...

    Android源码——数据库SQLite.zip

    SQLite提供了SQL语言来操作数据,包括创建表(CREATE TABLE)、插入数据(INSERT)、查询数据(SELECT)、更新数据(UPDATE)和删除数据(DELETE)。例如,你可以创建一个名为`Users`的表,包含`id`和`name`两个字段...

    Android SQLite 源码

    9. **数据备份与恢复**: Android提供API允许开发者实现数据的备份和恢复,包括SQLite数据库,这可以帮助用户在设备之间同步或恢复数据。 10. **数据库优化**: 对于大型数据库,可以使用索引来加快查询速度,合理...

    Android数据存储和数据访问

    `ContentProvider`是Android框架中用于数据共享的关键组件,它提供了一种标准接口,使得其他应用程序可以通过URI来访问和操作数据。创建`ContentProvider`需要继承`ContentProvider`类,并重写其中的`query()`, `...

Global site tag (gtag.js) - Google Analytics