【问题标题】:data missing only in a single column after updating mysql table更新mysql表后仅在单个列中丢失数据
【发布时间】:2020-05-11 10:24:45
【问题描述】:

我是 jsp servlet 的新手。我正在用 eclipse 和 mysql 做一个 jsp、servlet CRUD 项目。插入、删除操作都可以,但是当我更新员工表的一行数据时,userName 列的数据丢失了。它仅在更新列时发生。我尝试手动更新 userName 列但没有成功。这是插入和更新完成后的图像。

inserting a new row

updating the first name as "Alan"

更新查询

public static int update(Emp m){
int status=0;
try{
    Connection con=getConnection();
    PreparedStatement ps=con.prepareStatement("update employee set fname=?,lname=?,userName=?,passwrd=?,age=?,gender=?,address=?,contactNo=?,email=?,jobType=?,department=?,qualifics=?,salary=?,hireDate=? where id=?");
    ps.setString(1,m.getFname());
    ps.setString(2,m.getLname());
    ps.setString(3,m.getUserName());
    ps.setString(4,m.getPasswrd());
    ps.setInt(5,m.getAge());
    ps.setString(6,m.getGender());
    ps.setString(7,m.getAddress());
    ps.setString(8,m.getContactNo());
    ps.setString(9,m.getEmail());
    ps.setString(10,m.getJobType());
    ps.setString(11,m.getDepartment());
    ps.setString(12,m.getQualifics());
    ps.setDouble(13,m.getSalary());
    ps.setString(14,m.getHireDate());
    ps.setInt(15,m.getId());

    status=ps.executeUpdate();
}catch(Exception e){
    System.out.println(e);
    }

return status;}

从数据库中检索数据

public static List<Emp> getAllRecords(){
List<Emp> list=new ArrayList<Emp>();

try{
    Connection con=getConnection();
    PreparedStatement ps=con.prepareStatement("select * from employee");
    ResultSet rs=ps.executeQuery();
    while(rs.next()){
        Emp m=new Emp();
        m.setId(rs.getInt("id"));
        m.setFname(rs.getString("fname"));
        m.setLname(rs.getString("lname"));
        m.setUserName(rs.getString("userName"));
        m.setPasswrd(rs.getString("passwrd"));
        m.setAge(rs.getInt("age"));
        m.setGender(rs.getString("gender"));
        m.setAddress(rs.getString("address"));
        m.setContactNo(rs.getString("contactNo"));
        m.setEmail(rs.getString("email"));
        m.setJobType(rs.getString("jobType"));
        m.setDepartment(rs.getString("department"));
        m.setQualifics(rs.getString("qualifics"));
        m.setSalary(rs.getDouble("salary"));
        m.setHireDate(rs.getString("hireDate"));

        list.add(m);
    }
}catch(Exception e){
    System.out.println(e);
    }
return list;}

通过id获取数据

public static Emp getRecordById(int id){
Emp m=null;
try{
    Connection con=getConnection();
    PreparedStatement ps=con.prepareStatement("select * from employee where id=?");
    ps.setInt(1,id);
    ResultSet rs=ps.executeQuery();
    while(rs.next()){
        m=new Emp();
        m.setId(rs.getInt("id"));
        m.setFname(rs.getString("fname"));
        m.setLname(rs.getString("lname"));
        m.setUserName(rs.getString("userName"));
        m.setPasswrd(rs.getString("passwrd"));
        m.setAge(rs.getInt("age"));
        m.setGender(rs.getString("gender"));
        m.setAddress(rs.getString("address"));
        m.setContactNo(rs.getString("contactNo"));
        m.setEmail(rs.getString("email"));
        m.setJobType(rs.getString("jobType"));
        m.setDepartment(rs.getString("department"));
        m.setQualifics(rs.getString("qualifics"));
        m.setSalary(rs.getDouble("salary"));
        m.setHireDate(rs.getString("hireDate"));
    }
}catch(Exception e){
    System.out.println(e);
    }

return m;}

viewtable.jsp 的图像

import Empdb.java

table headers

get table data

我该怎么办? 非常感谢您提供的任何帮助,并感谢您宝贵的时间。

【问题讨论】:

  • 更新记录后是否再次获取列表。或在更新后刷新员工列表页面。
  • 编辑用户表单的动作设置为viewusers.jsp(表)。这是编辑表单prnt.sc/setc3t 的屏幕截图 更新记录后,表格再次显示更新数据。其他列正在正常更新。我对这个项目没有任何其他问题。只有 userName 列有我找不到的问题,我创建了一个新项目并将所有文件复制/粘贴到其中,但问题仍然存在。感谢您的帮助。
  • 你能在 git 上分享代码吗?
  • 我把它上传到了谷歌驱动器。这是链接drive.google.com/file/d/1tBotKL5BjG609O58aefkEgNYHQ52U8Tt/…

标签: mysql jsp servlets missing-data


【解决方案1】:

我已经检查了您的代码,并找到了导致问题的问题。

在你的 editform.jsp 中:- 你写了这个“userNname”,这是磨损的

User Name:<input type="text" name="userNname" value="<%= m.getUserName()%>"/>

使用这个:(它搜索相同的名称)

User Name:<input type="text" name="userName" value="<%= m.getUserName()%>"/>

把“userNname”改成“userName”,就可以了。谢谢

【讨论】:

  • 成功了!谢谢!。很抱歉因为一个小错误浪费了您宝贵的时间。
猜你喜欢
  • 1970-01-01
  • 2018-08-09
  • 1970-01-01
  • 2013-03-14
  • 2014-02-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-01
相关资源
最近更新 更多