JavaServletSQL表
我遇到的问题是,我要创建一个servlet,它将从三个表(SQL)中获取数据,并在html表中打印出来 各表的结构如下: 博客评论:JavaServletSQL表,java,sql,servlets,jdbc,Java,Sql,Servlets,Jdbc,我遇到的问题是,我要创建一个servlet,它将从三个表(SQL)中获取数据,并在html表中打印出来 各表的结构如下: 博客评论: row id (auto increments), blogger id, entry_tstamp, t_stamp, comment, author_id, 博客文章: row id(auto increments), blogger_id, timestamp, entry, 博主信息: row id(auto increments)
row id (auto increments),
blogger id,
entry_tstamp,
t_stamp,
comment,
author_id,
博客文章:
row id(auto increments),
blogger_id,
timestamp,
entry,
博主信息:
row id(auto increments),
blogger_id,
name,
email address,
image,
password,
博客条目是原始帖子,博客评论与该帖子相关。我正试图创建一个表格,显示博客作者的详细信息,然后在第一行、第二行和下面显示文章(来自blog_条目),以及该博客的相关评论
我正在尝试使用whilestation(如下所示)。我必须使用while语句来获取初始博客帖子和blogger ID,第二个while语句用来显示与此相关的评论
我有一些困难,因为它通过了第二个while循环,它取消了第一个while循环(在一个增量之后),然后转储了第二个while循环的内容
有人知道有没有更好的方法来实现这一点吗?我应该使用比较循环吗?我确信我的编码是错误的。谁能告诉我哪里出了问题
多谢各位
代码:
试试看{
Class.forName(“org.sqlite.JDBC”);
con=DriverManager.getConnection(“jdbc:sqlite:E:/mydocuments/NetBeansProjects/co2509blog.sqlite”);
stmt=con.createStatement();
//String temp=“选择条目、名称、电子邮件、图像、来自blog_评论C的评论、blog_条目E、blogger_信息I,其中E.blogger_id=I.blogger_id和I.blogger_id=C.author_id按E.timestamp排序”;
//String temp=“从blog_条目E、blogger_信息I中选择条目、名称、电子邮件、图像,其中E.blogger_id=I.blogger_id按E.timestamp排序”;
//String temp=“选择条目、名称、电子邮件、图像、来自blogger的评论\u info I加入blog\u条目E ON I.blogger\u id=E.blogger\u id加入blog\u评论C ON I.blogger\u id=C.author\u id其中E.timestamp=C.entry\u t按E.timestamp打印顺序”;
String query=“选择姓名、图像、电子邮件、blogger\u信息I中的条目,blog\u条目E其中I.blogger\u id=E.blogger\u id按E.timestamp排序”;
String query2=“从blogger\u info I、blog\u条目E、blog\u注释C中选择名称、图像、电子邮件、注释,其中I.blogger\u id=C.author\u id和E.timestamp=C.entry\u t按E.timestamp排序”;
rs=stmt.executeQuery(查询);
//rs2=stmt.executeQuery(第二个查询);
//显示记录
int rowCount=0;
int rowCount2=0;
out.println(“”);
ResultSetMetaData rsmetadata=rs.getMetaData();
int columnCount=rsmetadata.getColumnCount();
//表头
out.println(“”);
对于(int i=0;i”);
}
下一行重用第一个查询的语句:
rs2 = stmt.executeQuery(query2);
作为副作用,第一个结果集(rs
)关闭
要解决此问题,需要为内部查询创建单独的语句:
stmt2 = con.createStatement();
..
rs2 = stmt2.executeQuery(query2);
但是,如果您可以将两个查询合并为一个查询,则效率会更高。下一行重用了第一个查询的语句:
rs2 = stmt.executeQuery(query2);
作为副作用,第一个结果集(rs
)关闭
要解决此问题,需要为内部查询创建单独的语句:
stmt2 = con.createStatement();
..
rs2 = stmt2.executeQuery(query2);
但是,如果可以将两个查询合并为一个查询,则效率会更高