JdbcUtils.java 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232
  1. package qh.lqg.utils.db;
  2. import java.sql.Connection;
  3. import java.sql.DriverManager;
  4. import java.sql.PreparedStatement;
  5. import java.sql.ResultSet;
  6. import java.sql.ResultSetMetaData;
  7. import java.sql.SQLException;
  8. import java.util.ArrayList;
  9. import java.util.HashMap;
  10. import java.util.List;
  11. import java.util.Map;
  12. import org.slf4j.Logger;
  13. import org.slf4j.LoggerFactory;
  14. /**
  15. * @author lqg 数据库操作类,提供数据增,删,改,查基本操作。
  16. */
  17. public class JdbcUtils {
  18. // 数据库用户名
  19. private String USERNAME = "lyq";
  20. // 数据库密码
  21. private String PASSWORD = "123456";
  22. // 驱动信息
  23. private String DRIVER = "com.mysql.jdbc.Driver";
  24. // 数据库地址
  25. // private static final String URL = "jdbc:mysql://172.16.90.108:3306/";
  26. private String URL = "jdbc:mysql://localhost:3306/";
  27. private Connection connection;
  28. private PreparedStatement pstmt;
  29. private ResultSet resultSet;
  30. Logger logger = LoggerFactory.getLogger(JdbcUtils.class);
  31. // 连接数据库
  32. public JdbcUtils() {
  33. // TODO Auto-generated constructor stub
  34. try {
  35. Class.forName(DRIVER);
  36. logger.info("加载驱动成功!");
  37. } catch (Exception e) {
  38. }
  39. }
  40. /**
  41. * 这个函数主要是打印连接数据
  42. *
  43. */
  44. public void getConnStr() {
  45. String str = "连接字符串为:\n" + "登录名:" + this.USERNAME + "\n密码:"
  46. + this.PASSWORD + "\n数据库地址:" + this.URL;
  47. logger.info(str);
  48. }
  49. /**
  50. * 设置登录数据库账号,密码,连接什么数据库.set方法
  51. *
  52. * @param _userName
  53. * Mysql账号:root
  54. * @param _password
  55. * 密码:123456
  56. * @param _url
  57. * 登录数据库名:jdbc:mysql://localhost:3306/
  58. */
  59. public void setConnstr(String _userName, String _password, String _url) {
  60. this.USERNAME = _userName;
  61. this.PASSWORD = _password;
  62. this.URL = _url;
  63. }
  64. /**
  65. * 获得数据库的连接
  66. *
  67. * @return
  68. */
  69. public Connection getConnection(String schemaName) {
  70. String newURL = this.URL + schemaName;
  71. logger.info(newURL);
  72. try {
  73. connection = DriverManager
  74. .getConnection(newURL, USERNAME, PASSWORD);
  75. } catch (SQLException e) {
  76. // TODO Auto-generated catch block
  77. e.printStackTrace();
  78. }
  79. return connection;
  80. }
  81. public Connection getConnection() {
  82. String newURL = this.URL;
  83. logger.info(newURL);
  84. try {
  85. connection = DriverManager
  86. .getConnection(newURL, USERNAME, PASSWORD);
  87. } catch (SQLException e) {
  88. // TODO Auto-generated catch block
  89. e.printStackTrace();
  90. }
  91. return connection;
  92. }
  93. /**
  94. * 增加、删除、改
  95. *
  96. * @param sql语句
  97. * @param params需要传递的变量
  98. * ,比如表单提交的数据。
  99. * @return 这里返回值为成功和失败
  100. * @throws SQLException
  101. */
  102. public boolean updateByPreparedStatement(String sql, List<Object> params)
  103. throws SQLException {
  104. boolean flag = false;
  105. int result = -1;
  106. pstmt = connection.prepareStatement(sql);
  107. int index = 1;
  108. if (params != null && !params.isEmpty()) {
  109. for (int i = 0; i < params.size(); i++) {
  110. pstmt.setObject(index++, params.get(i));
  111. }
  112. }
  113. // System.out.println(pstmt.getMetaData().toString());
  114. // System.out.println(pstmt.toString());
  115. logger.info(pstmt.toString());
  116. result = pstmt.executeUpdate();
  117. flag = result > 0 ? true : false;
  118. return flag;
  119. }
  120. /**
  121. * 查询单条记录
  122. *
  123. * @param sql
  124. * @param params
  125. * @return
  126. * @throws SQLException
  127. */
  128. public Map<String, Object> findSimpleResult(String sql, List<Object> params)
  129. throws SQLException {
  130. Map<String, Object> map = new HashMap<String, Object>();
  131. int index = 1;
  132. pstmt = connection.prepareStatement(sql);
  133. if (params != null && !params.isEmpty()) {
  134. for (int i = 0; i < params.size(); i++) {
  135. pstmt.setObject(index++, params.get(i));
  136. }
  137. }
  138. resultSet = pstmt.executeQuery();// 返回查询结果
  139. ResultSetMetaData metaData = resultSet.getMetaData();
  140. int col_len = metaData.getColumnCount();
  141. while (resultSet.next()) {
  142. for (int i = 0; i < col_len; i++) {
  143. String cols_name = metaData.getColumnName(i + 1);
  144. Object cols_value = resultSet.getObject(cols_name);
  145. if (cols_value == null) {
  146. cols_value = "";
  147. }
  148. map.put(cols_name, cols_value);
  149. }
  150. }
  151. return map;
  152. }
  153. /**
  154. * 查询多条记录
  155. *
  156. * @param sql语句
  157. * @param params
  158. * (不管,设为null)
  159. * @return
  160. * @throws SQLException
  161. */
  162. public List<Map<String, Object>> findModeResult(String sql,
  163. List<Object> params) throws SQLException {
  164. List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
  165. int index = 1;
  166. pstmt = connection.prepareStatement(sql);
  167. if (params != null && !params.isEmpty()) {
  168. for (int i = 0; i < params.size(); i++) {
  169. pstmt.setObject(index++, params.get(i));
  170. }
  171. }
  172. // 得到数据集
  173. resultSet = pstmt.executeQuery();
  174. // 从数据集中提取数据
  175. ResultSetMetaData metaData = resultSet.getMetaData();
  176. // 计算有多少行数据
  177. int cols_len = metaData.getColumnCount();
  178. // 把所有数据转换成List格式
  179. while (resultSet.next()) {
  180. Map<String, Object> map = new HashMap<String, Object>();
  181. for (int i = 0; i < cols_len; i++) {
  182. String cols_name = metaData.getColumnName(i + 1);
  183. Object cols_value = resultSet.getObject(cols_name);
  184. if (cols_value == null) {
  185. cols_value = "";
  186. }
  187. map.put(cols_name, cols_value);
  188. }
  189. list.add(map);
  190. }
  191. return list;
  192. }
  193. /**
  194. * 释放数据库连接
  195. */
  196. public void releaseConn() {
  197. if (resultSet != null) {
  198. try {
  199. resultSet.close();
  200. } catch (SQLException e) {
  201. // e.printStackTrace();
  202. logger.error("releaseConn error:" + e.getMessage());
  203. }
  204. }
  205. }
  206. public void closeConn(){
  207. if(connection!=null){
  208. try {
  209. connection.close();
  210. } catch (SQLException e) {
  211. // TODO 自动生成的 catch 块
  212. // e.printStackTrace();
  213. logger.error("closeConn error:" + e.getMessage());
  214. }
  215. }
  216. }
  217. }