Archief - [JAVA] Data Resultset error.

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

Metteh

Legacy Member
Was een oefening aan het proberen te maken maar krijg een error die ik niet begrijp.

Code:
//Oefening1 -  vervolledig

package oefening1;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.Statement;

public class Oefening1 {
	  public static void main (String args[])
	  {
	      try
	      {
	      	//punt a - vul aan
	    		String url="jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=C:/databanken/Films.mdb";
	        Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
	        Connection con = DriverManager.getConnection(url);
	        Statement stmt=con.createStatement();
			String sql;
			int res,j;

			// punt b
	        sql="SELECT * FROM filmgegevens";

	        Statement st = con.createStatement();
	        ResultSet rs;
			rs = st.executeQuery(sql);
	        // declareer een resultset rs om te gebruiken voor het uitvoeren van het sql-statement.
	        // vul aan


	        System.out.println("==> Volledig overzicht van de tabel ");
	        // druk de namen van de kolommen af.
	        ResultSetMetaData rsmd = rs.getMetaData();
	        // vul aan


	        System.out.println();
	    	//resultset doorlopen
	        while (rs.next())
	        {
	            // haal de gegevens uit de resultset
	            // en toon ze op het scherm
	        	String filmTitel = rs.getString(1);
	      	    System.out.print(filmTitel+" , ");
	      	    String filmGenre = rs.getString(2);
	      	    System.out.print(filmGenre+" , ");
	      	    // vul aan

	         }
	        System.out.println();
	        // punt c
	       String sql2 = "INSERT INTO filmgegevens VALUES ('Spiderman 3','actie',89,'http://www.beansholiday.com/flash.html','engels')";
	        res = stmt.executeUpdate(sql2);

	        // punt d
	        System.out.println("==> Filmtitels en duur");
	       String sql3="SELECT titel, duur FROM filmgegevens ";
	        rs=stmt.executeQuery(sql3);
	        rsmd=rs.getMetaData();
	        for(j=1;j<=rsmd.getColumnCount();j++)
	          {
				 System.out.print(rsmd.getColumnLabel(j)+"\t\t"  );
	          }
	        System.out.println();
	        // haal de filmtitel en de duur uit de resultset
	        while (rs.next())
	        {
	        	  String FilmTitel = rs.getString(1);
	    		  System.out.println(FilmTitel);
	    		  int FilmDuur= rs.getInt(3);
	    		  System.out.println(FilmDuur);
	    		  System.out.println("\t");
	         }
	        System.out.println();

	        // punt e : aantal engelstalige films
	        int aantalEngels=0;
	     String sql1="SELECT taal FROM filmgegevens ";
	        res=stmt.executeUpdate(sql1);

	        // haal de filmtaal uit de resultset
	        while (rs.next())
	        {
	        String Filmtaal = rs.getString(5);
	        	System.out.println(Filmtaal);

	         }
	        System.out.println("aantal engelstalige films "+ aantalEngels);
	        con.close();
	        }
	        catch(Exception e)
	         {
	             e.printStackTrace();
	         }
	     }
}

mijn uitvoer is dit
Code:
==> Volledig overzicht van de tabel 

Spiderman 3 , actie , Spiderman 3 , actie , Spiderman 3 , actie , Spiderman 3 , actie , Spiderman 3 , actie , Spiderman 3 , actie , Spiderman 3 , actie , Spiderman 3 , actie , Spiderman 3 , actie , Spiderman 3 , actie , Spiderman 3 , actie , 40 year old virgin , komedie , bewitched , komedie , de bloedbruiloft , drama , het paard van sinterklaas , jeugd , red eye , horror , lord of the rings , horror , 
==> Filmtitels en duur
titel		duur		
Spiderman 3
java.sql.SQLException: [Microsoft][ODBC Microsoft Access-stuurprogramma]Ongeldige descriptorindex
	at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6958)
	at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7115)
	at sun.jdbc.odbc.JdbcOdbc.SQLGetDataInteger(JdbcOdbc.java:3812)
	at sun.jdbc.odbc.JdbcOdbcResultSet.getDataInteger(JdbcOdbcResultSet.java:5639)
	at sun.jdbc.odbc.JdbcOdbcResultSet.getInt(JdbcOdbcResultSet.java:582)
	at oefening1.Oefening1.main(Oefening1.java:73)

iemand die me wat verder op weg zou kunnen helpen ?

forloRn_

Legacy Member
Komaan he zeg.

Code:
String sql3="SELECT titel, duur FROM filmgegevens ";
...
int FilmDuur= rs.getInt(3);

Gaat er geen belletje rinkelen?

Metteh

Legacy Member
ok dus die 3 moet "duur" zijn.
Maar ik dacht dat die nummers tussen die haken verwezen naar de kolom in uw tabel ? of hoe zit dat nu precies ? :s

(sorry da ik een leek ben in java ge moet toch ergens beginnen dacht ik zo. :ironic:)

Metteh

Legacy Member
forloRn_ zei:
Dat doen ze ook.

ik snap nie waarom da dan problemen gaf.
& had ook al geprobeerd van die int ne String te maken maar da was het ook niet.

Cycloon

Legacy Member
forloRn_ zei:
Dat doen ze ook.

Wel naar de kolomnummer uit het resultaat. Volgens mij denkt hij het kolomnummer uit z'n oorspronkelijke tabel ofzo.

Metteh

Legacy Member
Cycloon zei:
Wel naar de kolomnummer uit het resultaat. Volgens mij denkt hij het kolomnummer uit z'n oorspronkelijke tabel ofzo.

alright thx. da was wa ik wilde horen. :applause:

Emerxill

Legacy Member
Wie gebruikt er anno 2009 nu nog JDBC tenzij het tegen zijn wil is :P
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan