Connection con = null;
try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
String URL = "jdbc:sqlserver://localhost:1433;DatabaseName=shop";
String user = "sa";
String password = "123";
con = DriverManager.getConnection(URL, user, password);
}
catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if (con != null) {
System.out.println("数据库连接成功!");
} else {
System.out.println("数据库连接失败!");
}
String SQL = "select * from goods;";
Statement smt = null;
ResultSet rs = null;
try{
smt = con.createStatement();
rs = smt.executeQuery(SQL);
为什么连接上了数据库,直接查询这个语句没问题,但是执行rs = smt.executeQuery(SQL);这句时总是报如下异常。。
com.microsoft.sqlserver.jdbc.SQLServerException: 结果集没有当前行。
at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(SQLServerException.java:190)
at com.microsoft.sqlserver.jdbc.SQLServerResultSet.verifyResultSetHasCurrentRow(SQLServerResultSet.java:483)
at com.microsoft.sqlserver.jdbc.SQLServerResultSet.getterGetColumn(SQLServerResultSet.java:2047)
at com.microsoft.sqlserver.jdbc.SQLServerResultSet.getValue(SQLServerResultSet.java:2082)
at com.microsoft.sqlserver.jdbc.SQLServerResultSet.getValue(SQLServerResultSet.java:2067)
at com.microsoft.sqlserver.jdbc.SQLServerResultSet.getString(SQLServerResultSet.java:2401)
at org.apache.jsp.index_jsp._jspService(index_jsp.java:135)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:88)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:225)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:999)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:565)
at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:1812)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:619)
try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
String URL = "jdbc:sqlserver://localhost:1433;DatabaseName=shop";
String user = "sa";
String password = "123";
con = DriverManager.getConnection(URL, user, password);
}
catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if (con != null) {
System.out.println("数据库连接成功!");
} else {
System.out.println("数据库连接失败!");
}
String SQL = "select * from goods;";
Statement smt = null;
ResultSet rs = null;
try{
smt = con.createStatement();
rs = smt.executeQuery(SQL);
为什么连接上了数据库,直接查询这个语句没问题,但是执行rs = smt.executeQuery(SQL);这句时总是报如下异常。。
com.microsoft.sqlserver.jdbc.SQLServerException: 结果集没有当前行。
at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(SQLServerException.java:190)
at com.microsoft.sqlserver.jdbc.SQLServerResultSet.verifyResultSetHasCurrentRow(SQLServerResultSet.java:483)
at com.microsoft.sqlserver.jdbc.SQLServerResultSet.getterGetColumn(SQLServerResultSet.java:2047)
at com.microsoft.sqlserver.jdbc.SQLServerResultSet.getValue(SQLServerResultSet.java:2082)
at com.microsoft.sqlserver.jdbc.SQLServerResultSet.getValue(SQLServerResultSet.java:2067)
at com.microsoft.sqlserver.jdbc.SQLServerResultSet.getString(SQLServerResultSet.java:2401)
at org.apache.jsp.index_jsp._jspService(index_jsp.java:135)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:88)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:225)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:999)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:565)
at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:1812)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:619)
将后面的分号去掉就好了
String SQL = "select * from goods";
应该是这个样子
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
System.out.println("加载数据库驱动成功");
con = DriverManager.getConnection(URL, user, password);
System.out.println("连接数据库成功");
smt = con.createStatement();
System.out.println("查询成功");
rs = smt.executeQuery(SQL);
System.out.println("返回结果集成功");
出现NullPointerException,一般就是smt为null,继续往上检查,按楼上说的方法找出问题所在的那句
还有要获取查询的内容,rs.hasNext()的判断条件不能少
嗯。sql语句不需要;
如果不需要,SQL以什么表示命令的结尾呢,难道一次只能执行一句话?
嗯。sql语句不需要;
如果不需要,SQL以什么表示命令的结尾呢,难道一次只能执行一句话?的确,一次执行一句。多个SQL可以用存储过程
楼主的问题应该还不是在这里
不是null了、、所有的对象都测试了。。不是null..但是报错了。、。Connection con = null;
try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
String URL = "jdbc:sqlserver://localhost:1433;DatabaseName=shop";
String user = "sa";
String password = "123";
con = DriverManager.getConnection(URL, user, password);
}
catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if (con != null) {
System.out.println("数据库连接成功!");
} else {
System.out.println("数据库连接失败!");
}
String SQL = "select * from goods,type where type.typeID=goods.typeID and typeName='水果'";
PreparedStatement smt=null ;
ResultSet rs=null ;
try{
smt = con.prepareStatement(SQL);
if(smt==null)
{
System.out.println("fds!");
}
else
{
System.out.println("fdsfdsdf");
}
rs = smt.executeQuery();
if(rs==null)
{
System.out.println("贝多芬!");
}
else
{
System.out.println("发个!");
}
String name=null;
float price=0.1f;
String typename=null;
// beansearchs.add(new GoodsBean(name,price,typename));
while(rs.next())
{
name=rs.getString("goodsName");
price=rs.getFloat("price");
typename="123";
beansearchs.add(new GoodsBean(name,price,typename));
}
return SUCCESS;
// }2013-5-30 18:30:05 org.apache.jasper.compiler.TldLocationsCache tldScanJar
信息: At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.
数据库连接成功!
fdsfdsdf
发个!