创建一个数据库连接的基本步骤:
结构图:
驱动是一个jar包,加入到WebRoot-WEB-INF-lib中。这样才能链接SQLServer。
第二步:创建一个数据库User的实体类,负责创建表的字段成员。
public class User{
private int id;
private String name;
private String password;
public int getId(){
return id;
}
public void getId(int id){
this.id=id;
}
public String getName(){
return name;
}
public void setName(String name){
this.name=name;
}
public String getPassword(){
return password;
}
public void setPassword(String password){
this.password=password;
}
}
第三步:创建BaseDao数据库连接类,此类负责完成数据库的连接。
public class DaseDao{
public static Connection getConnection(){
Connection conn=null;
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
String url="jdbc:sqlserver://127.0.0.1:1433;database=yun4";
String name="sa";
String password="123456";
conn = DriveManager.getConnection(url,name,password);
}
public void colseAll(Connection conn,Statement stmt,ResultSet rs){
if(rs!=null){
re.close;
}
if(stmt!=null){
stmt.close();
}
if(conn!=null){
conn.close();
}
}
}
第四步:创建一个具体数据库User的操作接口:负责创建增删改查的接口方法。
这些方法需要之后的实现类UserDaoImpl来具体实现这些方法。
public interface UserDao{
public int add(User user);
public int delete(int id);
public int update(User user);
public int findById(int id);
public int findAll(User user);
}
第五步:创建实现UserDao的实现类UserDaoImpl,负责具体操作数据库。
实现接口中的具体方法,同时继承了BaseDao的方法。
public class UserDaoImpl extends BaseDao implements UserDao{
Connection conn=null;
Statement stmt=null;
perpareStatement pstmt=null;
ResultSet rs=null;
public int add(User user){
int i=0;
conn=this.getConnection;
String sql="insert into users values(?,?)";
pstmt=conn.perpareStatement(sql);
pstmt.setString(1,user.getName);
pstmt.setString(2,user.getPassword);
i=pstmt.executeUpdate();
finally{
this.closeAll(conn,pstmt,rs);
}
return i;
}
public int delete(int id){
int i=0;
conn=this.getConnection;
String sql="delete from Users where id=?";
pstmt=conn.prepareStatement(sql);
pstmt.setString(1,user.getId);
i=executeUpdate();
finally{
this.closeAll(conn,pstmt,rs);
}
return i;
}
public int Update(User user){
int i=0;
conn.getConnection();
String sql="update Users set name=? where id=?";
pstmt=conn.prepareStatement(sql);
pstmt.setString(1,user.getName);
pstmt.setString(2,user.getId);
i=pstmt.executeUpdate();
finally{
this.closeAll(conn,pstmt,rs);
}
public int findAll(){
conn.getConnection();
String="select * from Users";
stmt=conn.createStatement();
rs=stmt.executeQuery(sql);
while(rs.next){
int password=rs.getInt("password");
String name=rs.getString("name");
int id=rs.getInt("id");
system.out.println(id+" "+name+" "+password);
}
public int findById(int id){
conn.getConnection;
String sql="select * from Users where id=?";
pstmt=conn.prepareStatement(sql);
pstmt.setString(1,user.getId());
rs.pstmt.executeQuery();
while(rs.next()){
int password=rs.getInt("password");
String name=rs.getString("name");
int id=rs.getInt("id");
system.out.println(id+" "+name+" "+password);
}
}
}
}
}
Statement和preparestatement的用法区别:
Statement:
String sql="insert into User values(1,'admin','123456')";
Statement stmt=conn.createStatement();
int i=stmt.executeUptate(sql);
PrepareStatement:
String sql="insert into User values(?,?,?)";
PrepareStatement pstmt=conn.prepareStatement();
pstmt.setString(1,"1");
pstmt.setString(2,"admin");
pstmt.setString(3,"123456");
int i=pstmt.executeUpdate();