,此次升级为了解决链接数据库时每次都要传用户名和密码的烦恼,添加了…obj表示数组和变量。(JDK1.5增加功能)
package com.sun.dao;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Map;
public class BaseDao {
final String driver="com.microsoft.sqlserver.jdbc.SQLServerDriver";
private String ip="localhost";
private String databaseName;
private String user="sa";
private String password="123456";
/**
* 用于构建连接数据库
* @param ip
* 数据库地址
* @param databaseName
* 数据库的库名
* @param user
* 数据库登陆用户名
* @param password
* 数据库密码
*/
public BaseDao(String ip, String databaseName, String user, String password) {
super();
this.ip = ip;
this.databaseName = databaseName;
this.user = user;
this.password = password;
}
/**
* 这个构造用于连接本机的数据库
* @param databaseName :数据库名
*/
public BaseDao(String databaseName) {
super();
this.databaseName = databaseName;
}
/**
* 用于创建连接对象
* @return
* Connection
* @throws SQLException
*/
private Connection createConnection() throws SQLException{
return DriverManager.getConnection("jdbc:sqlserver://"+ip+":1433;database="+databaseName,user,password);
}
/**
* 此方法只能用于查询
* @param sql
* :查询sql语句
* @param obj
* :SQL语句给值
* @return :list:
* 在list 里面装的MAP:在map中放的是一行表数据
*/
public ArrayList<Map<String, Object>> excuteQuery(String sql,Object ...obj)
{
Connection con=null;
PreparedStatement ps=null;
ResultSet rs=null;
try{
Class.forName(driver);
con=createConnection();
ps=con.prepareStatement(sql);
if(obj!=null&& obj.length>0)
{
for (int i = 0; i < obj.length; i++) {
ps.setObject(i+1, obj[i]);
}
}
rs=ps.executeQuery();
ArrayList<Map<String, Object>> list=ResultSetToList.resultSetToList(rs);
if(list.size()>0)
{
return list;
}else{
return null;
}
}catch(Exception e){
e.printStackTrace();
return null;
}finally{
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
try {
ps.close();
} catch (SQLException e) {
e.printStackTrace();
}
try {
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
/**
* 此方法只能执行增删改
* @param sql
* :查询sql语句
* @param obj
* :SQL语句给值
* @return
* 真假:
*/
public boolean excuteUpdate(String sql,Object ...obj)
{
Connection con=null;
PreparedStatement ps=null;
try{
Class.forName(driver);
con=createConnection();
ps=con.prepareStatement(sql);
if(obj!=null&& obj.length>0)
{
for (int i = 0; i < obj.length; i++) {
ps.setObject(i+1, obj[i]);
}
}
int a=ps.executeUpdate();
if(a>0)
{
return true;
}else{
return false;
}
}catch(Exception e){
e.printStackTrace();
return false;
}finally{
try {
ps.close();
} catch (SQLException e) {
e.printStackTrace();
}
try {
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
package com.sun.dao;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
public class ResultSetToList {
public static ArrayList<Map<String, Object>> resultSetToList(ResultSet rs)
throws SQLException
{
ArrayList<Map<String, Object>> list=new ArrayList<Map<String, Object>>();
if(rs!=null)
{
while(rs.next())
{
// System.out.println();
Map<String, Object>map=new HashMap<String, Object>();
for (int i = 0; i < rs.getMetaData().getColumnCount(); i++) {
// System.out.print(rs.getMetaData().getColumnName(i+1)+":"+rs.getObject(i+1));
// System.out.println();
map.put(rs.getMetaData().getColumnName(i+1), rs.getObject(i+1));
}
list.add(map);
}
return list;
}else{
return null;
}
}
}