[关闭]
@duyao 2015-05-03T12:56:51.000000Z 字数 5065 阅读 1259

sqlhelper

sql codeTool


对数据库操作的工具类

  1. package com.dy.tools;
  2. import java.sql.*;
  3. import java.util.ArrayList;
  4. public class SqlTool {
  5. // 定义变量
  6. private static Connection ct = null;
  7. // 大多数情况下用preparedstatement替代statement
  8. private static PreparedStatement ps = null;
  9. private static ResultSet rs = null;
  10. // 连接数据库的参数
  11. private static String url = "jdbc:sqlserver://localhost:1433;DatabaseName=mylab";
  12. private static String username = "sa";
  13. private static String driver = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
  14. private static String passwd = "sa";
  15. private static CallableStatement cs = null;
  16. public static CallableStatement getCs() {
  17. return cs;
  18. }
  19. // private static Properties pp = null;
  20. // private static InputStream fis = null;
  21. // 加载驱动,只需要一次,用静态代码块
  22. static {
  23. try {
  24. Class.forName(driver);
  25. } catch (ClassNotFoundException e1) {
  26. // TODO Auto-generated catch block
  27. e1.printStackTrace();
  28. }
  29. // try
  30. // {
  31. // //从dbinfo.properties
  32. // pp = new Properties();
  33. // fis=SqlHelper.class.getClassLoader().getResourceAsStream("mysql.properties");
  34. // //fis = new FileInputStream();
  35. // pp.load(fis);
  36. // url = pp.getProperty("url");
  37. // username = pp.getProperty("username");
  38. // driver = pp.getProperty("driver");
  39. // passwd = pp.getProperty("passwd");
  40. // Class.forName(driver);
  41. //
  42. // }
  43. // catch (Exception e)
  44. // {
  45. // e.printStackTrace();
  46. // }
  47. // finally
  48. // {
  49. // try
  50. // { fis.close();}
  51. // catch(IOException e) {e.printStackTrace();}
  52. // fis = null;//垃圾回收站上收拾
  53. // }
  54. }
  55. // 得到连接
  56. public static Connection getConnection() {
  57. try {
  58. ct = DriverManager.getConnection(url, username, passwd);
  59. } catch (Exception e) {
  60. e.printStackTrace();
  61. }
  62. return ct;
  63. }
  64. // *************callPro1存储过程函数1*************
  65. public static CallableStatement callPro1(String sql, String[] parameters) {
  66. try {
  67. ct = getConnection();
  68. cs = ct.prepareCall(sql);
  69. if (parameters != null) {
  70. for (int i = 0; i < parameters.length; i++) {
  71. cs.setObject(i + 1, parameters[i]);
  72. }
  73. }
  74. cs.execute();
  75. } catch (Exception e) {
  76. e.printStackTrace();
  77. throw new RuntimeException(e.getMessage());
  78. } finally {
  79. close(rs, cs, ct);
  80. }
  81. return cs;
  82. }
  83. // *******************callpro2存储过程2************************
  84. public static CallableStatement callPro2(String sql, String[] inparameters,
  85. Integer[] outparameters) {
  86. try {
  87. ct = getConnection();
  88. cs = ct.prepareCall(sql);
  89. if (inparameters != null) {
  90. for (int i = 0; i < inparameters.length; i++) {
  91. cs.setObject(i + 1, inparameters[i]);
  92. }
  93. }
  94. // cs.registerOutparameter(2,oracle.jdbc.OracleTypes.CURSOR);
  95. if (outparameters != null) {
  96. for (int i = 0; i < outparameters.length; i++) {
  97. cs.registerOutParameter(inparameters.length + 1 + i,
  98. outparameters[i]);
  99. }
  100. }
  101. cs.execute();
  102. } catch (Exception e) {
  103. e.printStackTrace();
  104. throw new RuntimeException(e.getMessage());
  105. } finally {
  106. }
  107. return cs;
  108. }
  109. public static ResultSet executeQuery(String sql, String[] parameters) {
  110. try {
  111. ct = getConnection();
  112. ps = ct.prepareStatement(sql);
  113. if (parameters != null) {
  114. for (int i = 0; i < parameters.length; i++) {
  115. ps.setString(i + 1, parameters[i]);
  116. }
  117. }
  118. rs = ps.executeQuery();
  119. } catch (Exception e) {
  120. e.printStackTrace();
  121. throw new RuntimeException(e.getMessage());
  122. } finally {
  123. }
  124. return rs;
  125. }
  126. //查询的增强版,这里可以及时关闭resultset,返回arraylist
  127. public static ArrayList executeQuery1(String sql, String[] parameters) {
  128. try {
  129. ct = getConnection();
  130. ps = ct.prepareStatement(sql);
  131. if (parameters != null) {
  132. for (int i = 0; i < parameters.length; i++) {
  133. ps.setString(i + 1, parameters[i]);
  134. }
  135. }
  136. rs = ps.executeQuery();
  137. ResultSetMetaData resultSetMetaData=rs.getMetaData();
  138. //得到列数,下面的循环将每一行的数据作为对象放入list中
  139. int column=resultSetMetaData.getColumnCount();
  140. ArrayList arrayList =new ArrayList();
  141. while(rs.next()){
  142. //rs是一行,objects存放每列的对象
  143. Object [] objects=new Object[column];
  144. //对象个数是列数
  145. for(int i=1;i<=column;i++){
  146. objects[i-1]=rs.getObject(i);
  147. }
  148. //得到全部列的对象,放入arraylist中
  149. arrayList.add(objects);
  150. }
  151. return arrayList;
  152. } catch (Exception e) {
  153. e.printStackTrace();
  154. throw new RuntimeException(e.getMessage());
  155. } finally {
  156. close(rs, ps, ct);
  157. }
  158. }
  159. public static Connection getCt() {
  160. return ct;
  161. }
  162. public static PreparedStatement getPs() {
  163. return ps;
  164. }
  165. public static ResultSet getRs() {
  166. return rs;
  167. }
  168. //执行多条语句
  169. public static void executeUpdate2(String[] sql, String[][] parameters) {
  170. try {
  171. ct = getConnection();
  172. ct.setAutoCommit(false);
  173. for (int i = 0; i < sql.length; i++) {
  174. if (null != parameters[i]) {
  175. ps = ct.prepareStatement(sql[i]);
  176. for (int j = 0; j < parameters[i].length; j++) {
  177. ps.setString(j + 1, parameters[i][j]);
  178. }
  179. ps.executeUpdate();
  180. }
  181. }
  182. ct.commit();
  183. } catch (Exception e) {
  184. e.printStackTrace();
  185. try {
  186. ct.rollback();
  187. } catch (SQLException e1) {
  188. e1.printStackTrace();
  189. }
  190. throw new RuntimeException(e.getMessage());
  191. } finally {
  192. close(rs, ps, ct);
  193. }
  194. }
  195. // 先写一个update、delete、insert
  196. // sql格式:update 表名 set 字段名 =?where 字段=?
  197. // parameter神应该是(”abc“,23)
  198. public static boolean executeUpdate(String sql, String[] parameters) {
  199. boolean b=true;
  200. try {
  201. ct = getConnection();
  202. ps = ct.prepareStatement(sql);
  203. if (parameters != null) {
  204. for (int i = 0; i < parameters.length; i++) {
  205. ps.setString(i + 1, parameters[i]);
  206. }
  207. }
  208. ps.executeUpdate();
  209. } catch (Exception e) {
  210. b=false;
  211. e.printStackTrace();// 开发阶段
  212. // 抛出异常
  213. // 可以处理,也可以不处理
  214. throw new RuntimeException(e.getMessage());
  215. } finally {
  216. close(rs, ps, ct);
  217. }
  218. return b;
  219. }
  220. public static void close(ResultSet rs, Statement ps, Connection ct) {
  221. // 关闭资源(先开后关)
  222. if (rs != null) {
  223. try {
  224. rs.close();
  225. } catch (SQLException e) {
  226. e.printStackTrace();
  227. }
  228. rs = null;
  229. }
  230. if (ps != null) {
  231. try {
  232. ps.close();
  233. } catch (SQLException e) {
  234. e.printStackTrace();
  235. }
  236. ps = null;
  237. }
  238. if (null != ct) {
  239. try {
  240. ct.close();
  241. } catch (SQLException e) {
  242. e.printStackTrace();
  243. }
  244. ct = null;
  245. }
  246. }
  247. }

通过executeQuery1查询到的数据返回的是ArrayList,这里用get方法得到的是Object [],因此先转Object [],再转成所需要的int

  1. ArrayList aList=SqlHelper.executeQuery1(sql, parameters);
  2. //先转成Object[]
  3. Object[] objects=(Object[]) aList.get(0);
  4. //再转成String
  5. String nameString=(String) objects[0];
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注