在线等!!!java连接数据库,流已关闭问题
发布网友
发布时间:2022-09-28 15:18
我来回答
共5个回答
热心网友
时间:2024-10-20 17:16
仔细查看java api文档,在ResultSet类的最上面有一段文字:
默认的 ResultSet 对象不可更新,仅有一个向前移动的指针。因此,只能迭代它一次,并且只能按从第一行到最后一行的顺序进行。
就是说ResultSet只能向前移动(rs.next()),而且只能按所取的记录的列的顺序来读取,所以这里:
String str1 = rs.getString(field1);
String str2 = rs.getString(field2);
如果所取的记录里字段field2在field1之前,而读取的时候读field2在读field1之后,那么就会抛出上述异常!!
解决方法非常简单:要么修改select语句使得field2在field1之前,要么修改读取语句的顺序!
参考资料:http://hi.baidu.com/longrm/blog/item/801a19d7fba287daa144dfcf.html
热心网友
时间:2024-10-20 17:16
package DBCONN;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class DatabaseConnection
{
Connection conn=null;
Statement st=null;
ResultSet rs=null;
public Connection CreateConnection()
{
try
{
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
conn=DriverManager.getConnection("jdbc:sqlserver://localhost:1433;DatabaseName=demo","sa","");
}
catch (ClassNotFoundException e)
{
e.printStackTrace();
}
catch (SQLException e)
{
e.printStackTrace();
}
return conn;
}
public ResultSet Select(String sql)
{
try
{
st=conn.createStatement();
rs=st.executeQuery(sql);
}
catch (SQLException e)
{
e.printStackTrace();
}
return rs;
}
public boolean NotSelect(String sql)
{
boolean b=false;
try
{
st=conn.createStatement();
int i=st.executeUpdate(sql);
if(i>0)
{
b=true;
}
}
catch (SQLException e)
{
e.printStackTrace();
}
return b;
}
public void Close()
{
try
{
rs.close();
st.close();
conn.close();
}
catch (SQLException e)
{
e.printStackTrace();
}
}
}
用一下上面的代码连接数据库!!!试试!!!我都是用它的!!!很管用的!!!
但是要有jar包的!只用一个jar包就哦了!!!
热心网友
时间:2024-10-20 17:17
T.setThemematter(rs.getString("theme_matter"));
好象是rs.getString的错误..
你改成rs.getLong试试
如果还不行,就看看dbaccess和java.sql的转换问题
这个,我好久没有直接和数据库打交道了,忘了,不好意思
热心网友
时间:2024-10-20 17:17
java.sql.SQLException: 流已被关闭
是不是sql对象里有 单例 ?
如果没有 你获取 oracle的long话 用getInt试下
热心网友
时间:2024-10-20 17:18
关闭顺序
先关闭ResultSet
再关闭statement
最后关闭connection