在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());
}
}
}
运行,在控制台下获取到了信息。