java版sqlhelper,純jdbc的工具類

來源:互聯網
上載者:User
package sql;  import java.sql.*;  import java.util.logging.*;    /**  *  SQL 基本操作  * 通過它,可以很輕鬆的使用 JDBC 來操縱資料庫  * @author 郗曉勇  */  public class SQLHelper  {      /**      * 驅動      */      public static String driver = "com.microsoft.jdbc.sqlserver.SQLServerDriver";      /**      * 連接字串      */      public static String url = "jdbc:microsoft:sqlserver://192.168.24.246:1433;DatabaseName=LiNing";      /**      * 使用者名稱      */      public static String user = "sa";      /**      * 密碼      */      public static String password = "123456";      /**      * 不允許執行個體化該類      */      private SQLHelper()      {      }      /**      * 擷取一個資料庫連接      * 通過設定類的  driver / url / user / password 這四個靜態變數來 設定資料庫連接屬性      * @return 資料庫連接      */      public static Connection getConnection()      {          try          {              // 擷取驅動,這裡使用的是 sqljdbc_1.2.2828.100_chs.exe,不同版本的驅動,語句有所不同              Class.forName(driver);          } catch (ClassNotFoundException ex)          {              Logger.getLogger(SQLHelper.class.getName()).log(Level.SEVERE, null, ex);          }          try          {              return DriverManager.getConnection(url, user, password);          } catch (SQLException ex)          {              Logger.getLogger(SQLHelper.class.getName()).log(Level.SEVERE, null, ex);              return null;          }      }      /**      * 擷取一個 Statement      * 該 Statement 已經設定資料集 可以滾動,可以更新      * @return 如果擷取失敗將返回 null,調用時記得檢查傳回值      */      public static Statement getStatement()      {          Connection conn = getConnection();          if (conn == null)          {              return null;          }          try          {              return conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,                      ResultSet.CONCUR_UPDATABLE);          // 設定資料集可以滾動,可以更新          } catch (SQLException ex)          {              Logger.getLogger(SQLHelper.class.getName()).log(Level.SEVERE, null, ex);              close(conn);          }          return null;      }      /**      * 擷取一個 Statement      * 該 Statement 已經設定資料集 可以滾動,可以更新      * @param conn 資料庫連接      * @return 如果擷取失敗將返回 null,調用時記得檢查傳回值      */      public static Statement getStatement(Connection conn)      {          if (conn == null)          {              return null;          }          try          {              return conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);          // 設定資料集可以滾動,可以更新          } catch (SQLException ex)          {              Logger.getLogger(SQLHelper.class.getName()).log(Level.SEVERE, null, ex);              return null;          }      }      /**      * 擷取一個帶參數的 PreparedStatement      * 該 PreparedStatement 已經設定資料集 可以滾動,可以更新      * @param cmdText 需要 ? 參數的 SQL 陳述式      * @param cmdParams SQL 陳述式的參數表      * @return 如果擷取失敗將返回 null,調用時記得檢查傳回值      */      public static PreparedStatement getPreparedStatement(String cmdText, Object... cmdParams)      {          Connection conn = getConnection();          if (conn == null)          {              return null;          }          PreparedStatement pstmt = null;          try          {              pstmt = conn.prepareStatement(cmdText, ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);              int i = 1;              for (Object item : cmdParams)              {                  pstmt.setObject(i, item);                  i++;              }          } catch (SQLException e)          {              e.printStackTrace();              close(conn);          }          return pstmt;      }      /**      *  擷取一個帶參數的 PreparedStatement      * 該 PreparedStatement 已經設定資料集 可以滾動,可以更新      * @param conn 資料庫連接      * @param cmdText 需要 ? 參數的 SQL 陳述式      * @param cmdParams SQL 陳述式的參數表      * @return 如果擷取失敗將返回 null,調用時記得檢查傳回值      */      public static PreparedStatement getPreparedStatement(Connection conn, String cmdText, Object... cmdParams)      {          if (conn == null)          {              return null;          }          PreparedStatement pstmt = null;          try          {              pstmt = conn.prepareStatement(cmdText, ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);              int i = 1;              for (Object item : cmdParams)              {                  pstmt.setObject(i, item);                  i++;              }          } catch (SQLException e)          {              e.printStackTrace();              close(pstmt);          }          return pstmt;      }      /**      * 執行 SQL 陳述式,返回結果為整型      * 主要用於執行非查詢語句      * @param cmdText SQL 陳述式      * @return 非負數:正常執行; -1:執行錯誤; -2:串連錯誤      */      public static int ExecSql(String cmdText)      {          Statement stmt = getStatement();          if (stmt == null)          {              return -2;          }          int i;          try          {              i = stmt.executeUpdate(cmdText);          } catch (SQLException ex)          {              Logger.getLogger(SQLHelper.class.getName()).log(Level.SEVERE, null,                      ex);              i = -1;          }          closeConnection(stmt);          return i;      }      /**      * 執行 SQL 陳述式,返回結果為整型      * 主要用於執行非查詢語句      * @param cmdText SQL 陳述式      * @return 非負數:正常執行; -1:執行錯誤; -2:串連錯誤      */      public static int ExecSql(Connection conn, String cmdText)      {          Statement stmt = getStatement(conn);          if (stmt == null)          {              return -2;          }          int i;          try          {              i = stmt.executeUpdate(cmdText);          } catch (SQLException ex)          {              Logger.getLogger(SQLHelper.class.getName()).log(Level.SEVERE, null,                      ex);              i = -1;          }          close(stmt);          return i;      }      /**      * 執行 SQL 陳述式,返回結果為整型      * 主要用於執行非查詢語句      * @param cmdText 需要 ? 參數的 SQL 陳述式      * @param cmdParams SQL 陳述式的參數表      * @return 非負數:正常執行; -1:執行錯誤; -2:串連錯誤      */      public static int ExecSql(String cmdText, Object... cmdParams)      {          PreparedStatement pstmt = getPreparedStatement(cmdText, cmdParams);          if (pstmt == null)          {              return -2;          }          int i;          try          {              i = pstmt.executeUpdate();          } catch (SQLException ex)          {              Logger.getLogger(SQLHelper.class.getName()).log(Level.SEVERE, null,                      ex);              i = -1;          }          closeConnection(pstmt);          return i;      }      /**      * 執行 SQL 陳述式,返回結果為整型      * 主要用於執行非查詢語句      * @param conn 資料庫連接      * @param cmdText 需要 ? 參數的 SQL 陳述式      * @param cmdParams SQL 陳述式的參數表      * @return 非負數:正常執行; -1:執行錯誤; -2:串連錯誤      */      public static int ExecSql(Connection conn, String cmdText, Object... cmdParams)      {          PreparedStatement pstmt = getPreparedStatement(conn, cmdText, cmdParams);          if (pstmt == null)          {              return -2;          }          int i;          try          {              i = pstmt.executeUpdate();          } catch (SQLException ex)          {              Logger.getLogger(SQLHelper.class.getName()).log(Level.SEVERE, null, ex);              i = -1;          }          close(pstmt);          return i;      }      /**      * 返回結果集的第一行的一列的值,其他忽略      * @param cmdText SQL 陳述式      * @return      */      public static Object ExecScalar(String cmdText)      {          ResultSet rs = getResultSet(cmdText);          Object obj = buildScalar(rs);          closeConnection(rs);          return obj;      }      /**      * 返回結果集的第一行的一列的值,其他忽略      * @param conn 資料庫連接      * @param cmdText SQL 陳述式      * @return      */      public static Object ExecScalar(Connection conn, String cmdText)      {          ResultSet rs = getResultSet(conn, cmdText);          Object obj = buildScalar(rs);          closeEx(rs);          return obj;      }      /**      * 返回結果集的第一行的一列的值,其他忽略      * @param cmdText 需要 ? 參數的 SQL 陳述式      * @param cmdParams SQL 陳述式的參數表      * @return      */      public static Object ExecScalar(String cmdText, Object... cmdParams)      {          ResultSet rs = getResultSet(cmdText, cmdParams);          Object obj = buildScalar(rs);          closeConnection(rs);          return obj;      }      /**      * 返回結果集的第一行的一列的值,其他忽略      * @param conn 資料庫連接      * @param cmdText 需要 ? 參數的 SQL 陳述式      * @param cmdParams SQL 陳述式的參數表      * @return      */      public static Object ExecScalar(Connection conn, String cmdText, Object... cmdParams)      {          ResultSet rs = getResultSet(conn, cmdText, cmdParams);          Object obj = buildScalar(rs);          closeEx(rs);          return obj;      }      /**      * 返回一個 ResultSet      * @param cmdText SQL 陳述式      * @return      */      public static ResultSet getResultSet(String cmdText)      {          Statement stmt = getStatement();          if (stmt == null)          {              return null;          }          try          {              return stmt.executeQuery(cmdText);          } catch (SQLException ex)          {              Logger.getLogger(SQLHelper.class.getName()).log(Level.SEVERE, null, ex);              closeConnection(stmt);          }          return null;      }      /**      * 返回一個 ResultSet      * @param conn      * @param cmdText SQL 陳述式      * @return      */      public static ResultSet getResultSet(Connection conn, String cmdText)      {          Statement stmt = getStatement(conn);          if (stmt == null)          {              return null;          }          try          {              return stmt.executeQuery(cmdText);          } catch (SQLException ex)          {              Logger.getLogger(SQLHelper.class.getName()).log(Level.SEVERE, null, ex);              close(stmt);          }          return null;      }      /**      * 返回一個 ResultSet      * @param cmdText 需要 ? 參數的 SQL 陳述式      * @param cmdParams SQL 陳述式的參數表      * @return      */      public static ResultSet getResultSet(String cmdText, Object... cmdParams)      {          PreparedStatement pstmt = getPreparedStatement(cmdText, cmdParams);          if (pstmt == null)          {              return null;          }          try          {              return pstmt.executeQuery();          } catch (SQLException ex)          {              Logger.getLogger(SQLHelper.class.getName()).log(Level.SEVERE, null, ex);              closeConnection(pstmt);          }          return null;      }      /**      * 返回一個 ResultSet      * @param conn 資料庫連接      * @param cmdText 需要 ? 參數的 SQL 陳述式      * @param cmdParams SQL 陳述式的參數表      * @return      */      public static ResultSet getResultSet(Connection conn, String cmdText, Object... cmdParams)      {          PreparedStatement pstmt = getPreparedStatement(conn, cmdText, cmdParams);          if (pstmt == null)          {              return null;          }          try          {              return pstmt.executeQuery();          } catch (SQLException ex)          {              Logger.getLogger(SQLHelper.class.getName()).log(Level.SEVERE, null, ex);              close(pstmt);          }          return null;      }      public static Object buildScalar(ResultSet rs)      {          if (rs == null)          {              return null;          }          Object obj = null;          try          {              if (rs.next())              {                  obj = rs.getObject(1);              }          } catch (SQLException ex)          {              Logger.getLogger(SQLHelper.class.getName()).log(Level.SEVERE, null, ex);          }          return obj;      }                    /**      * 擷取一個具有更新功能的資料模型 如果只要讀取資料,就不要用它了      * @param cmdText 能返回一個資料集的查詢SQL 陳述式      * @return 表格式資料模型      *       *       * DataSet 沒有找到在哪個包中,因為暫時用不到所以省略此方法           public static DataSet getDataSet(String cmdText)     {         Statement stmt = getStatement();         DataSet dbc = new DataSet();         if (stmt == null)         {             dbc.code = -2;             return dbc;         }         try         {             // 查詢語句             dbc.rs = stmt.executeQuery(cmdText);             dbc.model = buildTableModel(dbc.rs);             dbc.code = dbc.model.getRowCount();         } catch (SQLException ex)         {             Logger.getLogger(SQLHelper.class.getName()).log(Level.SEVERE, null, ex);             dbc.code = -1;         }         return dbc;     }     */            /**      * 擷取一個具有更新功能的資料模型 如果只要讀取資料,就不要用它了      * @param conn 資料庫連接      * @param cmdText 能返回一個資料集的查詢SQL 陳述式      * @return 表格式資料模型      *       * 同上一個方法           public static DataSet getDataSet(Connection conn, String cmdText)     {         Statement stmt = getStatement(conn);         DataSet dbc = new DataSet();         if (stmt == null)         {             dbc.code = -2;             return dbc;         }         try         {             // 查詢語句             dbc.rs = stmt.executeQuery(cmdText);             dbc.model = buildTableModel(dbc.rs);             dbc.code = dbc.model.getRowCount();         } catch (SQLException ex)         {             Logger.getLogger(SQLHelper.class.getName()).log(Level.SEVERE, null, ex);             dbc.code = -1;         }         return dbc;     }     */      /**      * 擷取一個具有更新功能的資料模型 如果只要讀取資料,就不要用它了      * @param cmdText 需要 ? 參數的 SQL 陳述式      * @param cmdParams SQL 陳述式的參數表      * @return 表格式資料模型      *       *       * 同上一個方法     *       *           public static DataSet getDataSet(String cmdText, Object... cmdParams)     {         PreparedStatement pstmt = getPreparedStatement(cmdText, cmdParams);         DataSet dbc = new DataSet();         if (pstmt == null)         {             dbc.code = -2;             return dbc;         }         try         {             // 查詢語句             dbc.rs = pstmt.executeQuery();             dbc.model = buildTableModel(dbc.rs);             dbc.code = dbc.model.getRowCount();         } catch (SQLException ex)         {             Logger.getLogger(SQLHelper.class.getName()).log(Level.SEVERE, null, ex);             dbc.code = -1;         }         return dbc;     }           */      /**      * 擷取一個具有更新功能的資料模型 如果只要讀取資料,就不要用它了      * @param conn 資料庫連接      * @param cmdText 需要 ? 參數的 SQL 陳述式      * @param cmdParams SQL 陳述式的參數表      * @return 表格式資料模型      *       *       * 同上      *            public static DataSet getDataSet(Connection conn, String cmdText, Object... cmdParams)     {         PreparedStatement pstmt = getPreparedStatement(conn, cmdText, cmdParams);         DataSet dbc = new DataSet();         if (pstmt == null)         {             dbc.code = -2;             return dbc;         }         try         {             // 查詢語句             dbc.rs = pstmt.executeQuery();             dbc.model = buildTableModel(dbc.rs);             dbc.code = dbc.model.getRowCount();         } catch (SQLException ex)         {             Logger.getLogger(SQLHelper.class.getName()).log(Level.SEVERE, null, ex);             dbc.code = -1;         }         return dbc;     }     */      private static void close(Object obj)      {          if (obj == null)          {              return;          }          try          {              if (obj instanceof Statement)              {                  ((Statement) obj).close();              } else if (obj instanceof PreparedStatement)              {                  ((PreparedStatement) obj).close();              } else if (obj instanceof ResultSet)              {                  ((ResultSet) obj).close();              } else if (obj instanceof Connection)              {                  ((Connection) obj).close();              }          } catch (SQLException ex)          {              Logger.getLogger(SQLHelper.class.getName()).log(Level.SEVERE, null, ex);          }      }      private static void closeEx(Object obj)      {          if (obj == null)          {              return;          }          try          {              if (obj instanceof Statement)              {                  ((Statement) obj).close();              } else if (obj instanceof PreparedStatement)              {                  ((PreparedStatement) obj).close();              } else if (obj instanceof ResultSet)              {                  ((ResultSet) obj).getStatement().close();              } else if (obj instanceof Connection)              {                  ((Connection) obj).close();              }          } catch (SQLException ex)          {              Logger.getLogger(SQLHelper.class.getName()).log(Level.SEVERE, null, ex);          }      }      private static void closeConnection(Object obj)      {          if (obj == null)          {              return;          }          try          {              if (obj instanceof Statement)              {                  ((Statement) obj).getConnection().close();              } else if (obj instanceof PreparedStatement)              {                  ((PreparedStatement) obj).getConnection().close();              } else if (obj instanceof ResultSet)              {                  ((ResultSet) obj).getStatement().getConnection().close();              } else if (obj instanceof Connection)              {                  ((Connection) obj).close();              }          } catch (SQLException ex)          {              Logger.getLogger(SQLHelper.class.getName()).log(Level.SEVERE, null, ex);          }      }  }  

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.