JDBC的小Demo

    在java中对数据库实行操作,对不同的数据库需要导入不同的数据库驱动(提供SQL操作的jar包)。我在这里使用的数据库是SQL server 2008 。也在网上下载了相适配的jar包。

    下载了驱动并加入本地工程的依赖库后,就可以使用其中的API了。

不过既然是操作数据库,我就先建立好了一个数据库并新建表student_info。真实名字码掉。


现在eclipse中,对每一个student,都有相同的属性,故建立一个实体类student.java

public class Student {
	private String Sno = null;
	private String name = null;
	private String sex = null;
	private String birth = null;
	private String ClassNo = null;
	private String Entrance_date = null;
	private String Home_Addre = null;
	private String sdept = null;//系别
	private String postcode = null;
	public String getSno() {
		return Sno;
	}
	public void setSno(String sno) {
		Sno = sno;
	}
	··············省略一批get和set方法·················
	public String getPostcode() {
		return postcode;
	}
	public void setPostcode(String postcode) {
		this.postcode = postcode;
	}
	
}

既然想要操作数据库,那就要获取到数据库的连接。新建一个类DB_connectBean专门获取连接,先通过反射把驱动导入,连接对象Connection通过DriverManager的getConnection方法产生。需要指定数据库的URL,本例中是本地数据库——

public class DB_ConnectBean {
	
	private static Connection cnt = null;
	
	/**
	 * 静态块:程序运行最早执行的代码块
	 */
	static{
		try {
			//加载JDBC驱动
			Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
			//获得数据库的链接
			cnt = DriverManager.getConnection(
					"jdbc:sqlserver://localhost:1433;integratedSecurity=true;DatabaseName=Student_info");
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
	public static Connection getConnection(){
		return cnt;
	}
//	//测试用的
//	public static void main(String[] args) throws Exception {
//		connect();
//	}
	
}	

定义了静态方法返回对数据库的连接Connection对象,写一个类来实现对数据库的增删改查方法。需要调用到这个Bean——

public class Student_info_Dao {
	public void addStudent(){
		//add学生的操作
	}
	public void delStudent(){
		//delete学生的操作
	}
	public void upgradeStudent(){
		//更新学生的操作
	}
	public List<Student> queryStudent() throws Exception{
		//返回所有学生信息的操作。
		Connection cnt = DB_ConnectBean.getConnection();
		Statement stmt = cnt.createStatement();
		ResultSet rs = stmt.executeQuery("select * from Student_info");
		
		List<Student> students = new ArrayList<>();
		Student s = null;
		while(rs.next()){
			s = new Student();
			s.setName(rs.getString("Sname"));
			s.setSex(rs.getString("Sex"));
			s.setSno(rs.getString("Sno"));
			s.setBirth(rs.getString("Birth").substring(0, 11));
			s.setClassNo(rs.getString("Classno"));
			s.setEntrance_date(rs.getString("Entrance_date"));
			s.setHome_Addre(rs.getString("Home_addr"));
			s.setSdept(rs.getString("sdept"));
			s.setPostcode(rs.getString("postcode"));
//			System.out.println("姓名:???"+rs.getString("Sname"));
			students.add(s);
		}
		return students;
	}
	public Student GetStudent(){
		//查询特定学生的操作,可指定参数
		return null;
	}
}

可以看到在java中执行SQL语句是先通过connection对象创建一个statement对象,statement对象的execute方法可以填入想要执行的SQL语句,返回的结果保存在ResultSet对象中。

然后写一个主类来运行显示一下结果,看能否正确从数据库中select到想要的结果并输出在控制台:

public class Action {
	public static void main(String[] args) throws Exception {
		// TODO Auto-generated method stub
		Student_info_Dao dao = new Student_info_Dao();
		List<Student> students = dao.queryStudent();
		for (Student student : students) {
			System.out.println("学号:"+student.getSno()+"------姓名:"+student.getName()+"------性别:"+student.getSex()
					+"------生日:"+student.getBirth()+"------籍贯:"+student.getHome_Addre());
		}
	}
}

运行,在控制台下获取到了信息。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章