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?
Po 1 wrzuć kod, nie wróżymy z fusów
Po 2 wywal eclipsa ściągnij IntelliJ :)
dodaj alias
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");
}`
Szczery napisał(a):
dodaj alias
nie pomaga.
Tu jest coś dziwnego:
FROM TABLE
jak to stworzyłeś ? CREATE TABLE TABLE ....
?
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.
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
...
jarekr000000 napisał(a):
Ty zły człowieku!
Ze strony
SQLiteThe 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
Teraz sprawdziłem więcej zapytań i działa tylok select * from tabela
przy innych wywala to samo.
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.
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")
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 takid = 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 tylkoMAX(ID)
a w javie wywala błąd, i nie da się wykonać.