首页 > 代码库 > 学生管理系统的学习

学生管理系统的学习

经过一天的学习,终于对数据库的操作有了一定成度的了解,但是期间出现了几次bug,真心体会到bug销魂,让人醉生梦死啊,不多说了上代码

涉及的主要内容

1 创建 数据库的帮助类sqliteophelper,并重写其构造方法

package com.djf.salary.db;import android.content.Context;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteDatabase.CursorFactory;import android.database.sqlite.SQLiteOpenHelper;/** * 创建一个数据库打开的帮助类,实现默认的构造方法,名称 游标工厂 数据库的版本 在oncreate方法中执行sql语句,创建一张表格 *  *  */public class SalaryInfoDBOpenHelper extends SQLiteOpenHelper {        public SalaryInfoDBOpenHelper(Context context, String name,            CursorFactory factory, int version) {        super(context, name, factory, version);        // TODO Auto-generated constructor stub    }    // 实现一些默认的构造方法        // 数据库被创建的的时候开始调用,用于数据表结构的初始化    @Override    public void onCreate(SQLiteDatabase db) {        // TODO Auto-generated method stub        db.execSQL("create table salaryinfo(_id integer primary key autoincrement,name varchar(10),company varchar(20),salary integer)");    }    @Override    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {        // TODO Auto-generated method stub    }}

 

2 创建数据库

	protected void onCreate(Bundle savedInstanceState) {		super.onCreate(savedInstanceState);		setContentView(R.layout.activity_main);		helper = new SalaryInfoDBOpenHelper(MainActivity.this, "student.db",				null, 1);		dao = new StudentInfoDao(this);		tv = (TextView) findViewById(R.id.tv);	}

 

3 创建学生信息对象,并写出get set 方法

package com.djf.salary.domain;public class StudentInfo {	private int id;	private String name;	private String company;	private int salary;	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 getCompany() {		return company;	}	public void setCompany(String company) {		this.company = company;	}	public int getSalary() {		return salary;	}	public void setSalary(int salary) {		this.salary = salary;	}	@Override	public String toString() {		return "StudentInfo [id=" + id + ", name=" + name + ", company="				+ company + ", salary=" + salary + "]";	}}

 

4 创建数据库增删改查的方法

package com.djf.salary.db.dao;import android.content.Context;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;import com.djf.salary.db.SalaryInfoDBOpenHelper;import com.djf.salary.domain.StudentInfo;public class StudentInfoDao { private Context context; private SalaryInfoDBOpenHelper helper; public StudentInfoDao(Context context) {  this.context = context;  helper = new SalaryInfoDBOpenHelper(context, "student.db", null, 1);  // TODO Auto-generated constructor stub } public void insert(String name, String company, int salary) {  SQLiteDatabase db = helper.getWritableDatabase();  db.execSQL(    "insert into salaryinfo (name,company,salary) values (? ,? ,?)",    new Object[] { name, company, salary });  db.close(); } public void delete(int id) {  SQLiteDatabase db = helper.getWritableDatabase();  db.execSQL("delete from salaryinfo where _id=?", new Object[] { id });  db.close(); } public void upgreadsalary(int salary, int id) {  SQLiteDatabase db = helper.getWritableDatabase();  db.execSQL("update salaryinfo set salary=? where _id=?", new Object[] {    salary, id });  db.close(); } public StudentInfo find(int id) {  SQLiteDatabase db = helper.getReadableDatabase();  // 得到结果的游标集  Cursor cursor = db.rawQuery("select * from salaryinfo where _id= ? ",    new String[] { String.valueOf(id) });  boolean result = cursor.moveToNext();  StudentInfo studentInfo = null;  if (result) {   String name = cursor.getString(cursor.getColumnIndex("name"));   String company = cursor.getString(cursor.getColumnIndex("company"));   int salary = cursor.getInt(cursor.getColumnIndex("salary"));   studentInfo = new StudentInfo();   studentInfo.setCompany(company);   studentInfo.setName(name);   studentInfo.setSalary(salary);   studentInfo.setId(id);  }  cursor.close();  db.close();  return studentInfo; }}

 

5 对数据库进行操作

public void add(View view) {  dao.insert("张三", "小米科技", 10000); } public void delete(View view) {  dao.delete(32); } public void update(View view) {  dao.upgreadsalary(9999, 2); } public void query(View view) {  StudentInfo info = dao.find(3);   int id =info.getId();   String name = info.getName();   String company = info.getCompany();   int salary = info.getSalary();   tv.setText("id=" + id + "\n" + "name=" + name + "\n" + "company="   + company + "\n" + "salary=" + salary);   System.out.println("学生信息:"+info.toString()     );  // if (info==null) {  // tv.setText("duanjiefei");  // }  // else{  // tv.setText("liudandan");  // }  // db = helper.getReadableDatabase();  // Cursor cursor = db.query("salaryinfo", new String[] { "_id", "name",  // "company" }, null, null, null, null, null);  // while (cursor.moveToNext()) {  // int id = cursor.getInt(cursor.getColumnIndex("_id"));  // String name = cursor.getString(cursor.getColumnIndex("name"));  // String company = cursor.getString(cursor.getColumnIndex("company"));  // String result = id+" "+name+" "+company+" \n";  // tv.setText(result);  // }//  if (info == null) {//   tv.setText("duanjiefi");//  } else {//   // tv.setText("liudandan");//   String name = info.getName();//   String company =info.getCompany();//   int id = info.getId();//   int salary = info.getSalary();//   tv.setText("姓名:"+name+"\n"+"公司:"+company+"\n"+"薪水:"+salary);//  }//  String name = info.getName();//  String company =info.getCompany();// int id = info.getId();// int salary = info.getSalary();// tv.setText("姓名:"+name+"\n"+"公司:"+company+"\n"+"薪水:"+salary); }

 期间出现了空指针异常,改了一下午,迷迷糊糊的bug竟然消失了,一直感觉没有操作新的东西,希望在后续的学习中的能够解决类似的问题~~~~~~~

学生管理系统的学习