Skip to content

Commit

Permalink
修复操作数据库时的一个bug(cursor.close())
Browse files Browse the repository at this point in the history
  • Loading branch information
sleepingAnt committed Dec 12, 2012
1 parent 6c1ec63 commit c84e98d
Show file tree
Hide file tree
Showing 4 changed files with 152 additions and 141 deletions.
Binary file modified bin/Timetable.apk
Binary file not shown.
Binary file modified bin/classes.dex
Binary file not shown.
Binary file modified bin/resources.ap_
Binary file not shown.
293 changes: 152 additions & 141 deletions src/com/ant/timetable/db/MainDB.java
Expand Up @@ -10,34 +10,85 @@
import android.util.Log;

public class MainDB extends SQLiteOpenHelper {
@Override
public synchronized void close() {
super.close();
closeDB();
}

private static final String dbName = "timetable.db";
private SQLiteDatabase db;

private SQLiteDatabase db;
public MainDB(Context context) {
super(context, dbName, null, 1);
}

@Override
public void onCreate(SQLiteDatabase sdb) {
String sqlTableCourse = "create table table_course(t_week integer,t_section integer,"
+ "course_name varchar(50),course_classroom varchar(50),course_teacher varchar(50)"
+ ")";
String sqlTableCourseName = "create table table_course_name(course_name varchar(50))";
sdb.execSQL(sqlTableCourse);
sdb.execSQL(sqlTableCourseName);
/**
* 添加课程信息
*
* @param week
* 第几周
* @param section
* 第几节
* @param name
* 课程名字
* @param room
* 上课教室
* @param teacher
* 上课教师
* @return 成功则返回true
*/
public boolean addCourse(int week, int section, String courseName,
String classroom, String teacher) {
boolean result = false;
try {
db = this.getWritableDatabase();
String sql = String
.format("insert into table_course (t_week,t_section,course_name,course_classroom,course_teacher)"
+ " values (%d,%d,'%s','%s','%s')", week, section,
courseName, classroom, teacher);
db.execSQL(sql);
closeDB();
result = true;
} catch (Exception e) {
closeDB();
}
return result;

}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
/**
* 添加课程信息(用于编辑课程表时的自动提示)
* @param courseName
* @return
*/
public boolean addNewCourseName(String courseName) {
boolean result = false;
try {
db = this.getWritableDatabase();
String sql = String
.format("insert into table_course_name (course_name) values ('%s')", courseName);
if(!isCourseNameExist(courseName)) {
db.execSQL(sql);
}
closeDB();
result = true;
} catch (Exception e) {
result = false;
closeDB();
}
return result;
}

@Override
public synchronized void close() {
super.close();
closeDB();
}

/**
* 关闭打开的数据库
*/
public void closeDB() {
if (db.isOpen()) {
db.close();
}
}

/**
* 清空课程表数据
* @return
Expand All @@ -56,6 +107,7 @@ public boolean deleteAllCourse() {
closeDB();
} catch (Exception e) {
result = false;
closeDB();
}
return result;
}
Expand All @@ -76,26 +128,68 @@ public boolean deleteAllCourseName() {
closeDB();
} catch (Exception e) {
result = false;
closeDB();
}
return result;
}

/**
* 添加课程信息(用于编辑课程表时的自动提示)
* @param courseName
* @return
* 修改课程信息
*
* @param week
* 第几周
* @param section
* 第几节
* @param name
* 课程名字
* @param room
* 上课教室
* @param teacher
* 上课教师
* @return 成功则返回true
*/
public boolean addNewCourseName(String courseName) {
public boolean editCourse(int week, int section, String courseName,
String classroom, String teacher) {
boolean result = false;
try {
db = this.getWritableDatabase();
String sql = String
.format("insert into table_course_name (course_name) values ('%s')", courseName);
if(!isCourseNameExist(courseName)) {
db.execSQL(sql);
}
.format("update table_course set course_name='%s',course_classroom='%s',course_teacher='%s'"
+ " where t_week="
+ week
+ " and t_section="
+ section, courseName, classroom, teacher);
db.execSQL(sql);
closeDB();
result = true;
} catch (Exception e) {
closeDB();
}
return result;
}

/**
* 判断要更新的课程信息在更新之前是否为空
*
* @param week
* 准备更新的课程是第几周
* @param section
* 准备更新的课程是第几节
* @return 如果为空返回false,不为空返回true
*/
public boolean isCourseExist(int week, int section) {
boolean result = true;
try {
db = this.getWritableDatabase();
String sql = "select course_name from table_course where t_week="
+ week + " and t_section=" + section;
Cursor cursor = db.rawQuery(sql, null);
if (cursor.getCount() == 0) {
result = false;
}
cursor.close();
Log.i("my", "count" + cursor.getCount());
closeDB();
} catch (Exception e) {
result = false;
}
Expand All @@ -115,24 +209,26 @@ private boolean isCourseNameExist(String courseName) {
if(cursor.getCount() == 0) {
result = false;
}
cursor.close();
closeDB();
return result;
}

/**
* 获取课程名称(用于编辑课程表时的自动提示)
* @return
*/
public List<String> queryCourseName() {
List<String> list = new ArrayList<String>();
db = this.getWritableDatabase();
String sql = "select * from table_course_name";
Cursor cursor = db.rawQuery(sql, null);
while(cursor.moveToNext()) {
list.add(cursor.getString(0));
}
return list;
@Override
public void onCreate(SQLiteDatabase sdb) {
String sqlTableCourse = "create table table_course(t_week integer,t_section integer,"
+ "course_name varchar(50),course_classroom varchar(50),course_teacher varchar(50)"
+ ")";
String sqlTableCourseName = "create table table_course_name(course_name varchar(50))";
sdb.execSQL(sqlTableCourse);
sdb.execSQL(sqlTableCourseName);
}


@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

}

/**
* 查询一条课程的相关信息(包括课程名称、老师、上课地点)
* @param week 当前课程所在的周
Expand All @@ -149,11 +245,12 @@ public Course queryCourse(int week, int section) {
+ week + " and t_section=" + section;
Cursor cursor = db.rawQuery(sql, null);
while(cursor.moveToNext()) {
myCourse.classroom = cursor.getString(3);
myCourse.courseName = cursor.getString(2);
myCourse.teacher = cursor.getString(4);
Log.i("my", "courseName" + cursor.getString(2));
myCourse.classroom = cursor.getString(cursor.getColumnIndex("course_classroom"));
myCourse.courseName = cursor.getString(cursor.getColumnIndex("course_name"));
myCourse.teacher = cursor.getString(cursor.getColumnIndex("course_teacher"));
Log.i("my", "courseName" + cursor.getString(cursor.getColumnIndex("course_name")));
}
cursor.close();
closeDB();
} catch (Exception e) {
myCourse.classroom = "上课地点";
Expand All @@ -165,108 +262,22 @@ public Course queryCourse(int week, int section) {
}
return myCourse;
}

/**
* 判断要更新的课程信息在更新之前是否为空
*
* @param week
* 准备更新的课程是第几周
* @param section
* 准备更新的课程是第几节
* @return 如果为空返回false,不为空返回true
*/
public boolean isCourseExist(int week, int section) {
boolean result = true;
try {
db = this.getWritableDatabase();
String sql = "select course_name from table_course where t_week="
+ week + " and t_section=" + section;
Cursor cursor = db.rawQuery(sql, null);
if (cursor.getCount() == 0) {
result = false;
}
Log.i("my", "count" + cursor.getCount());
closeDB();
} catch (Exception e) {
result = false;
}
return result;
}

/**
* 添加课程信息
*
* @param week
* 第几周
* @param section
* 第几节
* @param name
* 课程名字
* @param room
* 上课教室
* @param teacher
* 上课教师
* @return 成功则返回true
*/
public boolean addCourse(int week, int section, String courseName,
String classroom, String teacher) {
boolean result = false;
try {
db = this.getWritableDatabase();
String sql = String
.format("insert into table_course (t_week,t_section,course_name,course_classroom,course_teacher)"
+ " values (%d,%d,'%s','%s','%s')", week, section,
courseName, classroom, teacher);
db.execSQL(sql);
closeDB();
result = true;
} catch (Exception e) {
}
return result;

}

/**
* 修改课程信息
*
* @param week
* 第几周
* @param section
* 第几节
* @param name
* 课程名字
* @param room
* 上课教室
* @param teacher
* 上课教师
* @return 成功则返回true
*/
public boolean editCourse(int week, int section, String courseName,
String classroom, String teacher) {
boolean result = false;
try {
db = this.getWritableDatabase();
String sql = String
.format("update table_course set course_name='%s',course_classroom='%s',course_teacher='%s'"
+ " where t_week="
+ week
+ " and t_section="
+ section, courseName, classroom, teacher);
db.execSQL(sql);
closeDB();
result = true;
} catch (Exception e) {
}
return result;
}

/**
* 关闭打开的数据库
* 获取课程名称(用于编辑课程表时的自动提示)
* @return
*/
public void closeDB() {
if (db.isOpen()) {
db.close();
public List<String> queryCourseName() {
List<String> list = new ArrayList<String>();
db = this.getWritableDatabase();
String sql = "select * from table_course_name";
Cursor cursor = db.rawQuery(sql, null);
while(cursor.moveToNext()) {
list.add(cursor.getString(0));
}
cursor.close();
closeDB();
return list;
}

}

0 comments on commit c84e98d

Please sign in to comment.