package com.mingrisoft.dao;
import java.sql.Connection; //表示连接到某个数据库的连接
import java.sql.DriverManager; //用来获取数据库连接
import java.sql.PreparedStatement; //用来执行SQL语句
import java.sql.ResultSet; //封装查询结果集
import java.sql.SQLException; //异常处理类
public class DB {
private Connection con; //声明一个Connection对象
private PreparedStatement pstm; //声明一个PreparedStatement对象
private String user="sa"; //登录数据库的默认用户名
private String password="1"; //登录数据库的密码
private String className="com.microsoft.sqlserver.jdbc.SQLServerDriver"; //数据库驱动类路径
private String url="jdbc:sqlserver://localhost:1433;DatabaseName=db_CityInfo"; //数据库URL
public DB(){ //DB类的构造方法
try{ //必须使用try-catch语句捕获加载数据库驱动时可能发生的异常
Class.forName(className); //加载数据库驱动
}catch(ClassNotFoundException e){ //捕获ClassNotFoundException异常
System.out.println("加载数据库驱动失败!");
e.printStackTrace(); //输出异常信息
}
}
/**创建数据库连接*/
public Connection getCon(){
try {
con=DriverManager.getConnection(url,user,password); //建立连接,连接到由属性url指定的数据库URL,
//并指定登录数据库的用户名和密码
} catch (SQLException e) {
System.out.println("创建数据库连接失败!");
con=null;
e.printStackTrace();
}
return con;
}
public void doPstm(String sql,Object[] params){
if(sql!=null&&!sql.equals("")){
if(params==null)params=new Object[0];
con = getCon(); //调用getCon()方法获取数据库连接
if(con!=null){
try{
pstm=con.prepareStatement(sql,ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY);
for(int i=0;i<params.length;i++){
pstm.setObject(i+1,params[i]);
}
pstm.execute(); //执行SQL语句
}catch(SQLException e){
System.out.println("doPstm()方法出错!");
e.printStackTrace(); //输出错误信息
}
}
}
}
public ResultSet getRs() throws SQLException{
return pstm.getResultSet(); //调用PreparedStatement类对象的getResultSet()方法返回ResultSet对象
}
public int getCount() throws SQLException{
return pstm.getUpdateCount(); //调用PreparedStatement类对象的getResultSet()方法返回影响的记录数
}
public void closed(){
try{
if(pstm!=null)
pstm.close();
}catch(SQLException e){
System.out.println("关闭pstm对象失败!");
e.printStackTrace();
}
try{
if(con!=null){
con.close();
}
}catch(SQLException e){
System.out.println("关闭con对象失败!");
e.printStackTrace();
}
}
}