2014-10-19 22 views
6

dönüş dizisi bu pasajı oluşturuldu:java yöntemine

Sadece veritabanından verileri bir dizide toplanır bir sınıf yarattı
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; 
} 

.

Şimdi diziyi bu yöntemden döndürmek istiyorum.

Ama ne i olsun:

data_array cannot be resolved to a variable 

Herkes bana yardımcı olabilir?

Selamlar!

GÜNCELLEME: ben sadece derlerken

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' 

Herkes bunu biliyor

i için parçacığını değişti?

Selamlar!

+3

'data_array'' dönüş (data_array) ile aynı kapsamda değildir Olası çözüm; buna ' – August

+0

Sen data_array beyan ama data_x_array – kiwixz

cevap

2

String[] bildirimi, beyanname ile aynı kapsamda değildir.

Kapsamın başlangıcında bunu bildirmeniz gerekir. Bunu return açıklamaya görünmeyen while döngü yani içerdeki değişken tanımladınız

public static String[] get_data() 
3

:

Ve işlevin başlığını değiştirmeniz gerekir. Ayrıca, yönteminizi static void olarak tanımladınız, bu da dönüş değeri beklenmiyor. Bunun yerine static String [] kullanın.

+0

Gönderimimi Güncelleme kullanmayı deneyin, bakın ki? – user3683881

2

Süre döngü bloğu dışında erişilemediğinden, derleme aynı şeyden şikayet ediyor. Bunu deneyin :

public static void get_data() 

Bu yöntem hiçbir şey dönmek için ilan edilir: burada düzeltmek için iki şey vardır

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; 
} 
1

. bunu değiştirin:

public static String[] get_data() 

Sizin değişken String[] data_array bu nedenle sadece orada bilinir, while döngüsünde bildirildi. İade beyannız bu döngü dışındadır, dolayısıyla ona erişemez. Eğer while döngü dışında beyanı ve başlatma taşımak gerekir

String sql = "SELECT data_x FROM table_x"; 
ResultSet result = query.executeQuery(sql); 
String[] data_array = new String[999]; 

Zihin veya yeniden başlatarak bu dizi daha önce depolanmış verilerin üzerine yazılır:

döngünün dış değişken hareket

. Ve ayrıca, for döngüsünüzün mevcut verilerin üzerine yazacağını düşünün ... satır verisini başka bir dizide saklamayı düşünmelisiniz, yoksa kaybolur.

6

Bir şey daha herkes ArrayIndexOutOfBoundsException atacağım

String[] data_array = new String[999]; 
for (int x = 0; x <= 999; x++){} 

söylemeyi unutmuşum.

String[] data_array = new String[999]; 
for (int x = 0; x < 999; x++){} 
İlgili konular