2012-05-15 40 views
-3

我在sql中插入了一列,其中的null值來自java.while取回它不與null.i同時使用string.length()進行檢查但是當我在System .OUT。該值顯示爲空(只是空)。當我檢查它與條件它不進入循環。java中的sql檢索值爲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(); 
+8

向我們顯示代碼。 – NPE

+1

把代碼插入並選擇 –

+0

我們不能猜測什麼是問題,直到你告訴我們你是如何實現它 – giorashc

回答

1

你可以嘗試,而不是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"); 
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")) 
+0

@PratapMurukutla:查看更新的答案。 – NPE

1

也許你值不爲空,但 「空」 字符串?在調試中啓動應用程序,放入中斷點並檢查它。