我创建了这个代码段:
public static String[] get_data()
{
conn = getInstance();
String[] data_array = null;
if(conn != null)
{
Statement query;
try
{
query = conn.createStatement();
String sql = "SELECT data_x FROM table_x";
ResultSet result = query.executeQuery(sql);
result.next();
int count = result.getInt("data_x");
result.close();
data_x_array = new String[count];
for (int x = 1; x <= count; x++)
{
String data_x = result.getString(x);
data_x_array[x] = data_x;
}
}
catch (SQLException e)
{
e.printStackTrace();
}
}
return data_x_array;
}
我刚创建了一个类,数据库中的数据收集在一个数组中。
现在我只想从这个方法返回数组。
但我得到的是:
data_array cannot be resolved to a variable
有人可以帮助我吗?
问候!
更新:
我将代码段更改为:
public static String[] get_data()
{
conn = getInstance();
String[] data_array = null;
if(conn != null)
{
Statement query;
try
{
query = conn.createStatement();
String sql = "SELECT data_x FROM table_x";
ResultSet result = query.executeQuery(sql);
result.next();
int count = result.getInt("data_x");
result.close();
data_array = new String[count];
for (int x = 1; x <= count; x++)
{
String data_x = result.getString(x);
data_x_array[x] = data_x;
}
}
catch (SQLException e)
{
e.printStackTrace();
}
}
return data_x_array;
}
当我编译时:
Invalid value for getInt() - 'value_in_table'
有人知道吗?
问候!
答案 0 :(得分:6)
还有一件事,每个人都忘了提及
String[] data_array = new String[999];
for (int x = 0; x <= 999; x++){}
将抛出ArrayIndexOutOfBoundsException。 可能的解决方案
String[] data_array = new String[999];
for (int x = 0; x < 999; x++){}
答案 1 :(得分:3)
您已在while
循环中定义了变量,即return
语句无法看到它。另外,您已将方法定义为static void
,这意味着不会返回任何返回值。请改用static String []
。
答案 2 :(得分:2)
您对String[]
的声明与return语句的范围不同。
您需要在范围的开头声明它。
您需要将函数的标题更改为:
public static String[] get_data()
答案 3 :(得分:2)
由于它在while循环块之外无法访问,因此编译抱怨相同。 试试这个:
public static String[] get_data()
{
conn = getInstance();
String[] data_array = null;
if(conn != null)
{
Statement query;
try
{
query = conn.createStatement();
String sql = "SELECT data_x FROM table_x";
ResultSet result = query.executeQuery(sql);
while (result.next())
{
String data_x = result.getString("data_x");
data_array = new String[999];
for (int x = 0; x <= 999; x++)
{
data_array[x] = data_x;
}
}
}
catch (SQLException e)
{
e.printStackTrace();
}
}
return data_array;
}
答案 4 :(得分:1)
这里有两件事需要解决:
public static void get_data()
声明此方法不返回任何内容。将其更改为:
public static String[] get_data()
您的变量String[] data_array
在while循环中声明,因此它只在那里知道。您的return语句在该循环之外,因此它无权访问它。
将变量移出循环:
String sql = "SELECT data_x FROM table_x";
ResultSet result = query.executeQuery(sql);
String[] data_array = new String[999];
请注意,您需要在while
循环之外移动声明和初始化,否则您将通过再次初始化来覆盖先前存储的数据。还要注意,你的for
循环无论如何都会覆盖当前数据......你应该考虑将行数据存储在另一个数组中,否则就会丢失。