Java 如果使用SQLite只返回一行,是否需要一个循环?(安卓开发)
我一直在使用下面的方法使用for循环,但我突然想到我只返回一行,所以有必要使用循环吗 i、 e我的代码类似于:Java 如果使用SQLite只返回一行,是否需要一个循环?(安卓开发),java,android,Java,Android,我一直在使用下面的方法使用for循环,但我突然想到我只返回一行,所以有必要使用循环吗 i、 e我的代码类似于: public String topSwimmerSponsor() { Cursor c = ourDatabase.rawQuery("SELECT " + KEY_SWIMMERLAPS + " * " + KEY_SPONSOR + " AS result, " + KEY_NAME + " FROM " + DATABAS
public String topSwimmerSponsor() {
Cursor c = ourDatabase.rawQuery("SELECT " + KEY_SWIMMERLAPS + " * "
+ KEY_SPONSOR + " AS result, " + KEY_NAME + " FROM "
+ DATABASE_TABLE + " ORDER BY result DESC limit 1", null);
String result = "";
for (c.moveToFirst(); !c.isAfterLast(); c.moveToNext()) {
result = result + c.getString(1) + "\n";
}
return result;
}
但是,我试图将其更改为以下内容:
public String topSwimmerSponsor() {
Cursor c = ourDatabase.rawQuery("SELECT " + KEY_SWIMMERLAPS + " * "
+ KEY_SPONSOR + " AS result, " + KEY_NAME + " FROM "
+ DATABASE_TABLE + " ORDER BY result DESC limit 1", null);
String result = "";
result = result + c.getString(1) + "\n";
return result;
}
但是我的应用程序崩溃了。正确的方法是什么?谢谢 如果您只希望得到一个结果,可以使用以下方法:
if(c.moveToFirst())
return c.getString(1) + "\n";
如果您只希望得到一个结果,可以使用以下方法:
if(c.moveToFirst())
return c.getString(1) + "\n";
您仍应移动到第一个位置并检查是否有行:
if (c.moveToFirst()) {
result = c.getString(1) + "\n";
}
此外,在循环中使用字符串连接是一个非常糟糕的主意,尤其是在android环境中,因为它会创建大量临时StringBuilder和字符串对象,这些对象必须进行分配和垃圾收集。您应该使用StringBuilder:
StringBuilder builder = new StringBuilder();
for (...) {
builder.append(...);
builder.append(...);
}
String result = builder.toString();
您仍应移动到第一个位置并检查是否有行:
if (c.moveToFirst()) {
result = c.getString(1) + "\n";
}
此外,在循环中使用字符串连接是一个非常糟糕的主意,尤其是在android环境中,因为它会创建大量临时StringBuilder和字符串对象,这些对象必须进行分配和垃圾收集。您应该使用StringBuilder:
StringBuilder builder = new StringBuilder();
for (...) {
builder.append(...);
builder.append(...);
}
String result = builder.toString();
我得到一个错误,它说该方法必须返回字符串类型。如果(c.moveToFirst())返回c.getString(1)+“\n”;否则返回“”;put
返回null代码>在方法的末尾。我得到一个错误,它说该方法必须返回字符串类型。如果(c.moveToFirst())返回c.getString(1)+“\n”;否则返回“”;put返回null代码>在方法末尾。+1-有关StringBuilder和字符串对象分配的详细信息+1-有关StringBuilder和字符串对象分配的详细信息