第一次写博客,算是开始码农的旅程吧,把学的小项目简单书写一下,使用MyEclipse10 + sql sever2008 + Powerdesigner完成成绩管理系统,包括数据库的使用,增删改查之类的。
成绩管理系统开发流程
- PowerDesigner设计表格
- 使用SQL SERVER2008数据库建立表格
- 建立JAVA项目
使用PowerDesigner设计表格
PowerDesigner可以用来设计表格,关系图。
1.插入表格
2.编辑表格名称,列名称
3.设计关系
4.生成脚本文件(在生成过程中注意取消掉外键)
PS: 选项卡DataBase—Generate DataBase—-Option
5.将生成脚本文件.sql导入数据库中
使用SQL生成对应数据库
1.建立数据库
2.建立查询语句,导入生成的sql
使用Eclipse进行开发
开发环境建立
1.系统安装JDK,如果不安装Eclipse里面会带有一个低版本JDK
2.使用环境为Eclipse10
项目分层
1.完成该项目需要将业务与操作进行分层隔离,想一想跟MVC有点类似,用户界面层,系统处理层,数据库层
2.我们按照需求,建立package
(1)数据库操作的为DbUtil包,里面包含对数据库初始化连接控制,代码如下:
实现方法:获得连接,关闭语句,关闭连接,关闭结果集
package com.harbeu.exam.util;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
/**
* 数据库相关操作
*
* @author Administrator
*
*/
public class DbUtil {
/**
* 去的数据库连接
*
* @return
*/
public static Connection getConnection() {
Connection conn = null;
try {
String JDriver = "com.microsoft.sqlserver.jdbc.SQLServerDriver";// SQL数据库引擎
String dbUrl = "jdbc:sqlserver://localhost:1433;databaseName=StudentManagement";
String username = "a6697238";
String password = "monkeyws";
Class.forName(JDriver);
conn = DriverManager.getConnection(dbUrl, username, password);
} catch (SQLException e) {
e.printStackTrace();
}
catch (ClassNotFoundException e) {
e.printStackTrace();
}
return conn;
}
public static void close(PreparedStatement psmt){
if(psmt!=null){
try {
psmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
public static void close(Connection conn){
if(conn!=null){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
public static void close(ResultSet rs){
if(rs!=null){
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
public static void main(String[] args){
Connection conn = DbUtil.getConnection();
System.out.println(conn);
}
}
(2)第二个包为业务层,根据表格建立类,用于以后查询表格查询对象,读取结果
(3)第三个包为内层管理包,主要实现对数据库的操作,包括增删改查等,这里注意可以使用单例模式
操作数据库过程为
1.通过DbUtil取得连接Connection
2.使用Connection建立语句
3.设置语句参数
4.执行语句
5.从内向外,顺序关闭 结果集,语句,连接
package com.harbeu.exam.manager;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import com.harbeu.exam.model.Course;
import com.harbeu.exam.util.DbUtil;
/**
* 课程管理
* @author Administrator
*
*/
public class CourseManager {
private static CourseManager instance = new CourseManager();
private CourseManager(){}
public static CourseManager getInstance(){
return instance;
}
/**
* 添加课程
* @param courseName
*/
public void addCourse(String courseName){
String sql = "insert into t_course(course_name) values(?)";
Connection conn = null;
PreparedStatement psmt = null;
try{
conn = DbUtil.getConnection();
psmt = conn.prepareStatement(sql);
psmt.setString(1, courseName);
psmt.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}finally{
DbUtil.close(psmt);
DbUtil.close(conn);
}
}
/**
* 删除课程
* @param courseId
*/
public void deleteCourse(int courseId){
Connection conn = null;
PreparedStatement psmt = null;
/*String sql_1 = "declare @tempTable table(course_id int,course_name varchar(30))";
String sql_2 = "insert @tempTable select * from T_COURSE";
String sql_3 = "delete from @tempTable where course_id = ?";
String sql_4 = "TRUNCATE TABLE t_course";
String sql_5 = "insert into T_COURSE(COURSE_NAME) select COURSE_NAME from @tempTable"; */
StringBuffer sb = new StringBuffer();
String sql_1 = "declare @tempTable table(course_id int,course_name varchar(30));";
String sql_2 = "insert @tempTable select * from T_COURSE;";
String sql_3 = "delete from @tempTable where course_id = ?;";
String sql_4 = "TRUNCATE TABLE t_course;";
String sql_5 = "insert into T_COURSE(COURSE_NAME) select COURSE_NAME from @tempTable;";
sb.append(sql_1);
sb.append(sql_2);
sb.append(sql_3);
sb.append(sql_4);
sb.append(sql_5);
String str = new String(sb);
try {
conn = DbUtil.getConnection();
psmt = conn.prepareStatement(str);
psmt.setInt(1, courseId);
psmt.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}finally{
DbUtil.close(psmt);
DbUtil.close(conn);
}
}
/**
* 修改课程
* @param courseId
* @param courseName
*/
public void modifyCourse(int courseId,String courseName){
Connection conn = null;
PreparedStatement psmt = null;
String sql = "update T_COURSE set COURSE_NAME=? where COURSE_ID=?";
conn = DbUtil.getConnection();
try {
psmt = conn.prepareStatement(sql);
psmt.setString(1, courseName);
psmt.setInt(2, courseId);
psmt.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}finally{
DbUtil.close(psmt);
DbUtil.close(conn);
}
}
/**
* 查询课程
* @return
*/
public List<Course> findCourseList(){
List<Course> courseList = new ArrayList<Course>();
String sql = "select * from t_course order by course_id";
Connection conn = null;
PreparedStatement psmt = null;
ResultSet rs = null;
try{
conn = DbUtil.getConnection();
psmt = conn.prepareStatement(sql);
rs = psmt.executeQuery();
while(rs.next()){
int courseId = rs.getInt("course_id");
String courseName = rs.getString("course_name");
//记录每一个对象
Course course = new Course();
course.setCourseId(courseId);
course.setCourseName(courseName);
courseList.add(course);
}
} catch (SQLException e) {
e.printStackTrace();
}finally{
DbUtil.close(rs);
DbUtil.close(psmt);
DbUtil.close(conn);
}
return courseList;
}
}
(4)第四个包为界面显示控制包
整个结构如下: