ResultSet.getStrin - doch kein String? oder wo liegt das Problem?

JBerry

Mitglied
Ich wollte auf meinem Speichernbutton eine Prüfung einführen ob der eingegebene Wert aus dem Textfeld ID schon vorhanden ist. Seither krieg ich allerdings immer nachfolgende Fehlermeldungen.
Liefert denn ein Resultget.getString keinen String zurück?
Java:
eingabe = rs.getString("id") + "";
scheint nicht zu funktionieren

Hier mal der ganze Code.
Java:
		public void actionPerformed(ActionEvent event)
		{
			Connection con = null;
			try
			{
				Statement stmt;
				Class.forName("com.mysql.jdbc.Driver").newInstance();
				con = DriverManager.getConnection(
						"jdbc:mysql://localhost/movies", "root", "");
				stmt = con.createStatement(); // Generiert ein Object vom
												// Typ
												// Statement

				id = getID.getText();
				title = getTitle.getText();
				genre = getGenre.getText();
				year = getYear.getText();
				media = (String) getMedia.getSelectedItem();

				if (year.length() == 0)
				{
					year = null;
				}
				else
				{
					year = "'"+year+"'";
				}
				
				
				if (id.length() == 0)
				{
					System.out.println("Es muss eine Nummer für den Film vergeben werden");
				}
				else
				
					
				
				if (title.length() == 0)
				{
					System.out.println("Es muss ein Titel für den Film vergeben werden");
				}
				else
				{
				
				//eingabe = "1";

				//if(id.equals(eingabe))
				//{
					//	System.out.println("id = eingabe");
					//}
					//else
				
					//System.out.println("id != eingabe");
					//System.out.println("id ist: "+id+"eingabe ist: "+eingabe);
				System.out.println("eingegebene id ist: "+id);
					System.out.println("SELECT id FROM movies where id = "+id);
					rs = stmt.executeQuery("SELECT id FROM movies where id = "+id);
					//System.out.println("id aus select ist: "+rs.getInt("id"));
					System.out.println("query wurde wenigstens ausgeführt...");
					//eingabe = .... funktioniert nicht, wieso?
					eingabe = rs.getString("id") + "";
					//eingabe = .... funktioniert nicht, wieso?
					System.out.println("eingabe ist: "+eingabe);
					if (id.equals(eingabe))
					{
					System.out.println("id ist schon vorhanden");
					}
					else
					
						
					

					stmt.executeUpdate("INSERT INTO movies(id,title,genre,year,media) VALUES('"
							+ id
							+ "','"
							+ title
							+ "','"
							+ genre
							+ "',"
							+ year
							+ ",'" + media + "')");
				}		
			} catch (SQLException e)
			{
				// TODO Auto-generated catch block
				e.printStackTrace();
			} catch (InstantiationException e)
			{
				// TODO Auto-generated catch block
				e.printStackTrace();
			} catch (IllegalAccessException e)
			{
				// TODO Auto-generated catch block
				e.printStackTrace();
			} catch (ClassNotFoundException e)
			{
				// TODO Auto-generated catch block
				e.printStackTrace();
			} finally
			{
				try
				{
					if (con != null)
						con.close();
				} catch (SQLException e)
				{
				}
				
				}
			
				
			
			

		}
	}
$

Konsolenausgabe:
Code:
eingegebene id ist: 1
SELECT id FROM movies where id = 1
query wurde wenigstens ausgeführt...
java.sql.SQLException
	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1055)
	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:956)
	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:926)
	at com.mysql.jdbc.ResultSetImpl.checkRowPos(ResultSetImpl.java:815)
	at com.mysql.jdbc.ResultSetImpl.getStringInternal(ResultSetImpl.java:5528)
	at com.mysql.jdbc.ResultSetImpl.getString(ResultSetImpl.java:5448)
	at com.mysql.jdbc.ResultSetImpl.getString(ResultSetImpl.java:5488)
	at ch.haag.Start.MainGUI$SpeichernListener.actionPerformed(MainGUI.java:228)
	at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
	at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
	at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
	at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
	at java.awt.Component.processMouseEvent(Unknown Source)
	at javax.swing.JComponent.processMouseEvent(Unknown Source)
	at java.awt.Component.processEvent(Unknown Source)
	at java.awt.Container.processEvent(Unknown Source)
	at java.awt.Component.dispatchEventImpl(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Window.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.EventQueue.dispatchEvent(Unknown Source)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.run(Unknown Source)
 
Du musst noch
Code:
rs.next
aufrufen, sowas wie:
Java:
if (rs.next()) {
  System.out.println("ResultSet ist nicht leer");
  rs.getString...
}
 
hat geklappt, vielen Dank. Habe Resultset bisher nur gebraucht um einen Array abzufüllen. dachte der Befehl wird nur gebraucht wenn mehrere Records ausgegeben werden.
 

Zurück
Oben