关于Android的轻量级数据库SQLlite的使用实践小项目 (生管理系统(附源码))
来源:互联网 发布:淘宝美工将来有前途么 编辑:程序博客网 时间:2024/06/05 18:45
关于Android的轻量级数据库SQLlite的使用实践小项目 (生管理系统(附源码))
项目部分UI截图展示:
项目比较小,非常适合的Android新手刚入门 练习SQLlite数据库的使用,
下面介绍一下这个小项目的主要框架实现和功能讲解
项目框架实现:
一:整个项目最底层只涉及到数据库的操作,所以程序一经启动就要将底层搭建好,我使用的方法是一进入主界面
就创建好需要的数据库几关系表.由于整个项目只涉及到学生数据,所以应该只要创建一个数据库,所以我这里使用了
java的单例设计模式(懒汉式)
public class MydatabaseHelper extends SQLiteOpenHelper { private static MydatabaseHelper instance; //创建管理员表 public static final String CREATE_MANAGER="create table manager(id integer primary key autoincrement,name text ,password text)"; //创建学生表 public static final String CREATE_STUDENT="create table student(id integer primary key autoincrement,name text ,sex text,phone text,password text,mathScore integer,chineseScore integer,englishScore integer)"; private MydatabaseHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) { super(context, name, factory, version); }
首先创建一个类继承自SQLiteOpenHelper,将构造方法私有化,内部定义一个静态的本
类对象和获取本类对象的静态方法,
public static MydatabaseHelper getInstance(Context context){ if (instance==null){ instance=new MydatabaseHelper(context,"studen_tmanager.db",null,3); } return instance;}然后思路就很清晰了,在我们首次创建数据库的时候就会产生一个该类的实例化对象,
而且只会有一个对象,也就是上面所说的单例设计模式.
单利设计模式常用的应用场景有:
1. Windows的Task Manager(任务管理器)
2. windows的Recycle Bin(回收站)
二:数据的显示,既然涉及到数据的显示,肯定是不同的数据,所以首先考虑Android中最常用的也是最难用的ListView
了,我这里不涉及太多数据展示,所以用到的适配器是ArrayAdapter(主要用于显示一行数据时首先考虑);
public class StudentAdapter extends ArrayAdapter { private int resourseid; public StudentAdapter(@NonNull Context context, int resource, @NonNull List objects) { super(context, resource, objects); this.resourseid=resource; }这里因为我要主要只需要显示一行数据,所以用的是ArrayAdapter ;
关于设配器的话有很多实现类,最常见的也最常用的主要是
- BaseAdapter是一个抽象类,继承它需要实现较多的方法,所以也就具有较高的灵活性;
- ArrayAdapter支持泛型操作,最为简单,只能展示一行字。
- SimpleAdapter有最好的扩充性,可以自定义出各种效果。
- SimpleCursorAdapter可以适用于简单的纯文字型ListView,它需要Cursor的字段和UI的id对应起来。如需要实现更复杂的UI也可以重写其他方法。可以认为是SimpleAdapter对数据库的简单结合,可以方便地把数据库的内容以列表的形式展示出来。
三:数据的存取,这就不用说了 ,首先得要有数据才行,所以数据肯定是要存到数据库里面去的,所以数据存哪我们就去
哪取,所以这也是整个项目的核心操作,主要熟练掌握使用数据库的增(insert) 删(delect) 改(update) 差(select)四种语言
,实现数据存取主要涉及到 execSQL()方法和rawQuery()方法,还有Cursor:结果集游标,发
dbHelper=MydatabaseHelper.getInstance(this);SQLiteDatabase db=dbHelper.getReadableDatabase();//检测密码是否是六个纯数字if (firstpassinfo.matches("[0-9]{6}")){ //判断两次密码是否相同 if (firstpassinfo.equals(secondpassinfo)){ Cursor cursor=db.rawQuery("select name from manager where name=? ",new String[]{nameinfo}); //判断用户名是否存在 if(cursor.moveToNext()){ Toast.makeText(this,"用户名已存在",Toast.LENGTH_LONG).show(); }else { //将用户名,密码存入数据库 db.execSQL("insert into manager (name,password) values(?,?)",new String[]{nameinfo,firstpassinfo}); Intent intent=new Intent(this,Manager_login_Activity.class); intent.putExtra("username",nameinfo); startActivity(intent); Toast.makeText(this,"注册成功!",Toast.LENGTH_LONG).show(); } }else { Toast.makeText(this,"两次密码不相同",Toast.LENGTH_LONG).show(); }}else { Toast.makeText(this,"密码为6个纯数字",Toast.LENGTH_LONG).show();}
四:界面的切换跳转,UI的美观设计,这里主要涉及到的是圆形头像(CircleImageView)的使用.
首先需要在gradle文件进行配置;
dependencies { compile 'com.android.support:design:26.1.0'
}然后在布局文件里直接使用,要写完整的包名.类名
<de.hdodenhof.circleimageview.CircleImageView android:id="@+id/manager_layout_pic" android:layout_centerHorizontal="true" android:layout_width="100dp" android:layout_height="100dp" android:layout_marginTop="100dp" android:src="@drawable/admin_photo" />
这样就可以很简单实现一个圆形头像了,使用开源框架主要是为了显示多张圆形图片
当然不使用开源框架也行,也可以这样,
<ImageView android:id="@+id/Iv_user" android:layout_width="60dp" android:layout_height="60dp" android:layout_gravity="center_horizontal" android:layout_marginTop="30dp" />
还有就是自定义圆角按钮的使用,也是很简单的,我这里只说最简便的方法;/** 获取圆形头像** */public void initInmage(){ //通过BitmapFactory将资源文件图片转换为一个Bitmap对象 Bitmap bitmap= BitmapFactory.decodeResource(getResources(),R.drawable.user1); //取得圆角实现类 RoundedBitmapDrawable drawable= RoundedBitmapDrawableFactory.create(getResources(),bitmap); //通过Drawable对象获取画笔并设置画笔 drawable.getPaint().setAntiAlias(true); //设置圆角半径 drawable.setCornerRadius(Math.max(bitmap.getWidth(),bitmap.getHeight())); //将做好的Drawable显示到ImageView上 iv_user.setImageDrawable(drawable);}
首先在drawable文件下创建一个login_btn.xml文件,
<?xml version="1.0" encoding="utf-8"?><shape xmlns:android="http://schemas.android.com/apk/res/android"> <corners android:radius="15dp"/>//设置圆角半径 <solid android:color="#aee4f9"/>//设置背景颜色</shape>然后设置一下shape属性即可,
然后将背景设置为你做好的文件就行了.
android:background="@drawable/login_btn"
当然还可以设置的更加美观,自定义style.这里我就不再说了 ,只说简单易懂的.
主要功能实现:
一:管理员功能:注册账号,登录管理系统,查询学生信息,添加学生信息,查修改学生信息,删除学生信息
二:学生功能:登录账户,查询个人信息,更改个人密码.
三:UI美工部分:主要用了自定义圆形图片(应用了开源框架 CircleImageView),
自定义圆角按钮,
自定义Alertdialog对话框布局(使用了布局填充器inflate()方法),
使用Google在2015的IO大会上带来的TextInputLayout构造一个酷炫的登录框架
最后总结一下在实践的时候容易忽视的也是我自己会犯的一些错误:
1.首先最最容易犯的错误就是activity没有在AndroidManifest.xml(清单文件)中配置了,
要是跳转界面的时候挂了,十有八九就是这个问题啦.
2.凡是涉及到数据库的应用,也是很容易出错的,sql语句是很容易写错的,可以用记事本写好直接复制,这样可以减少出错,还有就是有时候会吧数据库的列名,表名字母拼写错,
所以数据库操作出错了话,先检查sql语句有没有错,在看一下数据名有没有写错啦.
3.涉及到activity之间的回调及数据的传送,两个页面跳转同一个activity界面的时候,如果一个回传数据,一个不回传,那么都需要设置一个Boolean类型的传送值以便判断是从哪一个
activity跳转过来的.
最后说一句:当然这个小项目也是借鉴了其他博主的代码,但不管怎样,取其精华去其糟粕.
好的东西拿出来大家一起交流分享,
到这里差不多项目也就完成了,项目很小,很适合刚入门的新手练习实践,和刚刚接触sqllite的朋友,这里只是做一次分享和自我总结复习,欢迎各路大神指导交流意见.不喜勿喷!!
附上源码:
github源码:点击打开链接
码云地址:点击打开链接