Visualizzazione dei risultati da 1 a 4 su 4

Discussione: query mysql

  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2006
    Messaggi
    35

    query mysql

    Ciao a tutti ho creato una un database chiamato macchine che ha una tabella foto con un campo pics di tipo text.
    Adesso devo stampare il primo valore di pics ma sicuramente sbaglio a query

    codice:
    import java.sql.*;
    
    public class ProvaDB {
    	public void ConnectDB(){
    		Connection con = null;
    		try{
    			Class.forName("com.mysql.jdbc.Driver").newInstance();
    			String url = "jdbc:mysql://localhost:3306/macchine";
    			Connection conn = DriverManager.getConnection(url,"root","root");
    			
    			Statement stmt = conn.createStatement();
    			ResultSet rs = stmt.executeQuery("SELECT pics FROM foto");
    			String fot = rs.getString("pics");
    			System.out.println("funziona");
    			System.out.println(fot);
    			
    			conn.close();
    		}
    		catch (Exception e){
    			e.printStackTrace();
    			System.out.println("non funziona");
    		}		
    			
    	}
    }
    L'errore che ottengo è questo :
    codice:
    java.sql.SQLException: Before start of result set
    non funziona
    	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1075)
    	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:989)
    	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:984)
    	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:929)
    	at com.mysql.jdbc.ResultSetImpl.checkRowPos(ResultSetImpl.java:841)
    	at com.mysql.jdbc.ResultSetImpl.getStringInternal(ResultSetImpl.java:5656)
    	at com.mysql.jdbc.ResultSetImpl.getString(ResultSetImpl.java:5576)
    	at com.mysql.jdbc.ResultSetImpl.getString(ResultSetImpl.java:5616)
    	at ProvaDB.ConnectDB(ProvaDB.java:13)
    	at Test.main(Test.java:5)

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Perchè il RecordSet, appena creato, non è posizionato sul primo record, ma prima di esso e l'eccezione te lo dice chiaro e tondo:

    Before start of result set
    E' sempre necessario, dopo aver creato un RecordSet, richiamarne il metodo next() e controllarne il valore di ritorno: esso torna "true" se esiste un record (e ci si posiziona sopra), "false" se il RecordSet è terminato.

    In codice:

    codice:
    ResultSet rs = stmt.executeQuery("SELECT pics FROM foto");
    if ( rs.next() ) {
       // C'è almeno un record e ora sono posizionato sul primo.
       ...
    }
    La documentazione dell'interfaccia ResultSet ti avrebbe fatto risparmiare molto tempo.

    Secondo paragrafo della documentazione:
    A ResultSet object maintains a cursor pointing to its current row of data. Initially the cursor is positioned before the first row. The next method moves the cursor to the next row, and because it returns false when there are no more rows in the ResultSet object, it can be used in a while loop to iterate through the result set.

    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2006
    Messaggi
    35
    Grazie del link,è che non ho esperienza in mysql e mi hanno assegnato un lavoro tutto di query !

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Il problema riportato non ha nulla a che vedere né con MySQL, né con le query. Qualunque sia il DBMS (MySQL, MS SQL Server, Access, JavaBD, ecc) e qualunque sia la query da eseguire (parlo di query di selezione), la procedura è sempre la stessa ed è quella riportata.

    Ricorda di tenere sempre sotto mano la documentazione: è fondamentale.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.