Sql poprawne zapytanie, niepoprawny wynik

0

Wykonuje takie zapytanie do mojej bazy 'executeQuery( "SELECT MAX(ID) FROM TABLE;" );' a w eclipse zwraca mi 'java.sql.SQLException: no such column: 'ID'' zapytanie działa, bo sprawdzałem. W ogóle jak nawet zmienie w funkcji MAX() na coś innego to dalej wywala ten błąd 'java.sql.SQLException: no such column: 'ID'', próbowałem opcji clean, wiele razy run, restart i dalej to samo. W ogóle to normalne, że Run musze klikać pare razy zanim eclipse załapie, że wprowadziłem zmiany w kodzie?

0

Po 1 wrzuć kod, nie wróżymy z fusów
Po 2 wywal eclipsa ściągnij IntelliJ :)

0

dodaj alias

0

Tak wygląda mój kod, próbowałem też inne sposoby wyświetlania, ale nic nie zmieniają
`public static void selectDb() {

	Connection c = null;
	Statement stmt = null;
	try {
		Class.forName("org.sqlite.JDBC");
		c = DriverManager.getConnection("jdbc:sqlite:base.db");
		c.setAutoCommit(false);
		System.out.println("Opened database successfully");
		
		stmt = c.createStatement();
		ResultSet rs = stmt.executeQuery( "SELECT MAX(PRICE) FROM TABLE;" );
		while ( rs.next() ) {
			int id = rs.getInt("ID");
			int col1 = rs.getInt("col1");
	         String col2 = rs.getString("col2");
	         String  col3 = rs.getString("col3");
	         float col4 = rs.getFloat("col4");
	         System.out.println( "ID = " + id);
	         System.out.println( "col2 = " + col2 );
	         System.out.println( "col3 = " + col3 );
	         System.out.println( "col4 = " + col4 );
	         System.out.println( "col5 = " + col5 );
	        
	        
	         System.out.println();
		}
		rs.close();
	    stmt.close();
	    c.close();
	} catch ( Exception e ) {
		System.err.println( e.getClass().getName() + ": " + e.getMessage() );
		System.exit(0);
	}
	System.out.println("Operation done successfully");
}`
0
Szczery napisał(a):

dodaj alias

nie pomaga.

1

Tu jest coś dziwnego:
FROM TABLE

jak to stworzyłeś ? CREATE TABLE TABLE .... ?

0
jarekr000000 napisał(a):

Tu jest coś dziwnego:
FROM TABLE

jak to stworzyłeś ? CREATE TABLE TABLE .... ?

Dokładnie tak, wszystko mam według tego https://www.tutorialspoint.com/sqlite/sqlite_java.htm
Wykonuje to zapytanie w Sqliteman i działa poprawnie.

1

Ty zły człowieku!

Ze strony
SQLite

The SQL standard specifies a huge number of keywords which may not be used as the names of tables,
....
105. SET
106. **TABLE **
107. TEMP
...

0
jarekr000000 napisał(a):

Ty zły człowieku!

Ze strony
SQLite

The SQL standard specifies a huge number of keywords which may not be used as the names of tables,
....
105. SET
106. **TABLE **
107. TEMP
...

Nazwa mojej tabeli to nie TABLE tak tylko tu zmieniłem :P

0

Teraz sprawdziłem więcej zapytań i działa tylok select * from tabela przy innych wywala to samo.

0

Bład polegał na tym, że trzeba ResultSet rs = stmt.executeQuery( "SELECT MAX(ID) FROM TABELA;" ); int id = rs.getInt("MAX(ID)"); podac w funkcjach typu getInt kolumne w jakiej pojawia sie wynik o czym nie wiedzialem.

0

miałeś dodać alias - on NA PEWNO rozwiązał by problem - SELECT MAX(ID) AS ID FROM TABELA. Wtedy to wyglądało by tak id = rs.getInt("ID")

0
abrakadaber napisał(a):

miałeś dodać alias - on NA PEWNO rozwiązał by problem - SELECT MAX(ID) AS ID FROM TABELA. Wtedy to wyglądało by tak id = rs.getInt("ID") próbowałem, ale alias nie działa, twoje zapytanie w ogóle jest błędne, bo musi być SELECT MAX(ID) FROM TABELA AS ID żeby się dało się wykonać, ale nie pokazuje wtedy wyniku jako alias tylko MAX(ID) a w javie wywala błąd, i nie da się wykonać.

1 użytkowników online, w tym zalogowanych: 0, gości: 1