为什么会抛出这个异常:java.sql.SQLException: After end of result set

Joy 分类:好好学习 | Joy 标签: Joy 发表于2010/03/11,14:18 | 1条评论

错误的片段代码如下:
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;

转载:揭秘不可按套路翻译的英语句子 – 每日英语

Joy 分类:好好学习 | Joy 标签: Joy 发表于2010/03/09,10:07 | 1条评论

揭秘不可按套路翻译的英语句子 – 每日英语.

生活中一些简短的英语可是会难道一大批人的哦。如果不按照实际情况理所当然理解的话,是会出岔子的。比如说,”Are you there?”是什么意思呢?是说“你在那里吗?”其实不尽然,一起来看一下吧。 继续阅读 »

我在用的FireFox插件

Joy 分类:什么有趣 | Joy 标签: Joy 发表于2010/03/08,10:46 | 2条评论

1,DownloadHelper:从多个站点下载视频和图片文件(我主要用他来下载YouTube视频)。
2,Easy DragToGo:轻松使用拖拽手势打开标签页。
3,FastestFox:轻松切换搜索引擎,附带自动翻页功能。
4,Google Toolbar for :不用说了。
5,ColorfulTabs:让你的标签变成彩色的。
6,FireShot:截屏工具,可以截下整个网页,也可以只截取可见部分,截完可以编辑。功能强大,但是如果想截取某一部分的话比较麻烦,有没有既有以上功能,又有像QQ截图那样方便截取某一部分的插件呢。 :bb

青花瓷JAVA版

Joy 分类:好好学习 | Joy 标签: Joy 发表于2010/03/04,10:29 | 9条评论

之前xfx推荐我的,非常经典。

真正的Derby新手教程,Derby安装,创建数据库,在Java程序中使用Derby

Joy 分类:好好学习 | Joy 标签: Joy 发表于2010/03/02,15:47 | 4条评论

以下乃本人今天之研究成果,供广大菜鸟借鉴参考,如有高人路过发现错误,请不吝赐教。

1,下载并安装Derby:

下载地址:http://db.apache.org/ /_downloads.html,下载最新版本。

我用的是10.5.3.0。

解压缩到任意文件夹,我的是:E:\\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学生选课,实现课程按照学生人数进行排序的方法

Joy 分类:好好学习 | Joy 标签: Joy 发表于2010/03/01,15:18 | 没有评论

声明:编程新手,如有错漏,敬请指出。谢谢。

研究了一个星期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

package com.test;
  1. import .util.HashSet;
  2. import java.util.Set;
  3. public class Student
  4. {
  5. private int sid;
  6. private String sname;
  7. private String sage;
  8.  
  9. private Set<Course> course=new HashSet<Course>();
  10.  
  11. public Student()
  12. {
  13. }
  14. // getter/setter…
  15. }

POJO:Course

package com.test;
  1.  
  2. import java.util.HashSet;
  3. import java.util.Set;
  4.  
  5. public class Course
  6. {
  7. private int cid;
  8. private String cname;
  9. private Set<Student> student=new HashSet<Student>();
  10.  
  11. public Course() {}
  12. //getter/setter…
  13.  
  14. }

Student.hbm.xml
<?xml version=”1.0″ encoding=”UTF-8″?>
<!DOCTYPE -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(中间表):

DROP TABLE IF EXISTS `java2`.`student`;
  1. CREATE TABLE `java2`.`student` (
  2. `sid` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  3. `sname` varchar(16) DEFAULT NULL,
  4. `sage` varchar(16) DEFAULT NULL,
  5. PRIMARY KEY (`sid`)
  6. ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
  7.  
  8. DROP TABLE IF EXISTS `java2`.`course`;
  9. CREATE TABLE `java2`.`course` (
  10. `cid` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  11. `cname` varchar(16) DEFAULT NULL,
  12. PRIMARY KEY (`cid`)
  13. ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
  14.  
  15. DROP TABLE IF EXISTS `java2`.`student_course_link`;
  16. CREATE TABLE `java2`.`student_course_link` (
  17. `sid` int(10) NOT NULL,
  18. `cid` int(10) NOT NULL,
  19. PRIMARY KEY (`sid`,`cid`)
  20. ) ENGINE=InnoDB DEFAULT CHARSET=latin1;

我们需要一个自定义Comparator:

package com.test;
  1.  
  2. import java.util.Comparator;
  3.  
  4. public final class HotCourseComparator implements Comparator {
  5.  
  6. public int compare(Object arg0, Object arg1) {
  7. Course c1=(Course)arg0;
  8. Course c2=(Course)arg1;
  9.  
  10. return c2.getStudent().size()-c1.getStudent().size(); // 按照选这门课的人数排序。
  11. }
  12.  
  13. }

测试类:

public class TestManyToMany
  1. {
  2. public void rankCourse() {
  3. Session session=HibernateUtil.getSessionFactory().getCurrentSession();
  4. session.beginTransaction();
  5. Query query=session.createQuery("from Course");
  6. List l=query.list();
  7. Collections.sort(l,new HotCourseComparator()); //这里声明使用我们自定义的Comparator
  8. for(int j=0;j&lt;l.size();j++) {
  9. Course c=(Course)l.get(j);
  10. int snum=c.getStudent().size();
  11. System.out.println(c.getCname()+" has "+snum+" students");
  12. }
  13.  
  14. }
  15.  
  16. public static void main(String[] args)
  17. {
  18. TestManyToMany t = new TestManyToMany();
  19. t.rankCourse();
  20.  
  21. }
  22. }

运行结果:

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