前几天写了jsp调servlet层,今天写了dao层操作数据库。
首先新建数据库我是用的sql server数据库。建好数据库和表之后,根据数据库字段新建UserVo类,此类的属性跟表字段一一对应,
然后创建get set方法。
UserVo这个类在整个项目中占有很重要的地位,即可得到前端传来的参数,又可得到数据库返回的数据。
数据库跟UserVo类创建好之后,就创建连接数据库类,然后创建dao层,dao层使用的是接口类型的,为了实现多态,方便其他类调用。
接口是没有方法体的,dao层的方法体主要是在dao的实现层体现出来的。
,public static Connection getConnection()
{
Connection conn=null;
try {
//获得odbc驱动
/*Driver driver=DriverManager.getDriver("jdbc:odbc:ticket");
//注册驱动
DriverManager.registerDriver(driver);
//建立数据库连接
conn=DriverManager.getConnection("jdbc:odbc:ticket");*/
//加载驱动(把需要的驱动加入内存)
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");//sun.jdbc.odbc.JdbcOdbcDriver是sql server自带的桥接驱动,每个数据库都有自动的驱动和驱动包
//得到连接(指定连接到哪个数据源)数据源指向数据库从而连接数据库
conn=DriverManager.getConnection("jdbc:odbc:hpe");
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return conn;
连接数据库,因为不想下载sql server的驱动jar包了,所以就采用jdbc-odbc的桥接形式连接,
public static void colse(Connection conn)
{
if(conn!=null)
{
try {
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
连接数据源处理后一定要关闭连接。
然后写dao层和实现层,写实现层时候先建立数据库连接Connection ,然后创建sql语句。然后通过连接获取sql容器preparedstatement。
再然后给sql语句占位符赋值,然后再查数据库,如果数据库有返回值则把支取出来,赋给UserVo从而返回出去。
Connection conn=null;
List list=new ArrayList();
conn=Utilcom.getConnection();
String sql="select * from tableuser";
try {
PreparedStatement state= conn.prepareStatement(sql);
ResultSet rs=state.executeQuery();
while(rs.next()==true){
UserVo user=new UserVo();
String username=rs.getString(1);
String psd=rs.getString(2);
String sex=rs.getString(3);
user.setPassword(psd);
user.setSex(sex);
user.setUsername(username);
list.add(user);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
Utilcom.close(conn);
}
return list;
如果没返回指的话直接执行修改增加删除即可
public void addUser(UserVo user) {
// TODO Auto-generated method stub
Connection conn=null;
conn=Utilcom.getConnection();
String sql="insert into tableuser (username,password,sex) values (?,?,?)";
try {
PreparedStatement state=conn.prepareStatement(sql);
state.setString(1, user.getUsername());
state.setString(2, user.getPassword());
state.setString(3, user.getSex());
int rs=state.executeUpdate();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
Utilcom.close(conn);
}
}