代码已经经过简单测试,如有发现问题请大家指出,我会及时改正
package sqlhelp;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.*;
import java.sql.*;
import javax.servlet.jsp.jstl.sql.Result;
import javax.servlet.jsp.jstl.sql.ResultSupport;
/** *//**
*
* 功能:
* ①:存储过程有参数时,Insert/Update処理,返回成功或者失败的FLG(FLG>0时,表示成功);
* ②:存储过程没有参数时,Insert/Update処理,返回成功或者失败的FLG(FLG>0时,表示成功);
* ③:存储过程有参数时,Select処理,返回一个ArrayList;
* ④:存储过程没有参数时,Select処理,返回一个ArrayList;
* ⑤:存储过程有参数时,Select処理,返回一个SortedMap[];
* ⑥:存储过程没有参数时,Select処理,返回一个SortedMap[];
* ⑦:存储过程有参数时,Select処理,返回结果集中的第一行的name所指定的列的值,当结果集为空时,返回null;
* ⑧:存储过程没有参数时,Select処理,返回结果集中的第一行的name所指定的列的值,当结果集为空时,返回null;
* ⑨:存储过程有参数时,Select処理,返回结果集中的第一行的index所指定的列的值,当结果集为空时,返回null;
* ⑩:存储过程没有参数时,Select処理,返回结果集中的第一行的index所指定的列的值,当结果集为空时,返回null;
*
*
*
*/
public class SQLHelper
{
/** *//**
* @author libiao
* @return Connection
* 功能:获得Connection
*/
private static Connection getConnect()
{
try
{
// Class.forName("net.sourceforge.jtds.jdbc.Driver");
// return DriverManager.getConnection("jdbc:jtds:sqlserver://local:1433;DatabaseName=biao;", "sa","");
return DriverManager.getConnection("proxool.SQL");
} catch (Exception e)
{
System.out.println("SQLHepler-getConnect:" + e.getMessage());
return null;
}
}
/** *//**
*
* ①
* 功能:存储过程有参数时,Insert/Update処理,返回成功或者失败的FLG(FLG>0时,表示成功);
* @author libiao
* @param cmdtext SQL语句/存储过程名
* @param parms 存储过程需要的参数(参数是以数组的形式)
* @return 更新成功或者失败的FLG
* @throws Exception
*
*/
public static int ExecuteNonQuery(String cmdtext, String[] parms) throws Exception
{
PreparedStatement pstmt = null;
Connection conn = null;
try
{
conn = getConnect();
pstmt = conn.prepareStatement(cmdtext);
prepareCommand(pstmt, parms);
return pstmt.executeUpdate();
} catch (Exception e)
{
throw new Exception("SQLHepler-ExecuteNonQuery-parms:" + e.getMessage());
} finally
{
try
{
if (pstmt != null)
pstmt.close();
if (conn != null)
conn.close();
} catch (Exception e)
{
throw new Exception("SQLHepler-ExecuteNonQuery-parms-close:" + e.getMessage());
}
}
}
/** *//**
*
* ②
* 功能:存储过程没有参数时,Insert/Update処理,返回成功或者失败的FLG(FLG>0时,表示成功);
* @author libiao
* @param cmdtext SQL语句/存储过程名
* @return 更新成功或者失败的FLG
* @throws Exception
*
*/
public static int ExecuteNonQuery(String cmdtext) throws Exception
{
PreparedStatement pstmt = null;
Connection conn = null;
try
{
conn = getConnect();
pstmt = conn.prepareStatement(cmdtext);
return pstmt.executeUpdate();
} catch (Exception e)
{
throw new Exception("SQLHepler-ExecuteNonQuery:" + e.getMessage());
} finally
{
try
{
if (pstmt != null)
pstmt.close();
if (conn != null)
conn.close();
} catch (Exception e)
{
throw new Exception("SQLHepler-ExecuteNonQuery-close:" + e.getMessage());
}
}
}
/** *//**
*
* ③
* 功能:存储过程有参数时,Select処理,返回一个ArrayList;
* @author libiao
* @param cmdtext SQL语句/存储过程名
* @param parms 存储过程需要的参数(参数是以数组的形式)
* @return 结果集(ArrayList)
* @throws Exception
*/
public static ArrayList ExecuteReaderList(String cmdtext, String[] parms) throws Exception
{
PreparedStatement pstmt = null;
Connection conn = null;
ResultSet rs = null;
try
{
conn = getConnect();
pstmt = conn.prepareStatement(cmdtext);
prepareCommand(pstmt, parms);
rs = pstmt.executeQuery();
ArrayList<Object[]> al = new ArrayList<Object[]>();
ResultSetMetaData rsmd = rs.getMetaData();
int column = rsmd.getColumnCount();
while (rs.next())
{
Object[] ob = new Object[column];
for (int i = 1; i <= column; i++)
{
ob[i - 1] = rs.getObject(i);
}
al.add(ob);
}
return al;
} catch (Exception e)
{
throw new Exception("SQLHepler-ExecuteReaderList-parms:" + e.getMessage());
} finally
{
try
{
if (rs != null)
rs.close();
if (pstmt != null)
pstmt.close();
if (conn != null)
conn.close();
} catch (Exception e)
{
throw new Exception("SQLHepler-ExecuteReaderList-parms-close:" + e.getMessage());
}
}
}
/** *//**
*
* ④
* 機能:存储过程没有参数时,Select処理,返回一个ArrayList;
* @author libiao
* @param cmdtext SQL语句/存储过程名
* @return 结果集(ArrayList)
* @throws Exception
*/
public static ArrayList ExecuteReaderList(String cmdtext) throws Exception
{
PreparedStatement pstmt = null;
Connection conn = null;
ResultSet rs = null;
try
{
conn = getConnect();
pstmt = conn.prepareStatement(cmdtext);
rs = pstmt.executeQuery();
ArrayList<Object[]> al = new ArrayList<Object[]>();
ResultSetMetaData rsmd = rs.getMetaData();
int column = rsmd.getColumnCount();
while (rs.next())
{
Object[] ob = new Object[column];
for (int i = 1; i <= column; i++)
{
ob[i - 1] = rs.getObject(i);
}
al.add(ob);
}
return al;
} catch (Exception e)
{
throw new Exception("SQLHepler-ExecuteReaderList:" + e.getMessage());
} finally
{
try
{
if (rs != null)
rs.close();
if (pstmt != null)
pstmt.close();
if (conn != null)
conn.close();
} catch (Exception e)
{
throw new Exception("SQLHepler-ExecuteReaderList-close:" + e.getMessage());
}
}
}
/** *//**
*
* ⑤
* 機能:存储过程有参数时,Select処理,返回一个SortedMap[];
* @author libiao
* @param cmdtext SQL语句/存储过程名
* @param parms 存储过程需要的参数(参数是以数组的形式)
* @return 结果集(SortedMap[])
* @throws Exception
*/
public static SortedMap[] ExecuteReaderMap(String cmdtext, String[] parms) throws Exception
{
PreparedStatement pstmt = null;
Connection conn = null;
ResultSet rs = null;
Result result = null;
SortedMap[] sortedMap = null;
try
{
conn = getConnect();
pstmt = conn.prepareStatement(cmdtext);
prepareCommand(pstmt, parms);
rs = pstmt.executeQuery();
result = ResultSupport.toResult(rs);
sortedMap = result.getRows();
return sortedMap;
} catch (Exception e)
{
throw new Exception("SQLHepler-ExecuteReaderMap-parms:" + e.getMessage());
} finally
{
try
{
if(rs != null)
rs.close();
if (pstmt != null)
pstmt.close();
if (conn != null)
conn.close();
} catch (Exception e)
{
throw new Exception("SQLHepler-ExecuteReaderMap-parms-close:" + e.getMessage());
}
}
}
/** *//**
*
* ⑥
* 機能:存储过程没有参数时,Select処理,返回一个结SortedMap[];
* @author libiao
* @param cmdtext SQL语句/存储过程名
* @return 结果集(SortedMap[])
* @throws Exception
*/
public static SortedMap[] ExecuteReaderMap(String cmdtext) throws Exception
{
PreparedStatement pstmt = null;
Connection conn = null;
ResultSet rs = null;
Result result = null;
SortedMap[] sortedMap = null;
try
{
conn = getConnect();
pstmt = conn.prepareStatement(cmdtext);
rs = pstmt.executeQuery();
result = ResultSupport.toResult(rs);
sortedMap = result.getRows();
return sortedMap;
} catch (Exception e)
{
throw new Exception("SQLHepler-ExecuteReaderMap:" + e.getMessage());
} finally
{
try
{
if(rs != null)
rs.close();
if (pstmt != null)
pstmt.close();
if (conn != null)
conn.close();
} catch (Exception e)
{
throw new Exception("SQLHepler-ExecuteReaderMap-close:" + e.getMessage());
}
}
}
/** *//**
*
* ⑦
* 機能:存储过程有参数时,Select処理,返回结果集中的第一行的name所指定的列的值,当结果集为空时,返回null
* @author libiao
* @param cmdtext SQL语句/存储过程名
* @param name 需要取る列名
* @param parms 存储过程需要的参数(参数是以数组的形式)
* @return 结果集中的第一行的name所指定的列的值,当结果集为空时,返回null
* @throws Exception
*/
public static Object ExecuteScalar(String cmdtext, String name,String[] parms) throws Exception
{
PreparedStatement pstmt = null;
Connection conn = null;
ResultSet rs = null;
try
{
conn = getConnect();
pstmt = conn.prepareStatement(cmdtext);
prepareCommand(pstmt, parms);
rs = pstmt.executeQuery();
if (rs.next())
{
return rs.getObject(name);
} else
{
return null;
}
} catch (Exception e)
{
throw new Exception("SQLHepler-ExecuteScalar-name-parms:" + e.getMessage());
} finally
{
try
{
if (rs != null)
rs.close();
if (pstmt != null)
pstmt.close();
if (conn != null)
conn.close();
} catch (Exception e)
{
throw new Exception("SQLHepler-ExecuteScalar-name-parms-close:" + e.getMessage());
}
}
}
/** *//**
*
* ⑧
* 機能:存储过程没有参数时,Select処理,返回结果集中的第一行的name所指定的列的值,当结果集为空时,返回null
* @author libiao
* @param cmdtext SQL语句/存储过程名
* @param name 需要取る列名
* @return 结果集中的第一行的name所指定的列的值,当结果集为空时,返回null
* @throws Exception
*/
public static Object ExecuteScalar(String cmdtext, String name) throws Exception
{
PreparedStatement pstmt = null;
Connection conn = null;
ResultSet rs = null;
try
{
conn = getConnect();
pstmt = conn.prepareStatement(cmdtext);
rs = pstmt.executeQuery();
if (rs.next())
{
return rs.getObject(name);
} else
{
return null;
}
} catch (Exception e)
{
throw new Exception("SQLHepler-ExecuteScalar-name:" + e.getMessage());
} finally
{
try
{
if (rs != null)
rs.close();
if (pstmt != null)
pstmt.close();
if (conn != null)
conn.close();
} catch (Exception e)
{
throw new Exception("SQLHepler-ExecuteScalar-name-close:" + e.getMessage());
}
}
}
/** *//**
*
* ⑨
* 機能:存储过程有参数时,Select処理,返回结果集中的第一行的index所指定的列的值,当结果集为空时,返回null
* @author libiao
* @param cmdtext SQL语句/存储过程名
* @param index 需要取る列番号
* @param parms 存储过程需要的参数(参数是以数组的形式)
* @return 结果集中的第一行的index所指定的列的值,当结果集为空时,返回null
* @throws Exception
*/
public static Object ExecuteScalar(String cmdtext, int index, String[] parms) throws Exception
{
PreparedStatement pstmt = null;
Connection conn = null;
ResultSet rs = null;
try
{
conn = getConnect();
pstmt = conn.prepareStatement(cmdtext);
prepareCommand(pstmt, parms);
rs = pstmt.executeQuery();
if (rs.next())
{
return rs.getObject(index);
} else
{
return null;
}
} catch (Exception e)
{
throw new Exception("SQLHepler-ExecuteScalar-index-parms:" + e.getMessage());
} finally
{
try
{
if (rs != null)
rs.close();
if (pstmt != null)
pstmt.close();
if (conn != null)
conn.close();
} catch (Exception e)
{
throw new Exception("SQLHepler-ExecuteScalar-index-parms-close:" + e.getMessage());
}
}
}
/** *//**
*
* ⑩
* 機能:存储过程没有参数时,Select処理,返回结果集中的第一行的index所指定的列的值,当结果集为空时,返回null
* @author libiao
* @param cmdtext SQL语句/存储过程名
* @param index 需要取る列番号
* @return 结果集中的第一行的index所指定的列的值,当结果集为空时,返回null
* @throws Exception
*/
public static Object ExecuteScalar(String cmdtext, int index) throws Exception
{
PreparedStatement pstmt = null;
Connection conn = null;
ResultSet rs = null;
try
{
conn = getConnect();
pstmt = conn.prepareStatement(cmdtext);
rs = pstmt.executeQuery();
if (rs.next())
{
return rs.getObject(index);
} else
{
return null;
}
} catch (Exception e)
{
throw new Exception("SQLHepler-ExecuteScalar-index:" + e.getMessage());
} finally
{
try
{
if (rs != null)
rs.close();
if (pstmt != null)
pstmt.close();
if (conn != null)
conn.close();
} catch (Exception e)
{
throw new Exception("SQLHepler-ExecuteScalar-index-close:" + e.getMessage());
}
}
}
/** *//**
*
* 機能:分割参数数组,并且插入到PreparedStatement对象中
* @author libiao
* @param pstmt PreparedStatement対象
* @param parms 存储过程需要的参数(参数是以数组的形式)
* @return
* @throws Exception
*/
private static void prepareCommand(PreparedStatement pstmt, String[] parms) throws Exception
{
try
{
if (parms != null)
{
for (int i = 0; i < parms.length; i++)
{
/**//*
try {
pstmt.setString(i + 1, parms[i]);
} catch (Exception errs) {
System.out.print("SQLHelper-PrepareCommand ErrString:"+ errs);
}*/
try
{
pstmt.setDate(i + 1, java.sql.Date.valueOf(parms[i]));
} catch (Exception e)
{
try
{
pstmt.setDouble(i + 1, Double.parseDouble(parms[i]));
} catch (Exception e1)
{
try
{
pstmt.setInt(i + 1, Integer.parseInt(parms[i]));
} catch (Exception e2)
{
try
{
pstmt.setString(i + 1, parms[i]);
} catch (Exception errs)
{
System.out.print("SQLHelper-PrepareCommand ErrString:"+ errs);
}
}
}
}
}
}
} catch (Exception e)
{
System.out.print("SQLHelper-PrepareCommand Error:" + e);
}
}
}