gpt4 book ai didi

java - 如何保存不同类型的藏品?

转载 作者:行者123 更新时间:2023-12-01 16:33:32 24 4
gpt4 key购买 nike

我正在编写包装 db SELECT 语句的方法,该方法接收 SQL 查询并运行它。结果收集在Object[][]中。数据库中的每个单元格都可以是整数或字符串。

我的返回数组有问题。它是 Object[][],所以我的类型松散了。

public Object[][] select(String query) {
Object[][] result = new Object[cursor.getCount()][cursor.getColumnCount()];
Cursor cursor = db.rawQuery(query, null);

//Iterate over cursor (rows)
do {
//Iterate over columns (cells with data of different type)
for(int columnIndex = 0; columnIndex < cursor.getColumnCount(); columnIndex++) {
int type = cursor.getType(columnIndex);

//assume, that there are only two types - String or Integer (actualy there are 3 more types)
if(type == Cursor.FIELD_TYPE_INTEGER) {
result[cursor.getPosition()][columnIndex] = cursor.getInt(columnIndex);
}
else if(type == Cursor.FIELD_TYPE_STRING) {
result[cursor.getPosition()][columnIndex] = cursor.getString(columnIndex);
}
}
} while (cursor.moveToNext());

return result;
}

我不想松散的类型。例如。希望能够这样做(伪代码):

//pseudocode:
result = select("SELECT age, name FROM people")
print( "Hello, " + result[0][0] + ". In ten years you'll be " )
print( result[0][0] + 10 )
//Prints: Hello, John. In ten years you'll be 56

每本关于 Java 的书都说,我不能有不同类型的数组。很清楚。

但是我应该如何保存数据库中的所有这些整数和字符串?我尝试使用集合和泛型,但没有运气 - Java 新手。

还尝试使用某种结果值持有者:

private class Result {
private Class type;
private Object value;

...

public ??? get() { //??? - int or string - here I have some problems :)
return this.type.cast(this.value);
}

//do NOT want to have these:
public int getInt() { return (int) value; }
public int getString() { return (String) value; }
}

在这种情况下,方法 select(...) 返回 Result[][]

我自己回答:明白了,我正在尝试像在 php 中那样用 Java 编写代码。对于强类型,我无法创建简单的方法,在没有显式转换的情况下返回所有类型。

毕竟我决定创建通用数据对象并在选择时填充它们。

最佳答案

为什么不创建一个 Result 类来包装您想要的任何内容并实例化它?

关于java - 如何保存不同类型的藏品?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11871541/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com