-3

我在 sql 中插入了一列,其中包含来自 java 的空值。在检索时它不适用于 null。我还检查了 string.length()。但是当我在 System.out 中打印值时。该值显示为空(只是空)。当我用条件检查它时,它没有进入循环。

String id ="1234"; 
            String name="pratap";
            String gender=null;
            String email=null;
String service="GOOGLE";
        log.info(id+name+gender+email) //output is 1234pratapnullnull   

String insert = "INSERT INTO oauthuser VALUES('"+id+"','"+name+"','"+gender+"','"+email+"','"+service"')";

在检索中

query ="Select * FROM oauthuser where id="+"'"+id+"'";
Class.forName("com.mysql.jdbc.Driver");
Connection con = DriverManager.getConnection (dbUrl);
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery(query);
  while(rs.next())
  {
 id=rs.getString(1);
 name=rs.getString(2);
 gender=rs.getString(3);
 email=rs.getString(4);
service_provider_name=rs.getString(5);
System.out.println(gender+email+name);//output is nullnullpratap

  } 

if(gender!="male" && gender!="female")
 System.out.println("it is printing");
  if(gender==null)
      System.out.println("it is not printing");
con.close();
4

3 回答 3

2

从您对问题的有点神秘的描述中,我怀疑您可能插入了字符串"null"而不是 SQLNULL值。两者并不相同(实际上非​​常不同)。

编辑审查了代码后,这正是发生的事情。举个例子gender

String gender = null;
...'"+gender+"',...

以上将其转换为'null'(即 SQL 字符串"null"),并将其插入到数据库中。

我的基本建议是阅读PreparedStatement并使用它,而不是像现在这样一点一点地构建 SQL 查询。

最后,以下内容被打破:

if(gender!="male" && gender!="female")

这应该是

if(!gender.equals("male") && !gender.equals("female"))
于 2012-05-15T13:14:41.600 回答
1

也许您的值不是空值而是“空”字符串?在调试中启动您的应用程序,放置断点并检查它。

于 2012-05-15T13:16:06.603 回答
1

您可以尝试 "null" 而不是 NULL ,但最好向我们展示代码

更新后

像这样从您的查询中删除 + 号

String id ="1234"; 
            String name="pratap";
            String gender="null";
            String email="null";
String service="GOOGLE";
        log.info(id+name+gender+email) //output is 1234pratapnullnull   

String insert = "INSERT INTO oauthuser VALUES('"id"','"name"','"gender"','"email"','"service"')"

当你选择时,像这样修改

if(gender.equals("null"))
      System.out.println("it is not printing");
于 2012-05-15T13:17:12.880 回答