cst00000 2015-04-10 07:08 采纳率: 0%
浏览 3471

java连接MYSQL数据库第一次可以,第二次报错

做项目在做一个用户首次登陆输入手机号码,发送随机密码的功能模块,首次点击完全没问题,系统会发送短信(中国移动的短信机的原理是连接它的数据库,插入一条数据即可)问题就出在连接数据库的问题上,再次发送,则后台报错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,然后又可以登录一次,第二次也无法连接了。 找了好久都没发现原因,希望大家帮帮忙 ,谢谢了!

  • 写回答

1条回答 默认 最新

  • 从未有过 2015-04-10 07:24
    关注

    这个问题位置很精确了,就是你第二次发送的时候执行update语句时参数是空的,你打个断点在哪里在进行调试,看下是什么原因造成参数是空的

    评论

报告相同问题?

悬赏问题

  • ¥15 c程序不知道为什么得不到结果
  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置