[Java] Se connecter à Mysql dans Eclipse avec Jdbc.

Introductionjava-jdbc


Pour se connecter à Mysql dans Eclipse, on installe le .jar jdbc connector.

Note : Moi, je me connecte à la base Mysql de USB Web Server, c’est un serveur portable super bien dont je me sers pour faire du javascript et du angularJs hihi, faut juste faire gaffe au port de connexion à mysql dans la chaine de connexion(En l’occurence il est de .3306)

 

OU j’ai trouvé le code ?


Sur ce lien :http://www.vogella.com/tutorials/MySQLJava/article.html

Ce qui est « drôle » c’est qu’il y a une erreur dans son code, il faut renommer la Variable Summery en Summary dans la classe MySQLAccess, hi hi !

En tout les cas cela fonctionne bien, et je vais de ce pas simplifier tout le code et le mettre en Français, (n’aimant pas ne pas faire cet effort), afin de pouvoir l’exploiter à l’avenir dans un modèle MVC, avec flexibilité ! Ces derniers temps, je suis parvenu à la conclusion que j’allais devoir faire du Spring et pas du Struts ! La syntaxe est vraiment outdated par rapport à angularJs1.x ou même Php, c’est affreux, hihi ! Par contre je suis méga intéressé par le MVC avec JAVA, c’est super structuré ! La sensation que l’on a avec cette technologie c’est : quelque chose d’engoncé, d’obscur et d’archaïque et surtout pas flexible, mais il faut tout de même continuer et s’habituer. On a la sensation de passer plus de temps à débugger le système Eclipse que d’arriver à créer de véritables choses. Ce n’est pas du tout intuitif , c’est austère, et date des années 90.

 

Le code :


Il a créé 2 classes ,

MySQLAccess :


package de.vogella.mysql.first;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Date;

public class MySQLAccess {
  private Connection connect = null;
  private Statement statement = null;
  private PreparedStatement preparedStatement = null;
  private ResultSet resultSet = null;

  public void readDataBase() throws Exception {
    try {
      // This will load the MySQL driver, each DB has its own driver
      Class.forName("com.mysql.jdbc.Driver");
      // Setup the connection with the DB
      connect = DriverManager
          .getConnection("jdbc:mysql://localhost:3306/feedback?"
              + "user=sqluser&password=sqluserpw");

      // Statements allow to issue SQL queries to the database
      statement = connect.createStatement();
      // Result set get the result of the SQL query
      resultSet = statement
          .executeQuery("select * from feedback.comments");
      writeResultSet(resultSet);

      // PreparedStatements can use variables and are more efficient
      preparedStatement = connect
          .prepareStatement("insert into  feedback.comments values (default, ?, ?, ?, ? , ?, ?)");
      // "myuser, webpage, datum, summery, COMMENTS from feedback.comments");
      // Parameters start with 1
      preparedStatement.setString(1, "Test");
      preparedStatement.setString(2, "TestEmail");
      preparedStatement.setString(3, "TestWebpage");
      preparedStatement.setDate(4, new java.sql.Date(2009, 12, 11));
      preparedStatement.setString(5, "TestSummary");
      preparedStatement.setString(6, "TestComment");
      preparedStatement.executeUpdate();

      preparedStatement = connect
          .prepareStatement("SELECT myuser, webpage, datum, summary, COMMENTS from feedback.comments");
      resultSet = preparedStatement.executeQuery();
      writeResultSet(resultSet);

      // Remove again the insert comment
      preparedStatement = connect
      .prepareStatement("delete from feedback.comments where myuser= ? ; ");
      preparedStatement.setString(1, "Test");
      preparedStatement.executeUpdate();
      
      resultSet = statement
      .executeQuery("select * from feedback.comments");
      writeMetaData(resultSet);
      
    } catch (Exception e) {
      throw e;
    } finally {
      close();
    }

  }

  private void writeMetaData(ResultSet resultSet) throws SQLException {
    //   Now get some metadata from the database
    // Result set get the result of the SQL query
    
    System.out.println("The columns in the table are: ");
    
    System.out.println("Table: " + resultSet.getMetaData().getTableName(1));
    for  (int i = 1; i<= resultSet.getMetaData().getColumnCount(); i++){
      System.out.println("Column " +i  + " "+ resultSet.getMetaData().getColumnName(i));
    }
  }

  private void writeResultSet(ResultSet resultSet) throws SQLException {
    // ResultSet is initially before the first data set
    while (resultSet.next()) {
      // It is possible to get the columns via name
      // also possible to get the columns via the column number
      // which starts at 1
      // e.g. resultSet.getSTring(2);
      String user = resultSet.getString("myuser");
      String website = resultSet.getString("webpage");
      String summary = resultSet.getString("summary");
      Date date = resultSet.getDate("datum");
      String comment = resultSet.getString("comments");
      System.out.println("User: " + user);
      System.out.println("Website: " + website);
      System.out.println("Summery: " + summary);
      System.out.println("Date: " + date);
      System.out.println("Comment: " + comment);
    }
  }

  // You need to close the resultSet
  private void close() {
    try {
      if (resultSet != null) {
        resultSet.close();
      }

      if (statement != null) {
        statement.close();
      }

      if (connect != null) {
        connect.close();
      }
    } catch (Exception e) {

    }
  }

} 

Puis le programme qui utilise la classe précédente :

package de.vogella.mysql.first;

import de.vogella.mysql.first.MySQLAccess;

public class Main {
  public static void main(String[] args) throws Exception {
    MySQLAccess dao = new MySQLAccess();
    dao.readDataBase();
  }

} 

Publicités