java.sql.SQLException: No data found at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7060) at sun.jdbc.odbc.JdbcOdbc.SQLGetDataString(JdbcOdbc.java:3862) at sun.jdbc.odbc.JdbcOdbcResultSet.getDataString(JdbcOdbcResultSet.java: 5561) at sun.jdbc.odbc.JdbcOdbcResultSet.getString(JdbcOdbcResultSet.java:338) at sun.jdbc.odbc.JdbcOdbcResultSet.getString(JdbcOdbcResultSet.java:395) at cstr.findWord(word.java:157) at cstr.getNext(word.java:131) at cstr.wordedit(word.java:111) at word.service(word.java:30) at javax.servlet.http.HttpServlet.service(HttpServlet.java:853) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl icationFilterChain.java:247) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF ilterChain.java:193) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperV alve.java:243) at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline .java:566) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.jav a:472) at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
没仔细推敲,但基本语法有问题class a{ string x = null; string y = null; }class b{ a tt[] = new a[10](); for(int i=0;i<10;i++){ tt[i] = new a(); }//**********************************************这个for写到构造方法里去吧 public boolean test(string s){ String sql = "Select * from KeyWord as wt where wt.name='"+s+"'"; ResultSet rs = tcon.executeQuery(sql); try{ //*********************************************从这里开始捕获异常 while(rs.next()) { //************************************这里开始循环 tt[0].x = rs.getString("name"); tt[0].y = rs.getString("type"); } //***************************这里结束循环 //***************************caych()前面的 } 哪里去了? catch(Exception e) { // e.printStackTrace(); } } } }
at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7060)
at sun.jdbc.odbc.JdbcOdbc.SQLGetDataString(JdbcOdbc.java:3862)
at sun.jdbc.odbc.JdbcOdbcResultSet.getDataString(JdbcOdbcResultSet.java:
5561)
at sun.jdbc.odbc.JdbcOdbcResultSet.getString(JdbcOdbcResultSet.java:338) at sun.jdbc.odbc.JdbcOdbcResultSet.getString(JdbcOdbcResultSet.java:395) at cstr.findWord(word.java:157)
at cstr.getNext(word.java:131)
at cstr.wordedit(word.java:111)
at word.service(word.java:30)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl
icationFilterChain.java:247)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF
ilterChain.java:193)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperV
alve.java:243)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline
.java:566)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.jav
a:472)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
string x = null;
string y = null;
}class b{
a tt[] = new a[10]();
for(int i=0;i<10;i++){
tt[i] = new a();
}//**********************************************这个for写到构造方法里去吧
public boolean test(string s){
String sql = "Select * from KeyWord as wt where wt.name='"+s+"'";
ResultSet rs = tcon.executeQuery(sql);
try{
//*********************************************从这里开始捕获异常
while(rs.next())
{
//************************************这里开始循环
tt[0].x = rs.getString("name");
tt[0].y = rs.getString("type");
}
//***************************这里结束循环
//***************************caych()前面的 } 哪里去了?
catch(Exception e)
{
// e.printStackTrace();
} }
}
}
你是否只想要一条记录,为什么定义10个a对象,不用循环改用if不就行了.
抱歉,class A 的public我是加了的...
但问题不是这个...我感觉问题还是在
tt[0].x = rs.getString("name");
tt[0].y = rs.getString("type");
因为把他们标注掉之后就正常了,很奇怪
{
// tt[count].word = rs.getString("name");
// tt[count].type = rs.getString("type");
// tt[count].def = rs.getString("def");
// tt[count].belong = rs.getString("belong");
tt[count].list = "KeyWord";
System.out.println(rs.getString("name"));
System.out.println(rs.getString("type"));
System.out.println(rs.getString("def"));
rowcount++;
this.count++;
return true;
}
我把while里面的函数现在改成这个了,是正常运行的..而且结果正确.
但如果把那些标注去掉任何一个,就错误...
java.sql.SQLException: No data found
at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7060)
估计是rs没有取到应有的值
rs = null;
try{
connect = DriverManager.getConnection(sConnStr);
Statement stmt = connect.createStatement();
rs = stmt.executeQuery(sql);
}
catch(SQLException ex){
System.out.println("err1");
// System.err.println(ex.getMessage());
}
return rs;
}
rs在stmt.executeQuery(sql);里面不可能返回是null的啊
System.out.println(rs.getString("name"));之类的都正确的啊...
if(rs==nulll)
System.out.println("rs null");
System.out.println(rs.getString("name"));
while(rs.next())
里面的,你看我上面有个帖子
tt[0].y = new String(rs.getString("type"));
tt[0].y = rs.getString("type");
这里肯定不对呀
tt[0].y = new String(rs.getString("type"));
好像可以....了.....这样真的没问题吗?另外问一下,假如我的rs.getString("type")里面有空值,应该怎么判断?
用
rs.getString("type")==null?
好像不行...