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;
	}
	

}

 

 

登录界面:


 

 

信息列表:
 

 

 

新增信息:
 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是一个简单的示例代码,演示如何在Android应用程序中实现增删改查功能: 1. 创建数据库 ```java public class DatabaseHelper extends SQLiteOpenHelper { private static final String DATABASE_NAME = "my_database"; private static final int DATABASE_VERSION = 1; public DatabaseHelper(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); } @Override public void onCreate(SQLiteDatabase db) { db.execSQL( "CREATE TABLE my_table (" + "_id INTEGER PRIMARY KEY AUTOINCREMENT, " + "name TEXT, " + "age INTEGER)" ); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { db.execSQL("DROP TABLE IF EXISTS my_table"); onCreate(db); } } ``` 2. 创建数据模型 ```java public class Person { private long id; private String name; private int age; public Person() { } public Person(long id, String name, int age) { this.id = id; this.name = name; this.age = age; } public long getId() { return id; } public void setId(long 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; } } ``` 3. 创建增删改查操作 ```java public class PersonDAO { private SQLiteDatabase db; public PersonDAO(Context context) { DatabaseHelper dbHelper = new DatabaseHelper(context); db = dbHelper.getWritableDatabase(); } public void addPerson(Person person) { ContentValues values = new ContentValues(); values.put("name", person.getName()); values.put("age", person.getAge()); db.insert("my_table", null, values); } public void deletePerson(long id) { db.delete("my_table", "_id=?", new String[] { String.valueOf(id) }); } public void updatePerson(Person person) { ContentValues values = new ContentValues(); values.put("name", person.getName()); values.put("age", person.getAge()); db.update("my_table", values, "_id=?", new String[] { String.valueOf(person.getId()) }); } public List<Person> getAllPersons() { List<Person> list = new ArrayList<>(); Cursor cursor = db.rawQuery("SELECT * FROM my_table", null); while (cursor.moveToNext()) { long id = cursor.getLong(cursor.getColumnIndex("_id")); String name = cursor.getString(cursor.getColumnIndex("name")); int age = cursor.getInt(cursor.getColumnIndex("age")); list.add(new Person(id, name, age)); } cursor.close(); return list; } public Person getPerson(long id) { Cursor cursor = db.rawQuery("SELECT * FROM my_table WHERE _id=?", new String[] { String.valueOf(id) }); if (cursor.moveToFirst()) { String name = cursor.getString(cursor.getColumnIndex("name")); int age = cursor.getInt(cursor.getColumnIndex("age")); return new Person(id, name, age); } cursor.close(); return null; } } ``` 4. 创建用户界面 这里我们使用RecyclerView来展示所有数据。 ```java public class MainActivity extends AppCompatActivity { private RecyclerView recyclerView; private PersonAdapter adapter; private PersonDAO personDAO; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); recyclerView = findViewById(R.id.recycler_view); recyclerView.setLayoutManager(new LinearLayoutManager(this)); adapter = new PersonAdapter(); recyclerView.setAdapter(adapter); personDAO = new PersonDAO(this); findViewById(R.id.button_add).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Person person = new Person(); person.setName("John"); person.setAge(30); personDAO.addPerson(person); adapter.updateData(personDAO.getAllPersons()); } }); findViewById(R.id.button_update).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Person person = personDAO.getPerson(1); if (person != null) { person.setName("Peter"); person.setAge(25); personDAO.updatePerson(person); adapter.updateData(personDAO.getAllPersons()); } } }); findViewById(R.id.button_delete).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { personDAO.deletePerson(1); adapter.updateData(personDAO.getAllPersons()); } }); adapter.updateData(personDAO.getAllPersons()); } private class PersonAdapter extends RecyclerView.Adapter<PersonViewHolder> { private List<Person> list = new ArrayList<>(); public void updateData(List<Person> list) { this.list = list; notifyDataSetChanged(); } @NonNull @Override public PersonViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_person, parent, false); return new PersonViewHolder(view); } @Override public void onBindViewHolder(@NonNull PersonViewHolder holder, int position) { Person person = list.get(position); holder.nameTextView.setText(person.getName()); holder.ageTextView.setText(String.valueOf(person.getAge())); } @Override public int getItemCount() { return list.size(); } } private static class PersonViewHolder extends RecyclerView.ViewHolder { TextView nameTextView; TextView ageTextView; public PersonViewHolder(@NonNull View itemView) { super(itemView); nameTextView = itemView.findViewById(R.id.text_view_name); ageTextView = itemView.findViewById(R.id.text_view_age); } } } ``` 这里我们需要创建一个item_person.xml文件来定义RecyclerView的item布局。 ```xml <!-- item_person.xml --> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:padding="16dp"> <TextView android:id="@+id/text_view_name" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="18sp" /> <TextView android:id="@+id/text_view_age" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="16dp" android:textSize="18sp" /> </LinearLayout> ``` 综上所述,以上代码演示了如何在Android实现增删改查功能。当用户点击添加、修改、删除按钮时,应用程序将执行相应的操作,并且RecyclerView将更新以显示最新的数据
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值