lundi 25 mai 2015

MySQL Probleme mit resultSet executQuery

Hallo zusammen,
vor kurzem habe ich mich einem kleinem Game-Developement Projekt angeschloßen und habe angefangen ein wenig mit Datenbanken zu spielen. Leider stecke ich erst mal an einer Stelle und komme nicht wirklich weiter, vielleicht könnt ihr mir mit einem Rat helfen.

Und zwar, ich versuche mit JDBC ein Table in MySQL zu erzeugen. Habe einiges im Internet rechechiert
Meine Quellen:
http://ift.tt/1RgThLU
http://ift.tt/1iZAAyJ
Rheinwerk Computing :: Java ist auch eine Insel – 24.7 Elemente einer Datenbank hinzufügen und aktualisieren

Jedoch in der Zeile 41 bricht das Programm zusammen und kommt folgende Fehlermeldung:
Java Code:

  1. java.sql.SQLException: Can not issue data manipulation statements with executeQuery().
  2. at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:998)
  3. at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:937)
  4. at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:926)
  5. at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:872)
  6. at com.mysql.jdbc.StatementImpl.checkForDml(StatementImpl.java:472)
  7. at com.mysql.jdbc.StatementImpl.executeQuery(StatementImpl.java:1401)
  8. at conn.ConnectClass.main(ConnectClass.java:41)


Ich habe die Vermutung, dass es ein Syntaxfehler in der CREATE TABLE Anweisung ist, aber vielleicht habe ich etwas übersehen.

Hier füge ich mein gesamtes Quellcode.

Java Code:

  1. package conn;
  2. package conn;
  3.  
  4. import java.sql.*;
  5. import java.util.*;
  6.  
  7. public class ConnectClass
  8. {
  9. //JDBC driver name and database URL
  10. static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
  11. static final String DB_URL = "jdbc:mysql://localhost/test";
  12.  
  13. //Database credentials
  14. static final String USER = "root";
  15. static final String PASS = "secret";
  16.  
  17. public static void main(String[] args)
  18. {
  19. Scanner sc = new Scanner(System.in);
  20.  
  21. System.out.println("Insert your character name: ");
  22.  
  23. String tableName = sc.nextLine();
  24. String autoincrement = "AUTO_INCREMENT";
  25. Connection conn = null;
  26. Statement stmt = null;
  27.  
  28. try {
  29. //register JDBC driver
  30. Class.forName(JDBC_DRIVER);
  31.  
  32. //open a connection
  33. System.out.println("connects...");
  34. conn=DriverManager.getConnection(DB_URL,USER,PASS);
  35. System.out.println("Succeeded");
  36. //Execute a query
  37. System.out.println("Creating Statement");
  38. stmt = conn.createStatement();
  39. String sql;
  40.  
  41. sql = "CREATE TABLE "+ tableName + " (ID INTEGER PRIMARY KEY " + autoincrement + ", Str INT(30), " + ", Ag INT(30), " + "End INT(30));";
  42. ResultSet rs = stmt.executeQuery(sql);
  43.  
  44. //fill table
  45. System.out.println("Str: ");
  46. int str = sc.nextInt();
  47. System.out.println("Agil: ");
  48. int ag = sc.nextInt();
  49. System.out.println("Endurance: ");
  50. int end = sc.nextInt();
  51.  
  52. PreparedStatement stmt2 = conn.prepareStatement( "INSERT INTO " + tableName + " (Str, Ag, End) " + " VALUES ( ?, ?, ? );" );
  53. stmt2.setInt( 1, str );
  54. stmt2.setInt( 2, ag );
  55. stmt2.setInt( 2, end );
  56. stmt2.execute();
  57.  
  58. //extract data from result set
  59. while(rs.next()){
  60. int id = rs.getInt("id");
  61. str = rs.getInt("Str");
  62. ag = rs.getInt("Ag");
  63. end = rs.getInt("End");
  64.  
  65. //display values
  66. System.out.println("ID: " + id);
  67. System.out.println("Sila: " + str);
  68. System.out.println("Zrecznosc: " + ag);
  69. System.out.println("Wytrzymalosc: " + end);
  70.  
  71. }//while(rs.next())
  72.  
  73. //clean environments
  74. rs.close();
  75. stmt.close();
  76. stmt2.close();
  77. conn.close();
  78. System.out.println("Connection closed");
  79.  
  80. } catch (SQLException sqle) {
  81. //Handle errors for JDBC
  82. sqle.printStackTrace();
  83. } catch (Exception e){
  84. //Handle errors for Class.forName
  85. e.printStackTrace();
  86. } finally {
  87. //finally block used to close resources
  88. try {
  89. if (stmt != null){
  90. stmt.close();
  91. }//if
  92. } catch (SQLException sqle2) {
  93. }//catch
  94. try {
  95. if (conn != null){
  96. conn.close();
  97. }//if
  98. } catch (SQLException sqle) {
  99. sqle.printStackTrace();
  100. }//catch
  101. }//finally
  102.  
  103. }//main
  104. }//public class ConnectClass


Vielen Dank für eure Hilfe im Voraus!

Grüße
ZxSpectrum



MySQL Probleme mit resultSet executQuery

0 commentaires:

Enregistrer un commentaire