java中的sql检索值为null

时间:2012-05-15 13:13:07

标签: java mysql

我在sql中插入了一个列,其中包含来自java的null值。虽然检索回来但它无法使用null.i也检查了string.length()。但是当我在System.out中打印该值时。该值显示为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"')";

在检索中

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();

3 个答案:

答案 0 :(得分:2)

根据您对问题的一些含糊描述,我怀疑您可能已插入字符串"null"而不是SQL NULL值。两者不一样(实际上非​​常不同)。

编辑审核完代码后,情况正是如此。举个例子,gender

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

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

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

最后,以下内容被打破:

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

这应该是

if(!gender.equals("male") && !gender.equals("female"))

答案 1 :(得分:1)

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

答案 2 :(得分: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");