0

我的java代码是

String d="";
BasicDBObject dateq = null;
try {
    con.selectDB("test", "logData");

    dateq = new BasicDBObject("user_name", txtu);

    DBCursor searchDate = con.coll.find(dateq);
    //System.out.println(" "+ searchDate.next().get("login_date"));

    d=(String) searchDate.next().get("login_date");
    System.out.println("ddddddddddd"+d);
} catch (Exception e) {
    System.out.println("First time login");
}
System.out.println("login date" );
if (d == "") {
      BasicDBObject log = new BasicDBObject();
      log.put("user_name", txtu);

在上面的代码中,值为dnull。当我将其声明为

String d=(String) searchDate.next().get("login_date"); 

它给出了正确的日期,但在 catch 之外无法访问。我无法验证条件if(d=="")。任何帮助

4

4 回答 4

0

由于您已在 try catch 块之外声明了变量“d”,因此您不可能无法访问该块之外的变量“d”。您能否尝试在块外打印 d 的值,并让我们知道您收到的确切错误/异常消息。看起来您假设变量“d”在外部无法访问,详细的问题或异常消息将有助于为您的查询提供非常具体的解决方案。

于 2013-07-29T07:09:37.803 回答
0

您的变量 d 也应该可以在块外访问。但是您的代码中还有其他问题。您对字符串使用了错误的比较运算符。使用等于而不是 == 进行字符串比较。这是您的代码中的问题:

if (d == "")

将其更改为:

if ("".equals(d))

另一个合乎逻辑的问题是在您的代码中:

        d=(String) searchDate.next().get("login_date");

您的searchDate方法可能返回 null,因此您的变量d将设置为 null。但是您的 d null 检查比较实际上是错误的:

if (d == "")

应该

if (d == NULL)
于 2013-07-29T06:50:26.710 回答
0

当您尝试使用 的代码时String d = "";,该语句是否被System.out.println(" "+ searchDate.next().get("login_date"));注释掉了?

如果它没有被注释掉,那么您将调用两次,这将消耗第一个(有效)条目,当代码尝试设置时next(),可能会留下第二次调用。nulld

再次尝试代码块,确保该System.out ...语句已被注释掉(如现在所示) - 这应该可以工作。

编辑
正如 Juned 所建议的,您还应该更改检查字符串的方式。

if (d == null || "".equals(d))
于 2013-07-29T07:00:27.133 回答
0

替换if (d == "")if (d.length()==0)if (d.equals(""))

于 2013-07-29T07:04:13.447 回答