/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package sprunner;

import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.Driver;
import java.sql.DriverManager;

/**
 *
 * @author self
 */
public class SPRunner {

   public static void main(String[] args) throws Exception {

    //INSERT DRIVERNAME HERE
    String driverName = "org.mariadb.jdbc.Driver";
    //String driverName = "com.mysql.jdbc.Driver";

    //INSERT CONNECTION STRING HERE
    String url = "jdbc:mariadb://10.0.0.38:3306/test";
    //String url = "jdbc:mysql://10.0.0.35:3306/test";
    
    //INSERT USERNAME HERE
    String user = "test";

    //INSERT PASSWORD HERE
    String password = "test";

    //STORED PROCEDURE NAME HERE
    String spname = "EXAMPLE_OUTPUT_SP";

    Class<?> driverCls = Class.forName(driverName);
    Driver driver = (Driver)driverCls.newInstance();
    DriverManager.registerDriver(driver);
    try (Connection connection = DriverManager.getConnection(url, user, password)) {
      try (CallableStatement call = connection.prepareCall("{call " + spname + "(?, ?, ?, ?, ?, ?)}")) {

        call.registerOutParameter(2, 4);
        call.registerOutParameter(3, 4);
        call.registerOutParameter(4, 4);
        call.registerOutParameter(6, 4);
        System.out.println("Executing call");
        call.execute();

        int output2 = call.getInt(2);
        int output3 = call.getInt(3);
        int output4 = call.getInt(4);
        int output6 = call.getInt(6);

        System.out.println("Expected values are the last characters in the variable name (i.e. 2 for p_output2, 3 for p_output3, etc)");
        System.out.println("p_output2: " + output2);
        System.out.println("p_output3: " + output3);
        System.out.println("p_output4: " + output4);
        System.out.println("p_output6: " + output6);
      } catch (Exception e) {
        e.printStackTrace();
        System.out.println("connection.isClosed: " + connection.isClosed());
        System.out.println("connection.isValid: " + connection.isValid(0));
      }
    }
  }

    
}
