hilpers


  hilpers > comp.lang.* > comp.lang.java

 #1  
27.01.2006, 09:54
Maciek
Mam taką klasę obsługującą połączenia do bazy danych. W klasie głównej w
metodzie main tworze obiekt:
sqlconnect baza = new sqlconnect(...); a następnie pobieram dane z bazy:
baza.getDane(); i tu pojawia się problem - wyjątek
java.lang.NullPointerException,
ale nie wiem dlaczego (połączenie do bazy danych działa). Problem jest chyba
tutaj z wpisaniem do tablicy danych. Jesli deklaruje zmienna "zwroc" jako
String pobieram dane jako: zwroc=zwroc+":"+rs.geString(daneKol[j]) wszystko
jest w porządku, ale takie rozwiązanie raczej odpada(przy większej ilości
danych)
Czy ktoś mógłby mi podpowiedzieć co może być nie tak?

class sqlconnect() {
....
public sqlconnect(...) {
...
}
...
public void getDane(String[] daneKol) { //String[] daneKol =
{"kolumna1","kolumna2"};
String zwroc[][] = null;
...
while (rs.next()) {

for (int j=0;j<daneKol.length;j++) {
zwroc[rs.getrow()][j]=rs.getString(daneKol[j]); //<---
java.lang.NullPointerException
}

}
closeConnection();
...
}
}

Pozdrawiam,
Maciek
 #2  
27.01.2006, 10:45
Rafał Markiewicz
> zwroc[rs.getrow()][j]=rs.getString(daneKol[j]); //<---
> java.lang.NullPointerException


pokaż printStackTrace
 #3  
27.01.2006, 10:58
Maciek
> zwroc[rs.getrow()][j]=rs.getString(daneKol[j]); //<---
> java.lang.NullPointerException
>pokaż printStackTrace


Dzieki
ale juz sobie poradzilem, wystarczyło zainicjować tylko tablice jako:
String zwroc[][] = new String[20][20];

Ale mam tutaj kolejny problemik, przy inicjacji. Chciałbym aby rozmiar
tablicy Stringów był ustawiany dynamicznie:
PreparedStatement stnt = null;
String zwroc[][] = null;
java.sql.ResultSet rs = null;
.....
stnt=con.prepareStatement(stmt);
rs=stnt.executeQuery();
System.out.println(stnt.getMaxRows()); <----- pokazuje zawsze zero, a
powinno zwracać ilość wierszy w zwróconym zapytaniu.
zwroc = new String[rs.getMaxRows()][];

niestety pojawia się: java.lang.ArrayIndexOutOfBoundsException
ponieważ getMaxRows ustawił wymiar na 0;


Pozdrawiam
Maciek
 #4  
27.01.2006, 11:24
Rafał Markiewicz
Maciek wrote:

getMaxRows()
Returns:
the current maximum number of rows for a ResultSet object produced by
this Statement object; zero means there is no limit>

Więc nie tędy droga. Może być kombinacja rs.last(); rs.getRow(),
rs.beforeFirst(), ale trzeba mieć kursor "wracający" ;)

Rufik
 #5  
27.01.2006, 11:56
Maciek
>getMaxRows()
>Returns:
> the current maximum number of rows for a ResultSet >object produced by
>this Statement object; zero means there is no limit>


>Więc nie tędy droga. Może być kombinacja rs.last(); >rs.getRow(),
>rs.beforeFirst(), ale trzeba mieć kursor "wracający" ;)


No to teraz wszystko jest jasne, wielkie dzieki
 #6  
27.01.2006, 12:24
Bartek Jablonski
Maciek wrote:
> Ale mam tutaj kolejny problemik, przy inicjacji. Chciałbym aby rozmiar
> tablicy Stringów był ustawiany dynamicznie:


Do czego tego potrzebujesz?
Nie lepiej uzyc kolekcji i ew. na koncu zrobic toArray() ?

Bartek
Podobne wątki
VFP[9] Wczytywanie danych z www

Witam, Potrzebuje wczytywać (wielokrotnie) tabele kursów ze strony NBP: [..] Na dole strony jest tabela w formacie XML ... niestety ciągle pod inna nazwą. (Np dzisiejsza to:...

Wczytywanie z pliku - było Wczytywanie danych z rejestru

Wiatm wszystkich, jako że nikt nie był w stanie mi pomóc w sprawie TRegistry, wpadłem na inny pomysł jak to zrobić z pominięciem tego. Oto do czego doszedłem: 1) Odpalić z...

Wczytywanie danych

Pytanie moze banalne. Jak wczytac do trzech zmiennych taka linie ze stdin? 3 0 2 (spacja po srodku) Pozdro.


Czasy w strefie GMT. Teraz jest 21:57. | Privacy Policy