用机器改变生活 2022-12-21 21:46 采纳率: 100%
浏览 30
已结题

关于#mysql#的问题:n = pstm.executeUpdate()

######后台成功添加数据,但是数据库信息没有显示

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package edu.sdp.dao;

import edu.sdp.model.Readers;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 * 读者的数据访问层代码,实现对读者数据的增删改查
 *
 * @author Administrator
 */
public class ReadersDao {

    private Connection conn;
    private PreparedStatement pstm;
    private ResultSet rs;
    private String url = "jdbc:mysql://localhost:3306/SDPLibraryData?useUnicode=true&characterEncoding=utf-8";
    private String user = "root";
    private String password = "root";

    public ReadersDao() {
        try {
            //初始化数据库连接对象conn
            conn = DriverManager.getConnection(url, user, password);
        } catch (SQLException ex) {
            Logger.getLogger(ReadersDao.class.getName()).log(Level.SEVERE, null, ex);
        }

    }

    public int add(Readers model) {
        int n = -1;

        try {

            //数据库连接对象,正常是支持自动提交的,如果想启动事物,需要关闭它
            conn.setAutoCommit(false);

            String sql = "insert into Concats "
                    + "(RealName,Sex,Birthday,Mobile,Address,StateId)"
                    + " values "
                    + "(?,?,?,?,?,?)";
            pstm = conn.prepareStatement(sql, PreparedStatement.RETURN_GENERATED_KEYS);
            //参数化数据
            pstm.setString(1, model.getRealName());
            pstm.setString(2, model.getSex());
            pstm.setDate(3, model.getBirthday());
            pstm.setString(4, model.getMobile());
            pstm.setString(5, model.getAddress());
            pstm.setInt(6, model.getStateId());
            //执行SQL语句并获取影响行数
            n = pstm.executeUpdate();
            if (n > 0) {

                //获取刚刚插入的记录的主键--begin
                int concatId = -1;
                ResultSet rs = pstm.getGeneratedKeys();
                if (rs.next()) {
                    concatId = rs.getInt(1);
                }
                System.out.println("联系人编号:" + concatId);
                rs.close();
                //获取刚刚插入的记录的主键---end

                sql = "insert into Readers "
                        + "(ReaderNumber,ConcatId,BorrowNumber,BorrowDays,StateId)"
                        + " values "
                        + "(?,?,?,?,?)";
                pstm = conn.prepareStatement(sql);
                //参数化数据
                pstm.setString(1, model.getReaderNumber());
                pstm.setInt(2, concatId);
                pstm.setInt(3, model.getBorrowNumber());
                pstm.setInt(4, model.getBorrowDays());
                pstm.setInt(5, model.getStateId());
                n = pstm.executeUpdate();
               conn.commit();//手动提交(结束事物)
              
            } else {
                System.out.println("基本信息新增失败!");
                conn.rollback();//回滚事务
            }
          
            pstm.close();
            conn.close();

        } catch (SQLException ex) {
            Logger.getLogger(ReadersDao.class.getName()).log(Level.SEVERE, null, ex);
        }

        return n;
    }

}


运行结果及详细报错内容

数据添加成功,但是没有在数据库中显示

  • 写回答

2条回答 默认 最新

  • 一头小山猪 一头小山猪(个人IP)官方账号 2022-12-22 19:56
    关注

    如果n大于0,那么数据库中确实是修改成功了的。
    看到你的程序中有两个插入操作,可以先检查下两次返回的n是否都大于0,如果是,那就可能只是在检查数据时有一些问题,比如使用界面化工具查看数据表的时候没有进行刷新,可以使用sql查询直接检验。如果有帮助请采纳~

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 1月2日
  • 已采纳回答 12月25日
  • 创建了问题 12月21日

悬赏问题

  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 unity第一人称射击小游戏,有demo,在原脚本的基础上进行修改以达到要求
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?
  • ¥15 加热介质是液体,换热器壳侧导热系数和总的导热系数怎么算
  • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
  • ¥15 cmd cl 0x000007b
  • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line