求救,必给分!!! 有没有commit;提交,确认3条数据可靠? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 commit就是确认修改,通俗一点说就是save,但程序connection缺省是auto commit我想问你怎么知道有3条记录,count出来是1那应该就只有1条 是不是你的db.DBCon有问题? 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 首先你两次SELECT的表好像不同select count(*) from TT_PROVINCE_SCHEDULEselect operation_name from TB_OPERATION_DEFINE 首先两次SELECT的表不同select count(*) from TT_PROVINCE_SCHEDULEselect operation_name from TB_OPERATION_DEFINE 那 count出来也是1 是什么意思?select count(*) from TB_OPERATION_DEFINE的结果也是1吗?数据库中有3条数据 又是什么意思?如果你用SQL/PLUS之类的作测试数据的话,COMMIT了吗? 求指点,swing在英文win7操作系统里中文显示乱码 关于URLconnection获取网页编码类型 如何用编码方式忽略 CTRL_LOGOFF_EVENT? 【线程】大家来看看如何加锁? 一段经典代码,说明yield的用法。。。。。 关于字符串在内存中的地址表示 关于类库里一些方法调用的不理解?? HTTP头获取? 初到贵宝地,拜个山头~ 迷惑的类路径问题 谁讲讲turbine? 为什么我的JTabbedPane控件上的组件会跑到其他JTabbedPanel上去?
我想问你怎么知道有3条记录,count出来是1那应该就只有1条
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
select count(*) from TT_PROVINCE_SCHEDULE
select operation_name from TB_OPERATION_DEFINE
select count(*) from TT_PROVINCE_SCHEDULE
select operation_name from TB_OPERATION_DEFINE
select count(*) from TB_OPERATION_DEFINE
的结果也是1吗?数据库中有3条数据 又是什么意思?
如果你用SQL/PLUS之类的作测试数据的话,COMMIT了吗?