我收到此错误java.sql.SQLException:子查询返回超过1行

时间:2015-11-06 05:10:50

标签: java mysql

我有两个表1.users表(列:branch_id)和2.branches表(列:branch_id,branch_name)。

在我的表单中,我有一个分支字段,它是选择字段。在该选择字段中,我需要从分支表中获取具有列分支名称的值。我做了那个功能。

现在我的要求是,在数据库中我需要在基于该branch_name的branches表中的users表中插入brach_id,

这是我的查询功能

 String query = "insert into users(full_name,gender,mobile_number,"
            + "email,password,department,designation,emp_code,branch_id,created_on,created_by,last_logged_on) "
            + "values(?,?,?,?,?,?,?,?,"
            + "(select id from branches where branch_name=?),?,?,?)";
    if(con!=null){
        try{
         ps=con.prepareStatement(query);
         ps.setString(1, bean.getName());
         if(bean.getGender().equals("Female")){
             ps.setInt(2,1);
         }else{
             ps.setInt(2,0);
         }
         ps.setString(3, bean.getMobile());
         ps.setString(4, bean.getUserid());
         ps.setString(5, bean.getPassword());
         ps.setString(6, bean.getDepartment());
         ps.setString(7, bean.getDesignation());
         ps.setString(8, bean.getEmpcode());
         ps.setInt(9, bean.getBranchId());
         ps.setTimestamp(10, new java.sql.Timestamp(new Date().getTime()));
         ps.setInt(11, bean.getCreatedBy());
         ps.setTimestamp(12, new java.sql.Timestamp(new Date().getTime()));
         insert_flag=ps.executeUpdate();

我认为查询工作正常。在准备好的陈述中我得到的错误我不这么认为。

任何人都可以帮助我。

如果我像这样传递brach_name

选择查询中的

select id from branches where branch_name='"+branch+"'我收到此错误`java.sql.SQLException:参数索引超出范围(12>参数个数,即11)。

请帮帮我

2 个答案:

答案 0 :(得分:3)

此查询branch_name返回多个double dbl_values[18]; for(int i = 0; i < 18; i++) { dbl_values[i] = something; // Define variables here } 值的结果。您在分支表中有重复的分支名称。

答案 1 :(得分:0)

实际上你在这里插入单行并尝试在column_id列中插入多行,因此得到错误。只需在下面更改插入语句,然后尝试 -

 String query = "insert into users(full_name,gender,mobile_number,"
            + "email,password,department,designation,emp_code,branch_id,created_on,created_by,last_logged_on) "
            + "values(?,?,?,?,?,?,?,?,"
            + "(select id from branches where branch_name=? limit 1),?,?,?)";