我在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();
答案 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");