<script>function StorePage(){d=document;t=d.selection?(d.selection.type!='None'?d.selection.createRange().text:''):(d.getSelection?d.getSelection():'');void(keyit=window.open('http://www.365key.com/storeit.aspx?t='+escape(d.title)+'&u='+escape(d.location.href)+'&c='+escape(t),'keyit','scrollbars=no,width=475,height=575,left=75,top=20,status=no,resizable=yes'));keyit.focus();}</script>
1. 数据库查询
执行Select语句时,可能会查询到数据库中的好几个字段。
例如:
Stringsql
=
"
selecttop4
"
+ " news_type_table.news_type_name, "
+ " news_table.news_directory, "
+ " news_table.news_title, "
+ " news_table.news_author, "
+ " news_table.news_release_date "
+ " fromnews_table,news_type_table "
+ " wherenews_table.news_type_id=news_type_table.news_type_id "
+ " orderbynews_table.news_release_datedesc " ;
+ " news_type_table.news_type_name, "
+ " news_table.news_directory, "
+ " news_table.news_title, "
+ " news_table.news_author, "
+ " news_table.news_release_date "
+ " fromnews_table,news_type_table "
+ " wherenews_table.news_type_id=news_type_table.news_type_id "
+ " orderbynews_table.news_release_datedesc " ;
这个SQL语句涉及到多个字段的查询。(在组织Select语句时查询的字段已有一个顺序)
查询完后,返回到结果集里面:
//
conn为数据库连接对象
PreparedStatementpstmt = conn.prepareStatement(sql);
ResultSetresult = pstmt.executeQuery();
PreparedStatementpstmt = conn.prepareStatement(sql);
ResultSetresult = pstmt.executeQuery();
这个时候从结果集里面取数据字段时,要注意查询语句中的字段顺序。否则可能取不出来想要的字段值。
//
列出查询出的所有内容
while (result.next()) ... {
System.out.println("类型:"+result.getString("news_type_name"));
System.out.println("标题:"+result.getString("news_title"));
System.out.println("作者:"+result.getString("news_author"));
System.out.println("发布日期:"+result.getString("news_release_date"));
System.out.println();
}
while (result.next()) ... {
System.out.println("类型:"+result.getString("news_type_name"));
System.out.println("标题:"+result.getString("news_title"));
System.out.println("作者:"+result.getString("news_author"));
System.out.println("发布日期:"+result.getString("news_release_date"));
System.out.println();
}
如上,这个时候能正常列出所有的查询内容(result.getString()中出现的字段顺序跟Select语句的
顺序一致)。
while
(result.next())
...
{
System.out.println("类型:"+result.getString("news_type_name"));
System.out.println("发布日期:"+result.getString("news_release_date"));
System.out.println("标题:"+result.getString("news_title"));
System.out.println("作者:"+result.getString("news_author"));
System.out.println();
}
System.out.println("类型:"+result.getString("news_type_name"));
System.out.println("发布日期:"+result.getString("news_release_date"));
System.out.println("标题:"+result.getString("news_title"));
System.out.println("作者:"+result.getString("news_author"));
System.out.println();
}
如上,这个时候就不能正常显示所有查询内容(result.getString()中出现的字段顺序跟Select语句的
顺序不一致)。
这个问题可能跟ResultSet的属性有关,它指向查询结果集。每执行一次操作,结果集的游标(不
知 这个说法对不对)就会向下移动,这样它就不会再取到它前面的数据。