2016-06-28 208 views
0

我检查提交的数据是不是空的,但只是提交(没有数据)它仍然插入数据库中,也使我的列不空,但数据仍然插入。我不知道为什么?空值插入数据库

在我的servlet

try{ 
     String department=request.getParameter("department"); 
     String company=request.getParameter("company"); 
     String place=request.getParameter("place"); 
     boolean checkd=checknull.value(department); 
     boolean checkc=checknull.value(company); 
     boolean checkp=checknull.value(place); 
     if(checkd==true&&checkc==true&&checkp==true) { 
     Connection con=ConnectionProvider.getCon(); 
     String sql="insert into department(departmentname,company,place) values (?,?,?)"; 
     PreparedStatement pstmt =con.prepareStatement(sql); 

     pstmt.setString(1,department); 
     pstmt.setString(2,company); 
     pstmt.setString(3,place); 
     int rs=pstmt.executeUpdate(); 
     if(rs>0){status=true;} 

      if(status){ 
        PrintWriter out= response.getWriter(); 
        out.print("values have been inserted,"+admin); 
        response.sendRedirect("inserted.jsp"); 
         } 
       else 
       { 
        PrintWriter out= response.getWriter(); 
        out.print("failed to insert"); 
        response.sendRedirect("notinsered.jsp"); 
       } 
      } 
     else{response.sendRedirect("entry.jsp");} 
      }catch(SQLException e){} 

这是正在检查

public class checknull { 
static boolean ch;  
public static boolean value(String check) 
{   
    ch = check != null; 
    return ch; 
}  
+1

表单中的值可能为空字符串。 –

+0

我应该如何检查空字符串? –

回答

1

的Java类修改您的checknull类:

public class checknull 
{ 
    // static boolean ch; (You don't need this static variable) 
    public static boolean value(String check) 
    { 
     return check != null && check.length() > 0; 
    } 
} 

此外,它在Java中的约定在UpperCase有类名。

public class CheckNull 

编辑: 作为建议的Erwin Bolwidt,它很可能是被这里使用的数据库是Oracle,因为甲骨文相当于空字符串和空值。

因此,此答案仅适用于将空字符串视为空值(例如Oracle)的数据库。

请参阅:null-vs-empty-string-in-oracle

+0

为什么他应该包含字符串长度检查?这会如何影响数据库中的空值? –

+0

空值不会进入数据库,空字符串是。 –

+1

如果他像他说的那样得到空白,并且在他将空字符串放入时发生,那么他必须使用Oracle。我认为这是唯一一个将它们等同起来的数据库。这也意味着您的答案仅适用于Oracle。这可能有助于为未来的读者添加。 –