有没有commit;提交,确认3条数据可靠?

解决方案 »

  1.   

    commit就是确认修改,通俗一点说就是save,但程序connection缺省是auto commit
    我想问你怎么知道有3条记录,count出来是1那应该就只有1条
      

  2.   

    是不是你的db.DBCon有问题?
      

  3.   

    package db;
    import db.Log;import java.sql.Connection;
    import java.sql.ResultSet;
    import java.sql.PreparedStatement;
    import java.sql.Statement;
    import java.sql.Driver;
    import java.sql.DriverManager ;
    import java.sql.SQLException;
    import java.util.Vector;
    import oracle.jdbc.driver.OracleClobReader;
    /**
     * 类功能  :提供数据库操作功能
     * 建立人  :
     * 修改日期:
     * 修改原因:
     * 修改人  :
     * 使用方法:
    见main方法中的使用
     */
    public class DBCon
    {
        protected  Connection  conn = null;            //数据库连接
        protected  PreparedStatement  pstmt = null;    //语句
        private Vector  queryResult = null;
        public static void main(String[] args)
        {
            DBCon conn = new DBCon();
            try
            {
                conn.prepare("select * from tony.fortest");
                System.out.println(conn.executeQuery());
            }
            catch(Throwable e)
            {
                e.printStackTrace();
            }
            try
            {
                conn.prepare("select * from fortest");
                System.out.println(conn.executeQuery());
            }
            catch(Throwable e)
            {
                e.printStackTrace();
            }
        }    public DBCon()
        {
        }    /**
        * 方法功能: 准备PreparedStatement语句
        * 建立日期: (00-4-6 15:37:32)
        * @param:   sql语句---参数以?代替
        * 建立人  :
        * 修改日期:
        * 修改原因:
        * 修改人  :
        */
        public void prepare(String sql) throws SQLException
        {
            if(conn==null || conn.isClosed() ) getConnection();
            try
            {
                if(pstmt != null)
                {
                    pstmt.close();
                }
            }
            catch(Throwable e){}        try
            {
                pstmt = getConnection().prepareStatement(sql);
                //pstmt.setMaxRows(1000);
            }
            catch(SQLException e)
            {
                throw e;
            }
        }    /**
            给参数赋值
         */
        public void setObject(int index, Object parameter) throws SQLException
        {
            if(!(parameter instanceof java.sql.Date))
            {
                parameter = parameter == null ? "" : parameter.toString().trim();
            }
            pstmt.setObject(index,parameter);
        }    /**
            给参数赋值
         */
        public void setString(int index, Object parameter) throws SQLException
        {
            parameter = parameter == null ? "" : parameter.toString().trim();
            pstmt.setString(index,parameter.toString());
        }    /**
            给参数赋值
         */
        public void setInt(int index, int parameter) throws SQLException
        {
            pstmt.setInt(index, parameter);
        }    /**
            给参数赋值
         */
        public void setDouble(int index, double parameter) throws SQLException
        {
            pstmt.setDouble(index, parameter);
        }    /**
         * 方法功能:执行sql返回结果--两维向量
                 <b>不推荐使用<b>
         * 建立日期:
         * @param: sql 语句
         * @return  :查询返回两维Vector[[aaa,bbb],[ccc,ddd]], (未查到结果时返回[],程序中
         *   应以((java.util.Vector)ret).size()判断@return是否为空
         * 建立人  :
         * 修改日期:
         * 修改原因:
         * 修改人  :
         *
         */
        public Vector executeQuery(String sql) throws SQLException
        {
            java.sql.ResultSet rs = null;
            java.util.Vector vResult = null;
            try
            {
                Statement stmt = getConnection().createStatement();
                rs = stmt.executeQuery(sql);
                vResult = resultset2Vector(rs);
                rs.close();
                stmt.close();
            }
            catch(SQLException e)
            {
                throw e;
            }
            return queryResult=vResult;
        }    /**
         * 方法功能:执行sql返回结果--两维向量
         * 建立日期:(00-3-27 9:13:28)
         * @param:
         * @return  :查询返回两维Vector[[aaa,bbb],[ccc,ddd]], (未查到结果时返回[],程序中
         *   应以((java.util.Vector)ret).size()判断@return是否为空
         * 建立人  :
         * 修改日期:
         * 修改原因:
         * 修改人  :
         *
         */
        public Vector executeQuery() throws SQLException
        {
            java.sql.ResultSet rs = null;
            java.util.Vector vResult = null;
            try
            {
                rs = pstmt.executeQuery();
                vResult = resultset2Vector(rs);
            }
            catch(SQLException e)
            {
                throw e;
            }
            finally
            {
                try
                {
                    rs.close();
                    closeStmt();
                }
                catch(Throwable e1)
                {}
            }
            return queryResult=vResult;
        }    /**
         * 方法功能:执行sql返回ResultSet
                 <b>不推荐使用<b>
         * 建立日期:
         * @param: sql 语句
         * @return  :ResultSet
         * 建立人  :
         * 修改日期:
         * 修改原因:
         * 修改人  :
         *
         */
        public ResultSet Query(String sql) throws SQLException
        {
            java.sql.ResultSet rs = null;
            try
            {
                Statement stmt = getConnection().createStatement();
                rs = stmt.executeQuery(sql);
            }
            catch(SQLException e)
            {
                throw e;
            }
            return rs;
        }    /**
         * 方法功能:执行sql返回结果--ResultSet
         * 建立日期:(00-3-27 9:13:28)
         * @param:
         * @return  :ResultSet
         * 建立人  :
         * 修改日期:
         * 修改原因:
         * 修改人  :
         *
         */
        public ResultSet Query() throws SQLException
        {
            java.sql.ResultSet rs = null;
            try
            {
                rs = pstmt.executeQuery();
            }
            catch(SQLException e)
            {
                throw e;
            }
            return rs;
        }    /**
                得到row行, col列的值
        */    public String get(int row, int col)
        {
            return ((Vector)queryResult.elementAt(row)).elementAt(col).toString();
        }    /**
                得到一行的值
        */
        public Vector getRow(int row)
        {
            if(getRowCount() < row) return null;
            return (Vector)queryResult.elementAt(row);
        }    /**
                得到一列的值
        */
        public Vector getColumn(int col)
        {
            Vector ret = new Vector();        for(int i=0;i<getRowCount();i++)
            {
                ret.add(((Vector)queryResult.elementAt(i)).elementAt(col));
            }
            return ret;
        }    /**
                得到行数
        */
        public int getRowCount()
        {
            return queryResult==null? 0 : queryResult.size();
        }    /**
                得到列数
        */
        public int getColCount()
        {
            if(getRowCount()==0) return 0;  //如果没有得到纪录返回0
            return ((Vector)queryResult.elementAt(0)).size();
        }    /**
         方法功能:执行sql返回结果
                <b>不推荐使用</b>
         @return  :操作影响的纪录数
         建立人  :
         修改日期:
         修改原因:
         修改人  :     */
        public int executeUpdate(String sql) throws SQLException
        {
            Statement stmt = getConnection().createStatement();
            return stmt.executeUpdate(sql);
        }    /**
         方法功能:执行sql返回结果
         @return  :操作影响的纪录数
         建立人  :
         修改日期:
         修改原因:
         修改人  :
         */
        public int executeUpdate() throws SQLException
        {
            try
            {
                return pstmt.executeUpdate();
            }
            catch(NullPointerException e)
            {
                return -1;
            }
        }    /**
         方法功能:释放连接, 强烈建议显式调用
         建立日期:(00-4-6 15:37:32)
         建立人  :
         @return
         */
        public void close()
        {
            closeStmt();
            try
            {
                if(conn!=null)  conn.close();
                //Log.debug("connection is closed!");
            }
            catch(Throwable e)
            {
                e.printStackTrace();
            }
            conn = null;
        }    /**
                设置手动提交(事务处理)bAutoCommit=true 自动 else 手动
                注意: 设置手动提交后一定要调用 setAutoCommit(false)
                建议显式调用setAutoCommit(true)
         建立日期:(00-3-29 10:46:08)
         @param:bAutoCommit=true 自动 else 手动
         @return  :
         建立人  :
         修改日期:
         修改原因:
         修改人  :
         */
        public void setAutoCommit (boolean bAutoCommit)
        {
            try
            {
                getConnection().setAutoCommit(bAutoCommit);
            }
            catch(SQLException e)
            {
            }
        }    /**
         方法功能:事务提交
         建立日期:(00-3-29 11:39:18)
         @param:
         @return  :
         建立人  :
         修改日期:
         修改原因:
         修改人  :
        */
        public void commit()  throws java.sql.SQLException
        {
            try
            {
                conn.commit();
            }
            catch(java.sql.SQLException e)
            {
                throw e;
            }
        }    /**
         方法功能:事务回滚
         建立日期:(00-3-29 11:40:54)
         @param:
         @return  :
         建立人  :
         修改日期:
         修改原因:
         修改人  :
         @exception java.sql.SQLException 异常描述。
        */
        public void rollback()
        {
            try
            {
                conn.rollback();
            }
            catch(SQLException e)
            {
                System.out.println("exception in rollbak() " + e);
            }
        }    public Connection reConnect(String connectdriver, String connectstring, String user,String password) throws SQLException
        {
            Connection newConn = null;
            //测试新的连接
            try
            {
                Class.forName(connectdriver).newInstance();
                //Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
                if(user == null)
                {
                    newConn =DriverManager.getConnection(connectstring, null);
                }
                else
                {
                    newConn =DriverManager.getConnection(connectstring, user,password);
                }
            }
            catch(SQLException e)
            {
                throw e;
            }
            catch(Exception e1)
            {
                System.out.println(e1);
                return null;
            }
            //写配置文件
            Log.reWrite(connectdriver, connectstring, user,password);
            conn.close();
            Log.hasInit = false;
            return conn = newConn;
        }    public Connection getConnection() throws SQLException{
            if(conn != null && !conn.isClosed()) return conn;
            return newConnection();
        }    /**
                创建一个新的数据库连接
         */
        private  Connection newConnection() throws SQLException
        {
            try
            {
                String connectstring = Log.getProperty("database.connectstring","jdbc:weblogic:pool:oraclePool");
                String connectdriver = Log.getProperty("database.driver","weblogic.jdbc.pool.Driver");
                //String connectstring = Log.getProperty("database.connectstring","jdbc:oracle:thin:@192.168.0.233:1521:sbcmis");
                //String connectdriver = Log.getProperty("database.driver","oracle.jdbc.driver.OracleDriver");            String user = Log.getProperty("database.user","mis");
                String password =Log.getProperty("database.password","mis");
                Class.forName(connectdriver).newInstance();
                //Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
                if(user == null)
                {
                    conn =DriverManager.getConnection(connectstring, null);
                }
                else
                {
                    conn =DriverManager.getConnection(connectstring, user,password);
                }
                return conn;
            }
            catch(SQLException e)
            {
                throw e;
            }
            catch(Exception e1)
            {
                System.out.println(e1);
                return null;
            }
        }    /**
            关闭语句句柄
         */
        private void closeStmt()
        {
            try
            {
                pstmt.close();
            }
            catch(Throwable e)
            {}
            pstmt = null;
        }    /**
          为防止数据库连接释放失败在析构时检查
        */
        protected void finalize() throws Throwable
        {
            try
            {
                close();
            }
            catch(Throwable e)
            {
            }
            super.finalize();
        }    private Vector resultset2Vector(java.sql.ResultSet rs)  throws SQLException
        {
            int columnCount = rs.getMetaData().getColumnCount();
            Vector vResult = new Vector();
            while(rs.next())
            {
                java.util.Vector vTemp = new Vector();
                for(int i = 0;i< columnCount;i++)
                {
                    Object oTemp = rs.getObject(i+1);
                    if(oTemp instanceof oracle.sql.CLOB) //字符大对象
                    {
                        StringBuffer buffer = new StringBuffer(3072);
                        char [] szChar= new char[3072];
                        OracleClobReader reader = new OracleClobReader((oracle.sql.CLOB)oTemp);
                        int ret = -1;
                        try
                        {
                            while((ret=reader.read(szChar)) > -1)
                            {
                                buffer.append(szChar,0,ret);
                            }
                            vTemp.addElement(buffer.toString());
                        }
                        catch(java.io.IOException e)
                        {
                            e.printStackTrace();
                        }
                    }
                    else
                    {
                        String sTemp = oTemp ==null ? "" : oTemp.toString() ;
                        vTemp.addElement(sTemp.trim());
                    }
                }
                vResult.addElement(vTemp);
            }
            return vResult;
        }    /**
            判断查询结果是否为空
        */
        public boolean isEmpty()
        {
            return queryResult.size() == 0;
        }    public static boolean isSelect(String sql)
        {
            return sql.trim().toUpperCase().indexOf("SELECT") == 0;
        }    private Vector array2Vector(Object [] parameter)
        {
            Vector ret = new Vector();
            if(parameter==null) return ret;
            for(int i=0;i<parameter.length;i++)
            {
                ret.add(parameter[i]);
            }
            return ret;
        }
    }//end class
      

  4.   

    首先你两次SELECT的表好像不同
    select count(*) from TT_PROVINCE_SCHEDULE
    select operation_name from TB_OPERATION_DEFINE
      

  5.   

    首先两次SELECT的表不同
    select count(*) from TT_PROVINCE_SCHEDULE
    select operation_name from TB_OPERATION_DEFINE
      

  6.   

    那 count出来也是1 是什么意思?
    select count(*) from TB_OPERATION_DEFINE
    的结果也是1吗?数据库中有3条数据 又是什么意思?
    如果你用SQL/PLUS之类的作测试数据的话,COMMIT了吗?