Android : SQLite 版学生系统

Android : ListView 学生管理 中已经使用 ListView 控件实现简易学生管理功能,现在尝试采用 SQLite 数据库本地保存学生信息,并完善查询功能。

使用工具

  • android studio (ver. 3.5.1)
  • android(sdk 29)
  • java(ver.1.8.0)
  • gradle(ver. 5.4.1)

功能实现

1.创建学生实体类。

public class StuInfo implements Serializable {
    private String name;
    private String major;
    private String age;
    private String sex;
    private String kecheng;
    private String academy;
    private String date;
    private int id;
    ······

2.设计一个的列表来显示学生信息。

3.创建 MySQLiteAccess 类访问数据库。

public class MySQLiteAccess extends SQLiteOpenHelper {
    /**
     * @param context:上下文
     * @param version:版本号
     */
    public MySQLiteAccess(Context context, int version) {
        super(context, "stu4.db", null, version);
    }
    /**
     * 数据库文件创建成功后调用
     * SQL操作的语句
     * @param db 数据库 stuAdmin.db
     *           列:
     *           id(int类型主键:学号)
     *           name(text)
     *           sex(text)
     *           age(int)
     */
    @Override
    public void onCreate(SQLiteDatabase db) {
        System.out.println("数据库创建");
        db.execSQL("create table students(\n" +
                "id integer primary key  autoincrement,\n" +
                "name text,\n" +
                "sex text,\n" +
                "age integer,\n" +
                "academy text,\n" +
                "major text\n," +
                "date text\n" +
                ");");
        db.execSQL("create table courseTable(\n" +
                "stuno text ,\n" +
                "course text \n" +
                ");"
        );
    }
        ······

3.创建 DBop 类对数据库中数据进行操作。

public class DBop {
    private MySQLiteAccess mySQLiteAccess;
    private SQLiteDatabase database;

    public void test(Context context) {
        mySQLiteAccess = new MySQLiteAccess(context, 3);
        database = mySQLiteAccess.getReadableDatabase();
    }

    public void insert(StuInfo s) {
        int age = Integer.parseInt(s.getAge());
        database.execSQL("insert into students values(?,?,?,?,?,?,?" +
                ")", new Object[]{null, s.getName(), s.getSex(), age, s.getAcademy(), s.getMajor(), s.getDate()});
        System.out.println("插入数据成功");
    }

    public void delete(int id) {
        Integer I = new Integer(id);
        //  String n=new String(name);
        database.execSQL("delete from students where id=?", new Object[]{I});
    }

    public List<StuInfo> searchByName(String key) {
        List<StuInfo> listByName = new ArrayList<StuInfo>();
        key = "%" + key + "%";
        Cursor cursor = database.rawQuery("select * from students where name like?", new String[]{key});
        while (cursor.moveToNext()) {

            //   int id=cursor.getInt(cursor.getColumnIndex("id"));

            String name = cursor.getString(cursor.getColumnIndex("name"));
            String sex = cursor.getString(cursor.getColumnIndex("sex"));
            String age = cursor.getString(cursor.getColumnIndex("age"));
            listByName.add(new StuInfo(name, sex, age));
        }
        return listByName;
    }
        ······

4.创建 StudentAdapter

public class StudentAdapter extends BaseAdapter implements View.OnClickListener {
     ······
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        View stuView = View.inflate(stuContext, R.layout.list, null);
        TextView tv_id = stuView.findViewById(R.id.li_id);
        TextView tv_name = stuView.findViewById(R.id.li_name);
        TextView tv_academy = stuView.findViewById(R.id.li_academy);
        ImageView iv_edit = stuView.findViewById(R.id.li_edit);
        ImageView iv_delete = stuView.findViewById(R.id.li_delete);
        final StuInfo student = (StuInfo) stuDates.get(position);
        tv_id.setText(String.valueOf(student.getId()));
        tv_name.setText(student.getName());
        tv_academy.setText(student.getAcademy());
        iv_edit.setImageResource(R.drawable.edit);
        iv_delete.setImageResource(R.drawable.delete);
        //增加监听
        iv_edit.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Context context = v.getContext();
                Intent intent = new Intent();
                intent.setClass(context, Edit.class);
                intent.putExtra("altStu", student);
                ((Activity) context).startActivity(intent);
            }
        });
        iv_delete.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                dbOperate.delete(student.getId());
                stuDates.remove(student);
                StudentAdapter.this.notifyDataSetChanged();
            }
        });
        //给删除和编辑设置标志
        iv_edit.setTag(position);
        iv_delete.setTag(position);
        return stuView;
    }
    ······

5.创建 searchActivity

public class searchActivity extends AppCompatActivity implements View.OnClickListener {
    private Button btn_return;
    private ListView lv_searchlist;
    DBop dbOperate = new DBop();
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_search);
        lv_searchlist = (ListView) findViewById(R.id.lv_searchlist);
        btn_return = (Button) findViewById(R.id.btn_return);
        btn_return.setOnClickListener(this);
        dbOperate.test(this);
        Bundle bundle = getIntent().getExtras();
        String searchKey = bundle.getString("searchKey");
        List<StuInfo> searchList = dbOperate.searchByAll(searchKey);
        if (!searchList.isEmpty()) {
            StudentAdapter myAdapter = new StudentAdapter(this, searchList);
            lv_searchlist.setAdapter(myAdapter);
        } else {
            Toast.makeText(this, "无结果", Toast.LENGTH_SHORT);
        }
    }
        ······

演示

代码下载地址

StudentDemo

原文地址:https://www.cnblogs.com/esllovesn/p/12222488.html

时间: 2024-10-11 20:30:58

Android : SQLite 版学生系统的相关文章

Android:网络版学生系统

Android:网络版学生系统 项目简介 网络版学生信息管理APP,android客户端实现: 学生.管理员登录. 学生自我信息修改. 管理员对所有信息管理. 交换数据通过服务器,数据储存在服务器数据库中. 项目地址: AndroidStudentSystems 项目设计 使用工具 1.服务器搭建 技术: javaweb tomcat mysql8 工具: idea 2.客户端开发 技术: android(sdk 29) 工具: android studio (ver. 3.5.1) java(

Android SQLite总结(一)

前言 对于Android平台来说,系统内置了丰富的API来供开发人员操作SQLite,我们可以轻松的完成对数据的存取.下面就向大家介绍一下SQLite常用的操作方法.本篇文章主要用到SQLiteDatabase的一些函数.废话少说,直接贴代码!由于数据库中操作的对象时Student类,因此我们看一下Student.java代码: [java]   view plain copy <EMBED id=ZeroClipboardMovie_1 name=ZeroClipboardMovie_1 ty

Android SQLite总结(一) (转)

Android SQLite总结(一)  郑海波 2012-08-21 转载请声明:http://blog.csdn.net/nuptboyzhb/article/details/7891887 前言 对于Android平台来说,系统内置了丰富的API来供开发人员操作SQLite,我们可以轻松的完成对数据的存取.下面就向大家介绍一下SQLite常用的操作方法.本篇文章主要用到SQLiteDatabase的一些函数.废话少说,直接贴代码!由于数据库中操作的对象时Student类,因此我们看一下St

Android名片扫描识别系统SDK

Android名片扫描识别系统SDK 一.Android名片扫描识别系统应用背景 这些年,随着移动互联的发展,APP应用成爆发式的增长,在很多APP中都涉及到对名片信息的录入,如移动CRM.移动端OA,移动访客系统等:如果手动输入名片信息,速度慢,易出错,用户体验非常差.为了提高在移动终端上输入名片信息的速度和准确性,文通推出OCR名片录入技术SDK,以满足各个行业对名片信息自动录入的需求,只需在APP中集成Android名片扫描识别系统SDK,用户便可通过手机拍照,自动识别录入名片信息. 二.

Android+Sqlite 实现古诗阅读应用(三)

往期传送门: Android+Sqlite 实现古诗阅读应用(一) Android+Sqlite 实现古诗阅读应用(二) 加入截图分享的功能. 很多应用都有分享的功能,我也想在我的古诗App里加入这个功能,单纯的发送文字看起来太逊了,我决定模仿UC浏览器那样发送古诗的截图,使用官方的分享需要授权KEY,太过麻烦所以打算使用系统的分享. 1.在meau里添加这个item: 1 <item 2 android:id="@+id/menu_item_share" 3 android:s

Android+Sqlite 实现古诗阅读应用(二)

传送门:Android+Sqlite 实现古诗阅读应用(一):http://www.cnblogs.com/lfk-dsk/p/4492974.html Hi,又回来了,最近接到很多热情洋溢的小伙伴们的来信,吼开心哈,我会继续努力的=-=! 上回的东西我们做到了有个textview能随机选择诗来进行显示,这也是我做这个东西的初衷,我想找我到底有哪些古诗没有读过,更想感受一下风吹哪页看哪页的闲适(扯远了=-=!),所以功能现在差不多算是结束了, 不过一个古诗应用这么丑可不行,还有就是,我找到了我要

Android SQLite最简单demo实现(增删查改)

本来不太想写这篇博客的,但是看到网上的关于android数据库操作的博文都讲得很详细,对于像我这样的新手入门了解SQLite的基本操作有一定难度,所以我参考了网上的一些博客文章,并自己亲自摸索了一遍,希望写出这么一篇博文来记录SQLite的最基本操作,同时也希望能够对android的新手们有些帮助. 参考博客:http://www.20864.com/201247/274.html 这里只是一个示范性的demo,并没实现什么具体功能,只实现了对数据库的增删查改操作. 以下是实现demo的步骤:

Android[安卓] 版Air Video 远程播放电脑视频

在苹果的iOS下面,有个应用Air Video,可以在iOS下通过Wifi远程直接播放电脑里的视频,而不需要把视频复制到手机上再看.非常好用!最近用了Android的手机,想找类似的应用,找了很久都没找到.仔细想了下AirVideo的工作原理,和优酷等视频网站类似,在Android下面应该也可以有类似的方法实现. 今日在华为荣耀6上面终于验证通过了一个完美的方案,赶紧放上来和有同样需要的朋友们分享分享. 先说一下Air Video的工作原理: 1) 在Windows下面安装Air Video S

Android SQLite使用

1. SQLite 1.1 SQLite介绍 SQLite是一款轻型的数据库, 是遵守ACID的关系型数据库管理系统, Android系统已经在框架中适配接口供用户使用. 1.2 SQLite数据类型 SQLite采用的是动态数据类型, 会根据存入值自动判断.SQLite具有以下五种常用的数据类型: 存储类 描述 NULL NULL 值 INTEGER 带符号的整数,根据值的大小存储在 1.2.3.4.6 或 8 字节中 REAL 浮点值,存储为 8 字节的 IEEE 浮点数字 TEXT 文本字