jak "unvalidować" int

jak "unvalidować" int
0

Samo walidacja w Jawie to dobra rzecz. Ale bez przesady. Jestem przyzwyczajony do C i to co się w Javie wyprawia to nie mieści mi się w głowie :-O .
Miadnowicie, nie mogę zwrócić typu int ziterowanego w pętli. Macie jakieś pomysły żeby to zrobić ??. Chciałbym zwrócić ilość wierszy zwróconych przez ResultSet z Statement z połączenia do bazy danych..

 Żaden z poniższych przykładów mi nie działa:
Kopiuj
int i;
for (i=0;resultSet.next();i++) {
    resultSet.getInt(1);
}
resultSet.close();
return i;
Kopiuj
Integer i = new Integer(0);
for (i=0;resultSet.next();i++) {
    resultSet.getInt(1);
}
resultSet.close();
return i;
Kopiuj
Integer i = new Integer(0);
for (i=0;resultSet.next();i++) {
    resultSet.getInt(1);
}
//resultSet.close();
return resultSet.getRow() ;
__krzysiek85
  • Rejestracja:ponad 18 lat
  • Ostatnio:ponad 9 lat
  • Postów:1019
0

Jakie piękne słowo "unvalidować" :|

Co jak co, ale pętla for oraz zwracanie typów pierwotnych (np. inty) są identyczne w Javie i C.

Jeżeli dostajesz 0, to znaczy, że pętla wykonała się 0 razy.


Registered Linux user #456405 | SCJP 6 | SCWCD 5 | SCBCD 5
0

krzysiek tak tylko że ta pętla mi działa na pewno. Bo tworzy mi Beamy. Może dam kod to zrozumiesz o co kaman

Kopiuj
    public int select(String Tables, String Conditions) throws SQLException, ExceptionThrow, FileNotFoundException, IOException {
        ResultSet resultSet = Statement.executeQuery("Select * from " + Tables + " where " + Conditions);
        int i;

        if (Tables.compareTo("Loginy") == 0) {
            Loginy login = new Loginy();
            for (i=0;resultSet.next();i++) {
                login.setId(resultSet.getInt(1));
                login.setLogin(resultSet.getString(2));
                login.setHaslo(resultSet.getString(3));
                ObjectOutputStream objectOutputStream = new ObjectOutputStream(new FileOutputStream("Login" + i));
                objectOutputStream.writeObject(login);
            }
            resultSet.close();
            return i ;
        } else 
....

wszystkie beamy które Tworze czyli :
Login0
Login1
....
itd

tworzy bez problemu, bo potem je zczytuje w innym obikecie, Czyli jednak pętla działa, licznik nie jest zwracany tylko zerowany.

Chciałem napisać program sieciowy ze wzorcem MVC. Ale po dzisiejszej niespodziance dochodze do wniosku że Java się nie nadaje do programów sieciowych.

Freakman
  • Rejestracja:ponad 18 lat
  • Ostatnio:ponad 7 lat
0

nie analizowalem dokladnie, ale i sie nie zeruje na pewno. Interesuje mnie tylko konstrukcja

Kopiuj
for (i=0;resultSet.next();i++) {

nie za bardzo rozumiem srodkowego argumentu..mozliwe ze jestem nie douczony ; )


play hard..go pro.
__krzysiek85
  • Rejestracja:ponad 18 lat
  • Ostatnio:ponad 9 lat
  • Postów:1019
0

Odpal taki kod:

Kopiuj
public class ForTest {

	public static void main(String[] args) {
		System.out.println("" + foo());
	}

	private static int foo() {
		int i;
		for (i = 0; i < 10; i++) {
			// nic
		}
		return i;
	}
}

Dostaniesz 10. Błąd jest w innym miejscu.

Kopiuj
ResultSet resultSet = Statement.executeQuery("Select * from " + Tables + " where " + Conditions);

Słyszałeś o SQL injection? Mam nadzieję, że Tables i Conditions pochodzą z zaufanego źródła (nie mogą pochodzić od użytkownika).

@Freakman
http://java.sun.com/javase/6/docs/api/java/sql/ResultSet.html
next() jest OK.


Registered Linux user #456405 | SCJP 6 | SCWCD 5 | SCBCD 5
0

Mogłeś zajrzeć do API ;)

 Przesówa kursor w krotkach. Zwraca true jak jeszcze kursor nie jest na ostatniej pozycji. False jeśli pozycja jest ostatnia.

 W efekcie dostajesz informacje krotka po krotce. Jak umieścisz to w pętli jako warunek samo Ci przesówa i zakańcza pętle.

Zwracam honor Javie i przepraszam Was chłopaki. Pętla się nie wykonywała bo przekazywałem błędny SELECT w klauzurze WHERE . A beany nadal były zapisane ponieważ nie zmknąłem przeglądarki.

Przepraszam o upierd**ść  :D

Temat można zamknąć

Krzysiek słyszałem o tym. Walidacje zrobie na samym końcu. na razie chciałbym stworzyć funkcjonalność.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.