做项目在做一个用户首次登陆输入手机号码,发送随机密码的功能模块,首次点击完全没问题,系统会发送短信(中国移动的短信机的原理是连接它的数据库,插入一条数据即可)问题就出在连接数据库的问题上,再次发送,则后台报错ResultSet is from UPDATE. No Data.。
报错信息如下
严重: Exception occurred during processing request: ResultSet is from UPDATE. No Data.
java.sql.SQLException: ResultSet is from UPDATE. No Data.
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1073)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:987)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:982)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:927)
at com.mysql.jdbc.ResultSetImpl.next(ResultSetImpl.java:7152)
at com.mysql.jdbc.ConnectionImpl.loadServerVariables(ConnectionImpl.java:3867)
at com.mysql.jdbc.ConnectionImpl.initializePropsFromServer(ConnectionImpl.java:3404)
at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2385)
at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2154)
at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:792)
at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:47)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:381)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:305)
at java.sql.DriverManager.getConnection(DriverManager.java:582)
at java.sql.DriverManager.getConnection(DriverManager.java:185)
at DAO.dbconnection2.<init>(dbconnection2.java:16)
at action.testsendaction.execute(testsendaction.java:38)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
dbconnection2.java 是创建连接,代码如下:
package DAO;
import java.sql.Connection;
import java.sql.DriverManager;
public class dbconnection2 {
private static final String DRIVER = "com.mysql.jdbc.Driver";
private static final String URL = "jdbc:mysql://*******:3306/mas?useUnicode=true&characterEncoding=gb2312";
private static final String USER = "ywz";
private static final String PASSWORD = "yw690";
private Connection con;
public dbconnection2() throws Exception{
Class.forName(DRIVER);
this.con = DriverManager.getConnection(URL, USER, PASSWORD);
}
public Connection getConnection()
{
return this.con;
}
public void closecon() throws Exception
{
if(this.con != null)
{
try
{
this.con.close();
}
catch(Exception e)
{
throw e;
}
}
}
}
action代码:
public class testsendaction extends ActionSupport{
private String list;
public String getList() {
return list;
}
public void setList(String list) {
this.list = list;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
private String content;
public String execute() throws Exception{
dbconnection2 dbc2 = new dbconnection2();
Statement s1 = dbc2.getConnection().createStatement();
Random ran = new Random();
String pwd = "";
for(int i=0;i<6;i++)
{
pwd += ran.nextInt(10)+"";
}
System.out.println("ranpwd="+pwd);
String mess = "本信息来自工资查询系统,用于用户的首次登陆,登陆密码为:"+pwd+" ,登陆成功后,请自行修改密码。";
String send = "insert into api_mt_6(mobiles,content) values('"+list+"','"+mess+"')";
s1.executeUpdate(send);
System.out.println("send:"+send);
s1.close();
dbc2.closecon();
return SUCCESS;
}
}
报错是在数据库连接的new语句上。 连接最后也有关闭。但是就是不能进行二次访问数据库。只能重启下tomcat,然后又可以登录一次,第二次也无法连接了。 找了好久都没发现原因,希望大家帮帮忙 ,谢谢了!