为什么会抛出这个异常:java.sql.SQLException: After end of result set
错误的片段代码如下:
try {
s=conn.createStatement();
rs=s.executeQuery(“select * from events where event_id=”+id);
while(rs.next()) {
System.out.println(“ok”);
}
}catch(SQLException e1) {
e1.printStackTrace();
}
String result=rs.getString(2);
System.out.println(result);
return result;
————–在while的条件里已经用了resulset,然后它就关闭了。但是在后面又调用了resultset,因为它已经关闭,所以就会抛出异常。
正确片段代码如下:
try {
s=conn.createStatement();
rs=s.executeQuery(“select * from events where event_id=”+id);
while(rs.next()) {
result=rs.getString(2);
}
}catch(SQLException e1) {
e1.printStackTrace();
}
return result;
转载:揭秘不可按套路翻译的英语句子 – 每日英语
生活中一些简短的英语可是会难道一大批人的哦。如果不按照实际情况理所当然理解的话,是会出岔子的。比如说,”Are you there?”是什么意思呢?是说“你在那里吗?”其实不尽然,一起来看一下吧。 继续阅读 »
我在用的FireFox插件
1,DownloadHelper:从多个站点下载视频和图片文件(我主要用他来下载YouTube视频)。
2,Easy DragToGo:轻松使用拖拽手势打开标签页。
3,FastestFox:轻松切换搜索引擎,附带自动翻页功能。
4,Google Toolbar for FireFox:不用说了。
5,ColorfulTabs:让你的标签变成彩色的。
6,FireShot:截屏工具,可以截下整个网页,也可以只截取可见部分,截完可以编辑。功能强大,但是如果想截取某一部分的话比较麻烦,有没有既有以上功能,又有像QQ截图那样方便截取某一部分的插件呢。
青花瓷JAVA版
之前xfx推荐我的,非常经典。
真正的Derby新手教程,Derby安装,创建数据库,在Java程序中使用Derby
以下乃本人今天之研究成果,供广大菜鸟借鉴参考,如有高人路过发现错误,请不吝赐教。
1,下载并安装Derby:
下载地址:http://db.apache.org/derby /derby_downloads.html,下载最新版本。
我用的是10.5.3.0。
解压缩到任意文件夹,我的是:E:\Java\Joy\derby
2,配置环境变量:
建立DERBY_HOME,值:E:\Java\Joy\derby\db- derby-10.5.3.0-bin\db-derby-10.5.3.0-bin
在Path加入:%DERBY_HOME%\bin
在CLASSPATH加入:%DERBY_HOME%\lib \derby.jar;%DERBY_HOME%\lib\derbyclient.jar;%DERBY_HOME%\lib\derbytools.jar;%DERBY_HOME%\lib\derbynet.jar
3,测试看看Derby安装成功没有
开始—Run—CMD
运行 sysinfo
如果安装成功,将会看到相关信息,下面是截取的部分信息。 继续阅读 »
Hibernate学生选课,实现课程按照学生人数进行排序的方法
声明:编程新手,如有错漏,敬请指出。谢谢。
研究了一个星期hibernate,写了一些方法,一个学生可以选多门课,一门课有多个学生,我想把课程按照学生人数进行排序。
在Course类里,有一个attribute是student,是一个collection,通过查询Course,可以得到student这个 collection的size,也就是这个Course的人数。问题来了,hibernate里,可以在mapping文件里设置排序原则,即,在 hbm.xml文件里设置ordery by,但是无法order by一个collection。更不要说order by 一个collection的size了。
所以,我想了一个办法——自定义Comparator。
好了,开始吧。
POJO:Student
-
import java.util.HashSet;
-
import java.util.Set;
-
public class Student
-
{
-
private int sid;
-
private String sname;
-
private String sage;
-
-
private Set<Course> course=new HashSet<Course>();
-
-
public Student()
-
{
-
}
-
// getter/setter…
-
}
POJO:Course
-
-
import java.util.HashSet;
-
import java.util.Set;
-
-
public class Course
-
{
-
private int cid;
-
private String cname;
-
private Set<Student> student=new HashSet<Student>();
-
-
public Course() {}
-
//getter/setter…
-
-
}
Student.hbm.xml
<?xml version=”1.0″ encoding=”UTF-8″?>
<!DOCTYPE hibernate-mapping
PUBLIC “-//Hibernate/Hibernate Mapping DTD 3.0//EN”
“http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd”>
<hibernate-mapping>
<class name=”com.test.Student” table=”student” >
<id name=”sid” >
<column name=”sid” sql-type=”int(10)” not-null=”true”/>
<generator/>
</id>
<property name=”sname”>
<column name=”sname”/>
</property>
<property name=”sage”>
<column name=”sage”/>
</property>
<set access=”property” name=”course”
table=”student_course_link” batch-size=”10″ fetch=”select”
lazy=”true” cascade=”save-update” inverse=”true”
>
<key column=”sid”/>
<many-to-many column=”cid”/>
</set>
</class>
</hibernate-mapping>
Course.hbm.xml
<?xml version=”1.0″ encoding=”UTF-8″?>
<!DOCTYPE hibernate-mapping
PUBLIC “-//Hibernate/Hibernate Mapping DTD 3.0//EN”
“http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd”>
<hibernate-mapping>
<class name=”com.test.Course” table=”course” >
<id name=”cid” >
<column name=”cid” sql-type=”int(10)” not-null=”true” />
<generator/>
</id>
<property name=”cname”>
<column name=”cname”/>
</property>
<set access=”property” name=”student” batch-size=”10″ fetch=”select”
table=”student_course_link” lazy=”true” cascade=”save-update”
inverse=”false”>
<key column=”cid”/>
<many-to-many column=”sid”/>
</set>
</class>
</hibernate-mapping>
数据库三个表,student,course,student_course_link(中间表):
-
CREATE TABLE `java2`.`student` (
-
`sid` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
-
`sname` varchar(16) DEFAULT NULL,
-
`sage` varchar(16) DEFAULT NULL,
-
PRIMARY KEY (`sid`)
-
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-
-
DROP TABLE IF EXISTS `java2`.`course`;
-
CREATE TABLE `java2`.`course` (
-
`cid` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
-
`cname` varchar(16) DEFAULT NULL,
-
PRIMARY KEY (`cid`)
-
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-
-
DROP TABLE IF EXISTS `java2`.`student_course_link`;
-
CREATE TABLE `java2`.`student_course_link` (
-
`sid` int(10) NOT NULL,
-
`cid` int(10) NOT NULL,
-
PRIMARY KEY (`sid`,`cid`)
-
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
我们需要一个自定义Comparator:
-
-
import java.util.Comparator;
-
-
public final class HotCourseComparator implements Comparator {
-
-
public int compare(Object arg0, Object arg1) {
-
Course c1=(Course)arg0;
-
Course c2=(Course)arg1;
-
-
return c2.getStudent().size()-c1.getStudent().size(); // 按照选这门课的人数排序。
-
}
-
-
}
测试类:
-
{
-
public void rankCourse() {
-
Session session=HibernateUtil.getSessionFactory().getCurrentSession();
-
session.beginTransaction();
-
Query query=session.createQuery("from Course");
-
List l=query.list();
-
Collections.sort(l,new HotCourseComparator()); //这里声明使用我们自定义的Comparator
-
for(int j=0;j<l.size();j++) {
-
Course c=(Course)l.get(j);
-
int snum=c.getStudent().size();
-
System.out.println(c.getCname()+" has "+snum+" students");
-
}
-
-
}
-
-
public static void main(String[] args)
-
{
-
TestManyToMany t = new TestManyToMany();
-
t.rankCourse();
-
-
}
-
}
运行结果:
C# has 4 students
Ruby on Rails has 4 students
PHP has 3 students
JAVA has 2 students
C has 2 students
PL/SQL has 2 students
MATLAB has 2 students
C++ has 1 students
Heskell has 1 students
Python has 1 students



