【问题标题】:sql retrieval value in java is nulljava中的sql检索值为null
【发布时间】:2012-05-23 00:11:35
【问题描述】:

我在 sql 中插入了一列,其中包含来自 java 的 null 值。在检索时它不适用于 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();

【问题讨论】:

  • 向我们展示代码。
  • 把插入的代码放上并选择
  • 在您向我们展示您是如何实现的之前,我们无法猜测问题出在哪里
  • 我会用代码更新我的问题。
  • 试试这个stackoverflow.com/questions/802612/… 或向我们展示代码

标签: java mysql


【解决方案1】:

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

edit 在查看了代码后,这正是发生的情况。以gender为例:

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

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

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

最后,以下是坏的:

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

这应该是

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

【讨论】:

    【解决方案2】:

    您可以尝试使用“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");
    

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 2013-08-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-09-23
        • 2011-10-17
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多