dbdao


 * 所有DAO的基類,提供通用的訪問資料庫的代碼
 * <p>
 * 注意事項:
 * <p>
 * <ul>
 * <li>調用者需要調用<code>new DBDAO();</code><code>dao.close()</code>方法來建立和關閉連接.</li>
 * <li>調用者調用<code>commit()</code>方法一般相應地在異常處理裏要增加rollback()方法處理一個事務內的所有操作</li>
 * </ul>
 * <p>
 * 批處理時﹐調用者代碼框架:
 * </p>
 *
 * <pre>
 *           ...
 *           DBDAO dao = new DBDAO();
 *           try {
 *              dao.doBatch();
 *              ....
 *               dao.commit();        //只有有調用executeUpdate()的時候才需要commit
 *           }catch(SQLException e){
 *              dao.rollback();     //在有commit的時候處理回滾
 *           }finally{
 *              dao.close();         //最後別忘了關閉連接
 *           }
 *           ...
 * </pre>
 */
public class DBDAO {
 private static Logger LOG = Logger.getLogger(DBDAO.class.getName());

 // 常量用于硬連接
 public static final String JDBC_CLASS_NAME = "oracle.jdbc.driver.OracleDriver";

//  public static final String JDBC_CONN_URL =
//  "jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS_LIST="
//  + "(ADDRESS=(PROTOCOL=TCP)(HOST=10.142.252.156)(PORT=1521))"
//  + "(ADDRESS=(PROTOCOL=TCP)(HOST=10.142.252.157)(PORT=1521))"
//  + "(ADDRESS=(PROTOCOL=TCP)(HOST=10.142.252.158)(PORT=1521))"
//  + "(LOAD_BALANCE=yes)(FAILOVER=on))"
//  + "(CONNECT_DATA=(SERVICE_NAME=pdm)))";
  public static final String JDBC_CONN_URL =
  "jdbc:oracle:thin:@10.142.252.156:1521:pdm1";
   public static final String JDBC_USER_PASSWORD = "wtadmin";
 public static final String JDBC_USER_NAME = "wtadmin";
 private Connection connection = null;

 private Statement statement = null;

 private PreparedStatement preparedStatement = null;

 private ResultSet resultset = null;

 private boolean isAutoCommit = true;

 private static boolean count = true;

 private String connUrl = "proxool.realdb1";

 // 有連接池時=true;無連接池時=false;
 private boolean usePool = false;

 private String poolType = "PROCOOL";

 private String jndiName = "PROCOOL";

 /**
  * 構造方法﹐直接創建連接
  *
  * @throws Exception
  */
 public DBDAO() throws Exception {
  connection = getConn();
 }

 /**
  * 構造方法﹐直接創建連接
  *
  * @throws Exception
  */
 public DBDAO(boolean isAutoCommit) throws Exception {
  this();
  this.isAutoCommit = isAutoCommit;
  connection.setAutoCommit(isAutoCommit);
 }

 /**
  * 構造方法﹐直接創建連接,isAutoCommit = true
  *
  * @param connUrl
  * @param uid
  * @param psd
  * @throws Exception
  */
 public DBDAO(String connUrl, String uid, String psd) throws Exception {
  this(connUrl, uid, psd, true);
 }

 /**
  * 構造方法﹐直接創建連接
  *
  * @param connUrl
  * @param uid
  * @param psd
  * @param isAutoCommit,是否自動提交,true/false
  * @throws Exception
  */
 public DBDAO(String connUrl, String uid, String psd, boolean isAutoCommit) throws Exception {
  connection = getConnection(connUrl, uid, psd);
  this.isAutoCommit = isAutoCommit;
  connection.setAutoCommit(isAutoCommit);
 }

 /**
  * 返回使用中的conn
  *
  * @return
  * @throws Exception
  */
 public Connection getConnection() throws Exception {
  return this.connection;
 }

 /**
  * 用直接連接的方式建立連接
  *
  * @return Connection
  */
 public Connection getConnection(String connUrl, String uid, String psd) throws Exception {
  try {
   Class.forName(JDBC_CLASS_NAME);
   connection = DriverManager.getConnection(connUrl, uid, psd);
  } catch (ClassNotFoundException e) {
   LOG.error(e.toString(), e);
   throw e;
  } catch (SQLException e) {
   LOG.error(e.toString(), e);
   throw e;
  }
  return this.connection;
 }

 /**
  * 取得連接
  *
  * @return
  * @throws Exception
  */
 private Connection getConn() throws Exception {
  if (usePool) {
   if (poolType.equals("WEBLOGIC")) {
    try {
     InitialContext initialcontext = new InitialContext();
     DataSource datasource = (DataSource) initialcontext.lookup(jndiName);
     connection = datasource.getConnection();
    } catch (NamingException e) {
     LOG.error(e.toString(), e);
    } catch (SQLException e) {
     LOG.error(e.toString(), e);
    }
   } else if (poolType.equals("TOMCAT")) {
    Context initContext = new InitialContext();
    Context envContext = (Context) initContext.lookup("java:/comp/env");
    DataSource ds = (DataSource) envContext.lookup(jndiName);
    connection = ds.getConnection();
   } else {
    System.out.println("");
    if (count)
     connUrl = "proxool.realdb1";
    else
     connUrl = "proxool.realdb2";
    try {
     connection = DriverManager.getConnection(connUrl);
    } catch (SQLException e) {
     LOG.error(e.toString(), e);
     throw e;
    }
    count = !count;
   }
  } else {
   getConnection(JDBC_CONN_URL, JDBC_USER_NAME, JDBC_USER_PASSWORD);
  }
  return connection;

 }

 /**
  * 設置是否為自動提交﹐不設置時默認為true
  *
  * @param b
  *            true或者false
  */
 public void setAutoCommit(boolean b) throws SQLException {
  try {
   isAutoCommit = b;
   connection.setAutoCommit(b);
  } catch (SQLException e) {
   LOG.error(e.toString(), e);
   throw e;
  }
 }

 /**
  * 返回完整的SQL
  *
  * @param s
  * @param pram
  * @return
  */
 public static String sqlString(String s, Object[] pram) {
  String str = s;
  if(pram!=null){
   for (int i = 0; i < pram.length; i++) {
    try {
     str = str.replaceFirst("//?", "'" + pram[i] + "'");
    } catch (PatternSyntaxException e) {
     System.err.println(e.toString());
    }
   }
  }else{
   LOG.error("DBDAO.sqlString:pram is null");
  }
  return str;
 }
 
 
 /**
  * 返回完整的SQL
  *
  * @param s
  * @param pram
  * @return
  */
 public static String toSqlString(String s, Object[] pram) {
  String str = s;
  if(pram!=null){
   for (int i = 0; i < pram.length; i++) {
    try {
     str = str.replaceFirst("//?", "'" + pram[i] + "'");
    } catch (PatternSyntaxException e) {
     System.err.println(e.toString());
    }
   }
  }else{
   LOG.error("DBDAO.sqlString:pram is null");
  }
  return str;
 }

 /**
  * 返回是否自動提交標誌
  *
  * @return boolean自動提交返回真;不自動提交返回假
  */
 public boolean isAutoCommit() {
  return isAutoCommit;
 }

 /**
  * 設置SQL語句中?為字串的變數的對應值 <br>
  *
  * @param index
  *            int
  * @param value
  *            String
  * @throws SQLException
  */
 public void setString(int index, String value) throws SQLException {
  preparedStatement.setString(index, value);
 }

 /**
  * 設置SQL語句中?為字元留的變數的對應值 <br>
  *
  * @param reader
  *            Reader
  * @throws SQLException
  *             SQL異常
  */
 public void setCharacterStream(int index, Reader reader, int length) throws SQLException {
  preparedStatement.setCharacterStream(index, reader, length);
 }

 /**
  * 設置SQL語句中?為INT的變數的對應值 <br>
  *
  * @param index
  *            int 預製值所在位置
  * @param value
  *            int 預製值
  * @throws SQLException
  *             SQL異常
  */
 public void setInt(int index, int value) throws SQLException {
  preparedStatement.setInt(index, value);
 }

 /**
  * 設置SQL語句中?為布爾型的變數的對應值 <br>
  *
  * @param index
  *            int 預製值所在位置
  * @param value
  *            boolean 預製值
  * @throws SQLException
  *             SQL異常
  */
 public void setBoolean(int index, boolean value) throws SQLException {
  preparedStatement.setBoolean(index, value);
 }

 /**
  * 設置SQL語句中?為Date的變數的對應值 <br>
  *
  * @param index
  *            int 預製值所在位置
  * @param value
  *            Date 預製值
  * @throws SQLException
  *             SQL異常
  */
 public void setDate(int index, Date value) throws SQLException {
  preparedStatement.setDate(index, value);
 }

 /**
  * 設置SQL語句中?為LONG的變數的對應值 <br>
  *
  * @param index
  *            int 預製值所在位置
  * @param value
  *            long 預製值
  * @throws SQLException
  *             SQL異常
  */
 public void setLong(int index, long value) throws SQLException {
  preparedStatement.setLong(index, value);
 }

 /**
  * 設置SQL語句中?為FLOAT的變數的對應值 <br>
  * Method setFloat.
  *
  * @param index
  *            int 預製值所在位置
  * @param value
  *            float 預製值
  * @throws SQLException
  *             SQL異常
  */
 public void setFloat(int index, float value) throws SQLException {
  preparedStatement.setFloat(index, value);
 }

 /**
  * 設置SQL語句中?為CLOB的變數的對應值 <br>
  *
  * @param index
  *            int 預製值所在位置
  * @param value
  *            Clob 預製值
  * @throws SQLException
  *             SQL異常
  */
 public void setClob(int index, Clob value) throws SQLException {
  preparedStatement.setClob(index, value);
 }

/**

dbdao2.txt

*/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JFrame jf = new JFrame("功能界面"); jf.setBounds(0, 0, 700, 600); jf.setVisible(true); jf.setLayout(null); jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JButton b1 = new JButton("图书入库"); b1.setBounds(20, 90, 150, 80); JButton b2 = new JButton("图书查询"); b2.setBounds(20, 210, 150, 80); JButton b3 = new JButton("图书修改"); b3.setBounds(500, 90, 150, 80); JButton b5 = new JButton("办理借阅证登记"); b5.setBounds(20, 330, 150, 80); JButton b6 = new JButton("图书借阅管理"); b6.setBounds(500, 210, 150, 80); JButton b4 = new JButton("图书删除"); b4.setBounds(500, 330, 150, 80); JButton b7 = new JButton("退出系统"); b7.setBounds(560, 20, 90, 30); ta.setBounds(190, 90, 290, 320); txt.setBounds(120,450,300,30); JButton b8 = new JButton("确定"); b8.setBounds(440,450,70,30); JMenuBar menuBar = new JMenuBar(); JMenu menuManage = new JMenu("图书管理"); JMenu menuAbout = new JMenu("关于系统"); JMenuItem item1 = new JMenuItem("图书列表"); menuManage.add(item1); item1.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { JFrame frame = new JFrame("图书列表"); frame.setSize(600, 400); frame.setLocationRelativeTo(null); ListPanel listPanel = new ListPanel(); frame.add(listPanel); frame.setVisible(true); } }); ActionListener act = new ActionListener() { @Override public void actionPerformed(ActionEvent e) { if(e.getSource().equals(b1)) { insertNewbook(); }else if(e.getSource().equals(b3)) { updatebook(); }else if(e.getSource().equals(b4)) { String bid = txt.getText(); if(bid!=null) { if(dbDao.delelteBook(bid)){ int user = JOptionPane.showConfirmDialog(null, "图书删除成功","提示",JOptionPane.YES_NO_OPTION); }else{ int user = JOptionPane.showConfirmDialog(null, "图书删除失败","提示",JOptionPane.YES_NO_OPTION); } }else { return; }部分代码,点击图书删除按钮会直接弹窗提示删除失败并且bid是空值,该怎么获取输入的值并将它传入删除图书方法
05-27

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值