From e9d80d486b912144b59ebd5939d4837105b37b99 Mon Sep 17 00:00:00 2001
From: Kenmegne <stephanie.kenmegne@gmail.com>
Date: Wed, 10 Dec 2025 16:09:04 +0000
Subject: [PATCH] add codetypefichier

---
 query-adhoc/src/main/java/com/megatim/queryadhoc/connection/impl/PostgresDbConnection.java           |   34 
 query-adhoc/src/main/java/com/megatim/queryadhoc/contrat/DefaultPreparedStatementProcessor.java      |   64 +
 query-adhoc/src/main/java/com/megatim/queryadhoc/query/insert/impl/OracleInsertQuery.java            |   57 +
 query-adhoc/src/main/java/com/megatim/queryadhoc/model/QueryParam.java                               |   24 
 query-adhoc/src/main/java/com/megatim/queryadhoc/utils/DataFormatter.java                            |  124 ++
 query-adhoc/target/classes/com/megatim/queryadhoc/App.class                                          |    0 
 query-adhoc/src/main/java/com/megatim/queryadhoc/query/abstracts/DatabaseSelectQuery.java            |   71 +
 query-adhoc/src/main/java/com/megatim/queryadhoc/model/ConnectionParameter.java                      |   51 +
 query-adhoc/src/main/java/com/megatim/queryadhoc/query/abstracts/DatabaseInsertQuery.java            |   40 
 query-adhoc/target/classes/com/megatim/queryadhoc/queries/metadata/DefaultDataRow.class              |    0 
 query-adhoc/src/main/java/com/megatim/queryadhoc/connection/impl/OracleDbConnection.java             |   35 
 query-adhoc/target/maven-archiver/pom.properties                                                     |    5 
 query-adhoc/src/main/java/com/megatim/queryadhoc/exceptions/NotSupportedDataBaseException.java       |   16 
 query-adhoc/src/main/java/com/megatim/queryadhoc/exceptions/ConnectionParameterException.java        |   16 
 query-adhoc/target/query-adhoc-1.0.jar                                                               |    0 
 query-adhoc/target/classes/com/megatim/queryadhoc/utils/FileDataReader.class                         |    0 
 query-adhoc/target/classes/com/megatim/queryadhoc/exceptions/BadColumnTypeException.class            |    0 
 query-adhoc/target/classes/com/megatim/queryadhoc/contrat/InsertMetaData.class                       |    0 
 query-adhoc/src/main/java/com/megatim/queryadhoc/query/insert/impl/PostgresInsertQuery.java          |   57 +
 query-adhoc/src/main/java/com/megatim/queryadhoc/queries/metadata/InsertData.java                    |   44 
 query-adhoc/target/classes/com/megatim/queryadhoc/connection/impl/MySqlDbConnection.class            |    0 
 query-adhoc/src/main/java/com/megatim/queryadhoc/exceptions/NotSupportedTypeDonneeException.java     |   18 
 query-adhoc/src/main/java/com/megatim/queryadhoc/enums/SgbdType.java                                 |   13 
 query-adhoc/target/classes/com/megatim/queryadhoc/table/DataBaseTable.class                          |    0 
 query-adhoc/pom.xml                                                                                  |   98 ++
 query-adhoc/src/main/java/com/megatim/queryadhoc/contrat/PreparedStatementProcessor.java             |   16 
 query-adhoc/src/main/java/com/megatim/queryadhoc/utils/FileDataReader.java                           |   65 +
 query-adhoc/target/classes/com/megatim/queryadhoc/connection/abtracts/DataBaseConnection.class       |    0 
 query-adhoc/src/main/java/com/megatim/queryadhoc/exceptions/ColumnNotFoundException.java             |   17 
 query-adhoc/target/test-classes/.netbeans_automatic_build                                            |    0 
 query-adhoc/src/main/java/com/megatim/queryadhoc/queries/metadata/LocalDateTimeValue.java            |   92 +
 query-adhoc/src/main/java/com/megatim/queryadhoc/query/select/impl/PostgresSelectQuery.java          |   47 
 query-adhoc/target/classes/com/megatim/queryadhoc/queries/CommonInsertQuery.class                    |    0 
 query-adhoc/target/classes/com/megatim/queryadhoc/query/ifaces/InsertQuery.class                     |    0 
 query-adhoc/target/classes/com/megatim/queryadhoc/queries/metadata/ParsedDataRow.class               |    0 
 query-adhoc/src/main/java/com/megatim/queryadhoc/contrat/DataColumn.java                             |   16 
 query-adhoc/target/classes/.netbeans_automatic_build                                                 |    0 
 query-adhoc/src/main/java/com/megatim/queryadhoc/validators/ConnectionParameterValidator.java        |   79 +
 query-adhoc/target/classes/com/megatim/queryadhoc/queries/metadata/LocalDateTimeValue.class          |    0 
 query-adhoc/target/classes/com/megatim/queryadhoc/query/abstracts/DatabaseSelectQuery.class          |    0 
 query-adhoc/target/classes/com/megatim/queryadhoc/exceptions/ConnectionException.class               |    0 
 query-adhoc/target/classes/com/megatim/queryadhoc/query/insert/impl/PostgresInsertQuery.class        |    0 
 query-adhoc/src/main/java/com/megatim/queryadhoc/contrat/InsertMetaData.java                         |   19 
 query-adhoc/src/main/java/com/megatim/queryadhoc/exceptions/IllegalFormatDateException.java          |   20 
 query-adhoc/target/classes/com/megatim/queryadhoc/exceptions/IllegalFormatDateException.class        |    0 
 query-adhoc/target/classes/com/megatim/queryadhoc/connection/impl/PostgresDbConnection.class         |    0 
 query-adhoc/target/classes/com/megatim/queryadhoc/exceptions/BadDataValueException.class             |    0 
 query-adhoc/target/classes/com/megatim/queryadhoc/model/ConnectionParameter.class                    |    0 
 query-adhoc/target/classes/com/megatim/queryadhoc/exceptions/LocalDateTimeValueParseError.class      |    0 
 query-adhoc/src/main/java/com/megatim/queryadhoc/connection/abtracts/DataBaseConnection.java         |   41 
 query-adhoc/src/main/java/com/megatim/queryadhoc/query/select/impl/MySqlSelectQuery.java             |   48 +
 query-adhoc/src/main/java/com/megatim/queryadhoc/connection/impl/SqlServerDbConnection.java          |   35 
 query-adhoc/src/main/java/com/megatim/queryadhoc/query/select/impl/OracleSelectQuery.java            |   47 
 query-adhoc/target/classes/com/megatim/queryadhoc/factory/DbConnectionFactory.class                  |    0 
 query-adhoc/target/classes/com/megatim/queryadhoc/contrat/DataRow.class                              |    0 
 query-adhoc/src/main/java/com/megatim/queryadhoc/query/select/impl/SqlServerSelectQuery.java         |   47 
 query-adhoc/target/classes/com/megatim/queryadhoc/utils/DataFormatter$1.class                        |    0 
 query-adhoc/target/classes/com/megatim/queryadhoc/enums/SgbdType.class                               |    0 
 query-adhoc/target/classes/com/megatim/queryadhoc/query/insert/impl/MySqlInsertQuery.class           |    0 
 query-adhoc/target/classes/com/megatim/queryadhoc/exceptions/NotSupportedTypeDonneeException.class   |    0 
 query-adhoc/target/classes/com/megatim/queryadhoc/enums/TypeDonnee.class                             |    0 
 query-adhoc/target/classes/com/megatim/queryadhoc/model/DbColumnDescription.class                    |    0 
 query-adhoc/src/main/java/com/megatim/queryadhoc/utils/CommonUtilities.java                          |   51 +
 query-adhoc/src/main/java/com/megatim/queryadhoc/queries/CommonInsertQuery.java                      |   87 +
 query-adhoc/target/classes/com/megatim/queryadhoc/query/select/impl/OracleSelectQuery.class          |    0 
 query-adhoc/target/classes/com/megatim/queryadhoc/query/ifaces/SelectQuery.class                     |    0 
 query-adhoc/src/main/java/com/megatim/queryadhoc/connection/impl/MySqlDbConnection.java              |   36 
 query-adhoc/src/main/java/com/megatim/queryadhoc/queries/metadata/DefaultDataColumn.java             |   33 
 query-adhoc/src/main/java/com/megatim/queryadhoc/contrat/DataRow.java                                |   16 
 query-adhoc/target/classes/com/megatim/queryadhoc/query/insert/impl/OracleInsertQuery.class          |    0 
 query-adhoc/src/main/java/com/megatim/queryadhoc/model/DbColumnDescription.java                      |  121 ++
 query-adhoc/src/main/java/com/megatim/queryadhoc/factory/DbConnectionFactory.java                    |  132 ++
 query-adhoc/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst |    0 
 query-adhoc/src/main/java/com/megatim/queryadhoc/queries/metadata/DefaultDataRow.java                |   35 
 query-adhoc/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst       |   54 +
 query-adhoc/src/main/java/com/megatim/queryadhoc/table/DataBaseTable.java                            |  145 +++
 query-adhoc/target/query-adhoc-1.0-jar-with-dependencies.jar                                         |    0 
 query-adhoc/target/classes/com/megatim/queryadhoc/query/select/impl/SqlServerSelectQuery.class       |    0 
 query-adhoc/target/classes/com/megatim/queryadhoc/query/select/impl/PostgresSelectQuery.class        |    0 
 query-adhoc/target/classes/com/megatim/queryadhoc/contrat/DefaultPreparedStatementProcessor.class    |    0 
 query-adhoc/target/classes/com/megatim/queryadhoc/exceptions/NotSupportedDataBaseException.class     |    0 
 query-adhoc/target/classes/com/megatim/queryadhoc/queries/metadata/DefaultDataColumn.class           |    0 
 query-adhoc/target/classes/com/megatim/queryadhoc/queries/CommonSelectQuery.class                    |    0 
 query-adhoc/target/classes/com/megatim/queryadhoc/utils/CommonUtilities.class                        |    0 
 query-adhoc/src/main/java/com/megatim/queryadhoc/exceptions/ConnectionException.java                 |   23 
 query-adhoc/target/classes/com/megatim/queryadhoc/utils/DataFormatter.class                          |    0 
 query-adhoc/src/main/java/com/megatim/queryadhoc/App.java                                            |  163 +++
 query-adhoc/src/main/java/com/megatim/queryadhoc/query/insert/impl/MySqlInsertQuery.java             |   57 +
 query-adhoc/target/classes/com/megatim/queryadhoc/contrat/PreparedStatementProcessor.class           |    0 
 query-adhoc/target/classes/com/megatim/queryadhoc/query/abstracts/DatabaseInsertQuery.class          |    0 
 query-adhoc/target/classes/com/megatim/queryadhoc/queries/metadata/ParsedData.class                  |    0 
 query-adhoc/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst         |   51 +
 query-adhoc/target/classes/com/megatim/queryadhoc/query/insert/impl/SqlServerInsertQuery.class       |    0 
 query-adhoc/target/classes/com/megatim/queryadhoc/table/DataBaseTable$1.class                        |    0 
 query-adhoc/target/classes/com/megatim/queryadhoc/queries/metadata/InsertData.class                  |    0 
 query-adhoc/src/main/java/com/megatim/queryadhoc/queries/metadata/ParsedData.java                    |   40 
 query-adhoc/target/classes/com/megatim/queryadhoc/model/QueryParam.class                             |    0 
 query-adhoc/src/main/java/com/megatim/queryadhoc/exceptions/BadDataValueException.java               |   13 
 query-adhoc/target/classes/com/megatim/queryadhoc/connection/impl/OracleDbConnection.class           |    0 
 query-adhoc/target/classes/com/megatim/queryadhoc/factory/DbConnectionFactory$1.class                |    0 
 query-adhoc/src/main/java/com/megatim/queryadhoc/queries/CommonSelectQuery.java                      |  115 ++
 query-adhoc/target/classes/com/megatim/queryadhoc/query/select/impl/MySqlSelectQuery.class           |    0 
 query-adhoc/target/classes/com/megatim/queryadhoc/connection/impl/SqlServerDbConnection.class        |    0 
 query-adhoc/src/main/java/com/megatim/queryadhoc/enums/TypeDonnee.java                               |   53 +
 query-adhoc/target/classes/com/megatim/queryadhoc/validators/ConnectionParameterValidator.class      |    0 
 query-adhoc/target/classes/com/megatim/queryadhoc/contrat/DataColumn.class                           |    0 
 query-adhoc/src/main/java/com/megatim/queryadhoc/exceptions/BadColumnTypeException.java              |   11 
 query-adhoc/src/main/java/com/megatim/queryadhoc/query/ifaces/SelectQuery.java                       |   21 
 query-adhoc/src/main/java/com/megatim/queryadhoc/query/ifaces/InsertQuery.java                       |   21 
 query-adhoc/src/main/java/com/megatim/queryadhoc/queries/metadata/ParsedDataRow.java                 |  117 ++
 query-adhoc/src/main/java/com/megatim/queryadhoc/exceptions/LocalDateTimeValueParseError.java        |   13 
 query-adhoc/src/main/java/com/megatim/queryadhoc/query/insert/impl/SqlServerInsertQuery.java         |   57 +
 query-adhoc/target/classes/com/megatim/queryadhoc/exceptions/ConnectionParameterException.class      |    0 
 query-adhoc/target/classes/com/megatim/queryadhoc/exceptions/ColumnNotFoundException.class           |    0 
 114 files changed, 2,821 insertions(+), 0 deletions(-)

diff --git a/query-adhoc/pom.xml b/query-adhoc/pom.xml
new file mode 100644
index 0000000..f5a46c6
--- /dev/null
+++ b/query-adhoc/pom.xml
@@ -0,0 +1,98 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <groupId>com.megatim.queryadhoc</groupId>
+    <artifactId>query-adhoc</artifactId>
+    <version>1.0</version>
+    <packaging>jar</packaging>
+    <properties>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+        <maven.compiler.source>1.8</maven.compiler.source>
+        <maven.compiler.target>1.8</maven.compiler.target>
+        <exec.mainClass>com.megatim.queryadhoc.App</exec.mainClass>
+    </properties>
+    
+    <repositories>
+        <repository>
+            <id>oracle-maven-repo</id>
+            <url>https://maven.oracle.com</url>
+        </repository>
+    </repositories>
+    
+    <build>
+        <plugins>   
+            
+            <plugin>
+                <artifactId>maven-assembly-plugin</artifactId>
+                <configuration>
+                    <archive>
+                        <manifest>
+                            <mainClass>com.megatim.queryadhoc.App</mainClass>
+                        </manifest>
+                    </archive>
+                    <descriptorRefs>
+                        <descriptorRef>jar-with-dependencies</descriptorRef>
+                    </descriptorRefs>
+                </configuration>
+                <executions>
+                    <execution>
+                        <id>make-assembly</id> <!-- this is used for inheritance merges -->
+                        <phase>package</phase> <!-- bind to the packaging phase -->
+                        <goals>
+                            <goal>single</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+                     
+        </plugins>
+    </build>
+
+    <dependencies>
+        <dependency>
+            <groupId>com.oracle.database.jdbc</groupId>
+            <artifactId>ojdbc8</artifactId>
+            <version>19.8.0.0</version>
+        </dependency>
+        <dependency>
+            <groupId>org.postgresql</groupId>
+            <artifactId>postgresql</artifactId>
+            <version>42.6.0</version> <!-- Use the latest version -->
+        </dependency>
+        <dependency>
+            <groupId>com.microsoft.sqlserver</groupId>
+            <artifactId>mssql-jdbc</artifactId>
+            <version>12.2.0.jre8</version> <!-- Use the appropriate version for your JDK -->
+        </dependency>
+        <dependency>
+            <groupId>mysql</groupId>
+            <artifactId>mysql-connector-java</artifactId>
+            <version>8.0.33</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.tika</groupId>
+            <artifactId>tika-parser-text-module</artifactId>
+            <version>2.9.0</version>
+            <exclusions>
+                <exclusion> 
+                    <groupId>org.apache.xmlbeans</groupId> 
+                    <artifactId>xmlbeans</artifactId> 
+                </exclusion> 
+                <exclusion>
+                    <groupId>xerces</groupId>
+                    <artifactId>xercesImpl</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>commons-validator</groupId>
+            <artifactId>commons-validator</artifactId>
+            <version>1.6</version>
+        </dependency>
+        <dependency>
+            <groupId>commons-io</groupId>
+            <artifactId>commons-io</artifactId>
+            <version>2.11.0</version>
+        </dependency>
+    </dependencies>
+</project>
\ No newline at end of file
diff --git a/query-adhoc/src/main/java/com/megatim/queryadhoc/App.java b/query-adhoc/src/main/java/com/megatim/queryadhoc/App.java
new file mode 100644
index 0000000..1a0ce91
--- /dev/null
+++ b/query-adhoc/src/main/java/com/megatim/queryadhoc/App.java
@@ -0,0 +1,163 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Project/Maven2/JavaApp/src/main/java/${packagePath}/${mainClassName}.java to edit this template
+ */
+package com.megatim.queryadhoc;
+
+import com.megatim.queryadhoc.enums.SgbdType;
+import com.megatim.queryadhoc.enums.TypeDonnee;
+import com.megatim.queryadhoc.exceptions.ConnectionException;
+import com.megatim.queryadhoc.exceptions.ConnectionParameterException;
+import com.megatim.queryadhoc.exceptions.IllegalFormatDateException;
+import com.megatim.queryadhoc.exceptions.NotSupportedDataBaseException;
+import com.megatim.queryadhoc.model.ConnectionParameter;
+import com.megatim.queryadhoc.model.DbColumnDescription;
+import com.megatim.queryadhoc.query.insert.impl.PostgresInsertQuery;
+import com.megatim.queryadhoc.query.select.impl.PostgresSelectQuery;
+import com.megatim.queryadhoc.table.DataBaseTable;
+import java.io.File;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+/**
+ *
+ * @author ASUS
+ */
+public class App {
+
+    private static final String TABLE_NAME = "users";
+    private static final String DATABASE_NAME = "test_query";
+    private static final String OUTPUT_DIR = "C:\\Users\\ASUS\\Documents\\DATAS\\Export";
+
+    public static void main(String[] args) {
+//        tableExists();
+//        isDatabaseAvailable();
+//        insert();
+        select();
+    }
+
+    private static ConnectionParameter mySqlConnectionParameters() {
+        return new ConnectionParameter(3306, DATABASE_NAME, "mela", "127.0.0.1", "mela");
+    }
+
+    private static ConnectionParameter postgresConnectionParameters() {
+        return new ConnectionParameter(5432, DATABASE_NAME, "postgres", "127.0.0.1", "mela");
+    }
+
+    private static ConnectionParameter sqlServerConnectionParameters() {
+        return new ConnectionParameter(1433, DATABASE_NAME, "sa", "192.168.1.210", "Mgt@9090");
+    }
+
+    private static void isDatabaseAvailable() {
+        try {
+            boolean bool = new DataBaseTable(SgbdType.POSTGRESQL, postgresConnectionParameters())
+                    .isDatabaseAvailable();
+            System.out.println("Result : " + bool);
+        } catch (NotSupportedDataBaseException | ConnectionParameterException ex) {
+            Logger.getLogger(App.class.getName()).log(Level.SEVERE, ex.getMessage(), ex);
+        }
+    }
+
+    private static void tableExists() {
+        try {
+            boolean bool = new DataBaseTable(SgbdType.POSTGRESQL, postgresConnectionParameters())
+                    .tableExists("users1");
+            System.out.println("Result : " + bool);
+        } catch (NotSupportedDataBaseException | ConnectionParameterException | ConnectionException ex) {
+            Logger.getLogger(App.class.getName()).log(Level.SEVERE, ex.getMessage(), ex);
+        }
+    }
+
+    private static void select() {
+        try {
+//            List<Map<String, Object>> data = new DataBaseTable()
+//                    .select(SgbdType.POSTGRESQL, postgresConnectionParameters())
+//                    .execute(TABLE_NAME, Arrays.asList("userName", "dateaction"));
+//
+//            data.stream().forEach(l -> {
+//                l.forEach((k, v) -> {
+//                    System.out.println(k + ", " + v);
+//                });
+//            });
+            new DataBaseTable(SgbdType.POSTGRESQL, postgresConnectionParameters())
+                    .select()
+                    .execute(TABLE_NAME, columns(), OUTPUT_DIR, TABLE_NAME, false);
+        } catch (NotSupportedDataBaseException ex) {
+            Logger.getLogger(App.class.getName()).log(Level.SEVERE, null, ex);
+        } catch (Exception ex) {
+            Logger.getLogger(App.class.getName()).log(Level.SEVERE, null, ex);
+        }
+    }
+
+    private static void insert() {
+        try {
+            File dataFile = new File("C:\\Users\\ASUS\\Documents\\DATAS\\Export\\USERS20250129102052.txt");
+            new DataBaseTable(SgbdType.POSTGRESQL, postgresConnectionParameters())
+                    .insert()
+                    .execute(TABLE_NAME, columns(), dataFile);
+        } catch (NotSupportedDataBaseException ex) {
+            Logger.getLogger(App.class.getName()).log(Level.SEVERE, null, ex);
+        } catch (Exception ex) {
+            Logger.getLogger(App.class.getName()).log(Level.SEVERE, null, ex);
+        }
+    }
+
+    private static void postgresSelectQuery() {
+        try {
+//            List<Map<String, Object>> data = new PostgresSelectQuery(connectionParameters()).execute("ref000018_caaadm", Arrays.asList());
+//System.out.println("***************** size " + data.size());
+//            System.out.println("" + data.get(0));
+            new PostgresSelectQuery(postgresConnectionParameters()).execute("users", columns(), TABLE_NAME, OUTPUT_DIR, true);
+
+        } catch (Exception ex) {
+            Logger.getLogger(App.class.getName()).log(Level.SEVERE, null, ex);
+        }
+    }
+
+    private static void postgresInsertQuery() {
+        File dataFile = new File("C:\\Users\\ASUS\\Documents\\DATAS\\Export\\USERS20250127160445.txt");
+        try {
+            new PostgresInsertQuery(postgresConnectionParameters()).execute(TABLE_NAME, columns(), data());
+        } catch (Exception ex) {
+            Logger.getLogger(App.class.getName()).log(Level.SEVERE, null, ex);
+        }
+    }
+
+    private static List<DbColumnDescription> columns() {
+        try {
+            List<DbColumnDescription> cols = new ArrayList<>();
+//        cols.add(new DbColumnDescription("code_adnt", TypeDonnee.ALPHANUMERIQUE, 10, 1));
+//        cols.add(new DbColumnDescription("valeur", TypeDonnee.ALPHANUMERIQUE, 20, 2));
+//        cols.add(new DbColumnDescription("code_val", TypeDonnee.ALPHANUMERIQUE, 30, 3));
+//        cols.add(new DbColumnDescription("qua_ti_col", TypeDonnee.ALPHANUMERIQUE, 30, 4));
+//        cols.add(new DbColumnDescription("te_cpt_cons", TypeDonnee.ALPHANUMERIQUE, 50, 5));
+
+            cols.add(new DbColumnDescription("username", TypeDonnee.ALPHANUMERIQUE, 4, 1, null, null, 0));
+            cols.add(new DbColumnDescription("montant", TypeDonnee.NUMERIQUE, 10, 2, null, null, 0));
+
+            DbColumnDescription desc = new DbColumnDescription("dateaction", TypeDonnee.DATE, 10, 3, "yyyyMMdd", "-", 0);
+            cols.add(desc);
+
+            return cols;
+        } catch (IllegalFormatDateException ex) {
+            Logger.getLogger(App.class.getName()).log(Level.SEVERE, null, ex);
+            return null;
+        }
+    }
+
+    private static List<Map<String, Object>> data() {
+        List<Map<String, Object>> data = new ArrayList<>();
+        Map<String, Object> map = new HashMap<>();
+
+        map.put("username", "Samory");
+        map.put("montant", "000025");
+        map.put("dateaction", "2025-02-06");
+        data.add(map);
+
+        return data;
+    }
+}
diff --git a/query-adhoc/src/main/java/com/megatim/queryadhoc/connection/abtracts/DataBaseConnection.java b/query-adhoc/src/main/java/com/megatim/queryadhoc/connection/abtracts/DataBaseConnection.java
new file mode 100644
index 0000000..ecf0bd7
--- /dev/null
+++ b/query-adhoc/src/main/java/com/megatim/queryadhoc/connection/abtracts/DataBaseConnection.java
@@ -0,0 +1,41 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.queryadhoc.connection.abtracts;
+
+import com.megatim.queryadhoc.exceptions.ConnectionException;
+import com.megatim.queryadhoc.exceptions.ConnectionParameterException;
+import com.megatim.queryadhoc.exceptions.NotSupportedDataBaseException;
+import com.megatim.queryadhoc.factory.DbConnectionFactory;
+import com.megatim.queryadhoc.model.ConnectionParameter;
+import com.megatim.queryadhoc.validators.ConnectionParameterValidator;
+import java.sql.Connection;
+
+/**
+ *
+ * @author ASUS
+ */
+public abstract class DataBaseConnection {
+
+    protected final ConnectionParameter connectionParameter;
+    protected Connection connection;
+
+    public DataBaseConnection(ConnectionParameter connectionParameter) {
+        this.connectionParameter = connectionParameter;
+    }
+
+    protected void checkConnectionParameter(ConnectionParameter connectionParameter) throws ConnectionParameterException {
+        new ConnectionParameterValidator().checkConnectionParameter(connectionParameter);
+    }
+
+    public ConnectionParameter getConnectionParameter() {
+        return connectionParameter;
+    }
+    
+    public void closeConnection() throws ConnectionException {
+        DbConnectionFactory.closeConnection(connection);
+    }
+
+    public abstract Connection getConnection() throws ConnectionParameterException, NotSupportedDataBaseException, ConnectionException;
+}
diff --git a/query-adhoc/src/main/java/com/megatim/queryadhoc/connection/impl/MySqlDbConnection.java b/query-adhoc/src/main/java/com/megatim/queryadhoc/connection/impl/MySqlDbConnection.java
new file mode 100644
index 0000000..a12f18a
--- /dev/null
+++ b/query-adhoc/src/main/java/com/megatim/queryadhoc/connection/impl/MySqlDbConnection.java
@@ -0,0 +1,36 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.queryadhoc.connection.impl;
+
+import com.megatim.queryadhoc.enums.SgbdType;
+import com.megatim.queryadhoc.exceptions.ConnectionException;
+import com.megatim.queryadhoc.exceptions.ConnectionParameterException;
+import com.megatim.queryadhoc.exceptions.NotSupportedDataBaseException;
+import com.megatim.queryadhoc.factory.DbConnectionFactory;
+import com.megatim.queryadhoc.model.ConnectionParameter;
+import com.megatim.queryadhoc.connection.abtracts.DataBaseConnection;
+import java.sql.Connection;
+
+/**
+ *
+ * @author ASUS
+ */
+public class MySqlDbConnection extends DataBaseConnection {
+
+    public MySqlDbConnection(ConnectionParameter connectionParameter) {
+        super(connectionParameter);
+    }
+
+    @Override
+    public Connection getConnection() throws ConnectionParameterException, NotSupportedDataBaseException, ConnectionException {
+        if (connection == null) {
+            checkConnectionParameter(connectionParameter);
+            connection = DbConnectionFactory.createConnection(SgbdType.MYSQL, connectionParameter);
+        }
+
+        return connection;
+    }
+
+}
diff --git a/query-adhoc/src/main/java/com/megatim/queryadhoc/connection/impl/OracleDbConnection.java b/query-adhoc/src/main/java/com/megatim/queryadhoc/connection/impl/OracleDbConnection.java
new file mode 100644
index 0000000..a59c138
--- /dev/null
+++ b/query-adhoc/src/main/java/com/megatim/queryadhoc/connection/impl/OracleDbConnection.java
@@ -0,0 +1,35 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.queryadhoc.connection.impl;
+
+import com.megatim.queryadhoc.enums.SgbdType;
+import com.megatim.queryadhoc.exceptions.ConnectionException;
+import com.megatim.queryadhoc.exceptions.ConnectionParameterException;
+import com.megatim.queryadhoc.exceptions.NotSupportedDataBaseException;
+import com.megatim.queryadhoc.factory.DbConnectionFactory;
+import com.megatim.queryadhoc.model.ConnectionParameter;
+import com.megatim.queryadhoc.connection.abtracts.DataBaseConnection;
+import java.sql.Connection;
+
+/**
+ *
+ * @author ASUS
+ */
+public class OracleDbConnection extends DataBaseConnection {
+
+    public OracleDbConnection(ConnectionParameter connectionParameter) {
+        super(connectionParameter);
+    }
+
+    @Override
+    public Connection getConnection() throws ConnectionParameterException, NotSupportedDataBaseException, ConnectionException {
+        if (connection == null) {
+            checkConnectionParameter(connectionParameter);
+            connection = DbConnectionFactory.createConnection(SgbdType.ORACLE, connectionParameter);
+        }
+        return connection;
+    }
+
+}
diff --git a/query-adhoc/src/main/java/com/megatim/queryadhoc/connection/impl/PostgresDbConnection.java b/query-adhoc/src/main/java/com/megatim/queryadhoc/connection/impl/PostgresDbConnection.java
new file mode 100644
index 0000000..dcd2d57
--- /dev/null
+++ b/query-adhoc/src/main/java/com/megatim/queryadhoc/connection/impl/PostgresDbConnection.java
@@ -0,0 +1,34 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.queryadhoc.connection.impl;
+
+import com.megatim.queryadhoc.enums.SgbdType;
+import com.megatim.queryadhoc.exceptions.ConnectionException;
+import com.megatim.queryadhoc.exceptions.ConnectionParameterException;
+import com.megatim.queryadhoc.exceptions.NotSupportedDataBaseException;
+import com.megatim.queryadhoc.factory.DbConnectionFactory;
+import com.megatim.queryadhoc.model.ConnectionParameter;
+import com.megatim.queryadhoc.connection.abtracts.DataBaseConnection;
+import java.sql.Connection;
+
+/**
+ *
+ * @author ASUS
+ */
+public class PostgresDbConnection extends DataBaseConnection {
+
+    public PostgresDbConnection(ConnectionParameter connectionParameter) {
+        super(connectionParameter);
+    }
+
+    @Override
+    public Connection getConnection() throws ConnectionParameterException, NotSupportedDataBaseException, ConnectionException {
+        if (connection == null) {
+            checkConnectionParameter(connectionParameter);
+            connection = DbConnectionFactory.createConnection(SgbdType.POSTGRESQL, connectionParameter);
+        }
+        return connection;
+    }
+}
diff --git a/query-adhoc/src/main/java/com/megatim/queryadhoc/connection/impl/SqlServerDbConnection.java b/query-adhoc/src/main/java/com/megatim/queryadhoc/connection/impl/SqlServerDbConnection.java
new file mode 100644
index 0000000..d5e5146
--- /dev/null
+++ b/query-adhoc/src/main/java/com/megatim/queryadhoc/connection/impl/SqlServerDbConnection.java
@@ -0,0 +1,35 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.queryadhoc.connection.impl;
+
+import com.megatim.queryadhoc.enums.SgbdType;
+import com.megatim.queryadhoc.exceptions.ConnectionException;
+import com.megatim.queryadhoc.exceptions.ConnectionParameterException;
+import com.megatim.queryadhoc.exceptions.NotSupportedDataBaseException;
+import com.megatim.queryadhoc.factory.DbConnectionFactory;
+import com.megatim.queryadhoc.model.ConnectionParameter;
+import com.megatim.queryadhoc.connection.abtracts.DataBaseConnection;
+import java.sql.Connection;
+
+/**
+ *
+ * @author ASUS
+ */
+public class SqlServerDbConnection extends DataBaseConnection {
+
+    public SqlServerDbConnection(ConnectionParameter connectionParameter) {
+        super(connectionParameter);
+    }
+
+    @Override
+    public Connection getConnection() throws ConnectionParameterException, NotSupportedDataBaseException, ConnectionException {
+        if (connection == null) {
+            checkConnectionParameter(connectionParameter);
+            connection = DbConnectionFactory.createConnection(SgbdType.SQLSERVER, connectionParameter);
+        }
+        return connection;
+    }
+
+}
diff --git a/query-adhoc/src/main/java/com/megatim/queryadhoc/contrat/DataColumn.java b/query-adhoc/src/main/java/com/megatim/queryadhoc/contrat/DataColumn.java
new file mode 100644
index 0000000..54318e5
--- /dev/null
+++ b/query-adhoc/src/main/java/com/megatim/queryadhoc/contrat/DataColumn.java
@@ -0,0 +1,16 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Interface.java to edit this template
+ */
+package com.megatim.queryadhoc.contrat;
+
+/**
+ *
+ * @author ASUS
+ */
+public interface DataColumn {
+
+    String column();
+
+    Object value() throws Exception;
+}
diff --git a/query-adhoc/src/main/java/com/megatim/queryadhoc/contrat/DataRow.java b/query-adhoc/src/main/java/com/megatim/queryadhoc/contrat/DataRow.java
new file mode 100644
index 0000000..0855314
--- /dev/null
+++ b/query-adhoc/src/main/java/com/megatim/queryadhoc/contrat/DataRow.java
@@ -0,0 +1,16 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.queryadhoc.contrat;
+
+import java.util.List;
+
+/**
+ *
+ * @author ASUS
+ */
+public interface DataRow {
+
+    List<DataColumn> columns() throws Exception;
+}
diff --git a/query-adhoc/src/main/java/com/megatim/queryadhoc/contrat/DefaultPreparedStatementProcessor.java b/query-adhoc/src/main/java/com/megatim/queryadhoc/contrat/DefaultPreparedStatementProcessor.java
new file mode 100644
index 0000000..ab2ab61
--- /dev/null
+++ b/query-adhoc/src/main/java/com/megatim/queryadhoc/contrat/DefaultPreparedStatementProcessor.java
@@ -0,0 +1,64 @@
+package com.megatim.queryadhoc.contrat;
+
+import com.megatim.queryadhoc.model.QueryParam;
+import java.sql.PreparedStatement;
+import java.sql.SQLException;
+import java.sql.Timestamp;
+import java.time.LocalDateTime;
+import java.util.List;
+import java.util.concurrent.atomic.AtomicInteger;
+import javax.naming.NamingException;
+
+/**
+ *
+ * @author Gabuntu
+ */
+public class DefaultPreparedStatementProcessor implements PreparedStatementProcessor {
+
+    private final AtomicInteger lastIndex;
+
+    public DefaultPreparedStatementProcessor() {
+        lastIndex = new AtomicInteger(0);
+    }
+
+    public DefaultPreparedStatementProcessor(int startIndex) {
+        lastIndex = new AtomicInteger(startIndex);
+    }
+
+    @Override
+    public void process(PreparedStatement statement, List<QueryParam> queryParameters) throws NamingException, SQLException {
+        processStatement(statement, queryParameters);
+    }
+
+    @Override
+    public int lastProcessedIndex() {
+        return lastIndex.get();
+    }
+
+    private void processStatement(PreparedStatement preparedStatement, List<QueryParam> params) throws SQLException {
+
+        int statementIndex = 1;
+
+        for (QueryParam parameter : params) {
+
+            Object value = parameter.getParamValue();
+            if (value instanceof String) {
+                preparedStatement.setString(statementIndex, value.toString());
+            } else if (value instanceof Integer) {
+                preparedStatement.setInt(statementIndex, (Integer) value);
+            } else if (value instanceof Long) {
+                preparedStatement.setLong(statementIndex, (Long) value);
+            } else if (value instanceof Double) {
+                preparedStatement.setDouble(statementIndex, (Double) value);
+            } else if (value instanceof LocalDateTime) {
+                preparedStatement.setTimestamp(statementIndex, Timestamp.valueOf((LocalDateTime) value));
+            } else {
+                preparedStatement.setObject(statementIndex, value);
+            }
+
+            statementIndex++;
+        }
+
+    }
+
+}
diff --git a/query-adhoc/src/main/java/com/megatim/queryadhoc/contrat/InsertMetaData.java b/query-adhoc/src/main/java/com/megatim/queryadhoc/contrat/InsertMetaData.java
new file mode 100644
index 0000000..04bb2b7
--- /dev/null
+++ b/query-adhoc/src/main/java/com/megatim/queryadhoc/contrat/InsertMetaData.java
@@ -0,0 +1,19 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Interface.java to edit this template
+ */
+package com.megatim.queryadhoc.contrat;
+
+import java.util.List;
+
+/**
+ *
+ * @author ASUS
+ */
+public interface InsertMetaData {
+    String tableName();
+    
+    List<DataRow> rows() throws Exception;
+
+//    List<String> columnNames() throws Exception;
+}
diff --git a/query-adhoc/src/main/java/com/megatim/queryadhoc/contrat/PreparedStatementProcessor.java b/query-adhoc/src/main/java/com/megatim/queryadhoc/contrat/PreparedStatementProcessor.java
new file mode 100644
index 0000000..a6129fa
--- /dev/null
+++ b/query-adhoc/src/main/java/com/megatim/queryadhoc/contrat/PreparedStatementProcessor.java
@@ -0,0 +1,16 @@
+package com.megatim.queryadhoc.contrat;
+
+import com.megatim.queryadhoc.model.QueryParam;
+import java.sql.PreparedStatement;
+import java.util.List;
+
+/**
+ *
+ * @author Gabuntu
+ */
+public interface PreparedStatementProcessor {
+
+    void process(PreparedStatement statement, List<QueryParam> queryParameters) throws Exception;
+    
+    int lastProcessedIndex();
+}
diff --git a/query-adhoc/src/main/java/com/megatim/queryadhoc/enums/SgbdType.java b/query-adhoc/src/main/java/com/megatim/queryadhoc/enums/SgbdType.java
new file mode 100644
index 0000000..2ebb330
--- /dev/null
+++ b/query-adhoc/src/main/java/com/megatim/queryadhoc/enums/SgbdType.java
@@ -0,0 +1,13 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Enum.java to edit this template
+ */
+package com.megatim.queryadhoc.enums;
+
+/**
+ *
+ * @author ASUS
+ */
+public enum SgbdType {
+    ORACLE, POSTGRESQL, SQLSERVER, MYSQL;
+}
diff --git a/query-adhoc/src/main/java/com/megatim/queryadhoc/enums/TypeDonnee.java b/query-adhoc/src/main/java/com/megatim/queryadhoc/enums/TypeDonnee.java
new file mode 100644
index 0000000..c8e3e1c
--- /dev/null
+++ b/query-adhoc/src/main/java/com/megatim/queryadhoc/enums/TypeDonnee.java
@@ -0,0 +1,53 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Enum.java to edit this template
+ */
+package com.megatim.queryadhoc.enums;
+
+/**
+ *
+ * @author STEPHANIE
+ */
+public enum TypeDonnee {
+    ALPHANUMERIQUE("ALPHANUMERIQUE"),
+    NUMERIQUE("NUMERIQUE"),
+    DECIMAL("DECIMAL"),
+    DATE("DATE");
+
+    private final String value;
+
+    private TypeDonnee(String value) {
+        this.value = value;
+    }
+
+    public String getValue() {
+        return value;
+    }
+
+    public static TypeDonnee fromValeur(String value) {
+        if (value != null) {
+            if (value.equalsIgnoreCase(TypeDonnee.ALPHANUMERIQUE.getValue())) {
+                return TypeDonnee.ALPHANUMERIQUE;
+
+            } else if (value.equalsIgnoreCase(TypeDonnee.NUMERIQUE.getValue())) {
+                return TypeDonnee.NUMERIQUE;
+
+            } else if (value.equalsIgnoreCase(TypeDonnee.DATE.getValue())) {
+                return TypeDonnee.DATE;
+
+            } else if (value.equalsIgnoreCase(TypeDonnee.DECIMAL.getValue())) {
+                return TypeDonnee.DECIMAL;
+
+            } else {
+                return null;
+            }
+        } else {
+            return null;
+        }
+    }
+
+    @Override
+    public String toString() {
+        return value;
+    }
+}
diff --git a/query-adhoc/src/main/java/com/megatim/queryadhoc/exceptions/BadColumnTypeException.java b/query-adhoc/src/main/java/com/megatim/queryadhoc/exceptions/BadColumnTypeException.java
new file mode 100644
index 0000000..1a5f60d
--- /dev/null
+++ b/query-adhoc/src/main/java/com/megatim/queryadhoc/exceptions/BadColumnTypeException.java
@@ -0,0 +1,11 @@
+package com.megatim.queryadhoc.exceptions;
+
+/**
+ *
+ * @author Gabuntu
+ */
+public class BadColumnTypeException extends Exception {
+    public BadColumnTypeException(String message) {
+        super(message);
+    }
+}
diff --git a/query-adhoc/src/main/java/com/megatim/queryadhoc/exceptions/BadDataValueException.java b/query-adhoc/src/main/java/com/megatim/queryadhoc/exceptions/BadDataValueException.java
new file mode 100644
index 0000000..dfa85b7
--- /dev/null
+++ b/query-adhoc/src/main/java/com/megatim/queryadhoc/exceptions/BadDataValueException.java
@@ -0,0 +1,13 @@
+package com.megatim.queryadhoc.exceptions;
+
+/**
+ *
+ * @author Gabuntu
+ */
+public class BadDataValueException extends Exception {
+
+    public BadDataValueException(String message) {
+        super(message);
+    }
+
+}
diff --git a/query-adhoc/src/main/java/com/megatim/queryadhoc/exceptions/ColumnNotFoundException.java b/query-adhoc/src/main/java/com/megatim/queryadhoc/exceptions/ColumnNotFoundException.java
new file mode 100644
index 0000000..e457c6f
--- /dev/null
+++ b/query-adhoc/src/main/java/com/megatim/queryadhoc/exceptions/ColumnNotFoundException.java
@@ -0,0 +1,17 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.queryadhoc.exceptions;
+
+/**
+ *
+ * @author ASUS
+ */
+public class ColumnNotFoundException extends Exception {
+
+    public ColumnNotFoundException(String columnName, String tableName) {
+        super("La colonne '" + columnName + "' est introuvable dans la table '" + tableName + "' ");
+    }
+
+}
diff --git a/query-adhoc/src/main/java/com/megatim/queryadhoc/exceptions/ConnectionException.java b/query-adhoc/src/main/java/com/megatim/queryadhoc/exceptions/ConnectionException.java
new file mode 100644
index 0000000..78453d5
--- /dev/null
+++ b/query-adhoc/src/main/java/com/megatim/queryadhoc/exceptions/ConnectionException.java
@@ -0,0 +1,23 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.queryadhoc.exceptions;
+
+import com.megatim.queryadhoc.enums.SgbdType;
+
+/**
+ *
+ * @author ASUS
+ */
+public class ConnectionException extends Exception {
+
+    public ConnectionException(SgbdType sgbdType, String databaseName) {
+        super("La connexion à la base de données '" + databaseName + "' de '" + sgbdType + "' n'a pas pu être créee");
+    }
+
+    public ConnectionException() {
+        super("Impossible de fermer la connexion");
+    }
+
+}
diff --git a/query-adhoc/src/main/java/com/megatim/queryadhoc/exceptions/ConnectionParameterException.java b/query-adhoc/src/main/java/com/megatim/queryadhoc/exceptions/ConnectionParameterException.java
new file mode 100644
index 0000000..cd4132e
--- /dev/null
+++ b/query-adhoc/src/main/java/com/megatim/queryadhoc/exceptions/ConnectionParameterException.java
@@ -0,0 +1,16 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.queryadhoc.exceptions;
+
+/**
+ *
+ * @author ASUS
+ */
+public class ConnectionParameterException extends Exception {
+    public ConnectionParameterException(String message) {
+        super(message);
+    }
+    
+}
diff --git a/query-adhoc/src/main/java/com/megatim/queryadhoc/exceptions/IllegalFormatDateException.java b/query-adhoc/src/main/java/com/megatim/queryadhoc/exceptions/IllegalFormatDateException.java
new file mode 100644
index 0000000..dfce22e
--- /dev/null
+++ b/query-adhoc/src/main/java/com/megatim/queryadhoc/exceptions/IllegalFormatDateException.java
@@ -0,0 +1,20 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.queryadhoc.exceptions;
+
+/**
+ *
+ * @author ASUS
+ */
+public class IllegalFormatDateException extends Exception {
+    
+    public IllegalFormatDateException() {
+        super("Le format de la date ne peut être nul");
+    }
+    
+    public IllegalFormatDateException(String formatDate) {
+        super("Le format de date ci après n'est pas supoorté : '" + formatDate + "'");
+    }
+}
diff --git a/query-adhoc/src/main/java/com/megatim/queryadhoc/exceptions/LocalDateTimeValueParseError.java b/query-adhoc/src/main/java/com/megatim/queryadhoc/exceptions/LocalDateTimeValueParseError.java
new file mode 100644
index 0000000..b6a4290
--- /dev/null
+++ b/query-adhoc/src/main/java/com/megatim/queryadhoc/exceptions/LocalDateTimeValueParseError.java
@@ -0,0 +1,13 @@
+package com.megatim.queryadhoc.exceptions;
+
+/**
+ *
+ * @author Gabuntu
+ */
+public class LocalDateTimeValueParseError extends Exception {
+
+    public LocalDateTimeValueParseError(String message) {
+        super(message);
+    }
+
+}
diff --git a/query-adhoc/src/main/java/com/megatim/queryadhoc/exceptions/NotSupportedDataBaseException.java b/query-adhoc/src/main/java/com/megatim/queryadhoc/exceptions/NotSupportedDataBaseException.java
new file mode 100644
index 0000000..5f666dd
--- /dev/null
+++ b/query-adhoc/src/main/java/com/megatim/queryadhoc/exceptions/NotSupportedDataBaseException.java
@@ -0,0 +1,16 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.queryadhoc.exceptions;
+
+/**
+ *
+ * @author ASUS
+ */
+public class NotSupportedDataBaseException extends Exception {
+
+    public NotSupportedDataBaseException(String sgbdName) {
+        super("Le SGBD suivant '" + sgbdName + "' n'est pas supporté");
+    }
+}
diff --git a/query-adhoc/src/main/java/com/megatim/queryadhoc/exceptions/NotSupportedTypeDonneeException.java b/query-adhoc/src/main/java/com/megatim/queryadhoc/exceptions/NotSupportedTypeDonneeException.java
new file mode 100644
index 0000000..472fedd
--- /dev/null
+++ b/query-adhoc/src/main/java/com/megatim/queryadhoc/exceptions/NotSupportedTypeDonneeException.java
@@ -0,0 +1,18 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.queryadhoc.exceptions;
+
+import com.megatim.queryadhoc.enums.TypeDonnee;
+
+/**
+ *
+ * @author ASUS
+ */
+public class NotSupportedTypeDonneeException extends Exception {
+
+    public NotSupportedTypeDonneeException(TypeDonnee typeDonnee) {
+        super("Le type de donnee suivant est inconnu " + typeDonnee);
+    }
+}
diff --git a/query-adhoc/src/main/java/com/megatim/queryadhoc/factory/DbConnectionFactory.java b/query-adhoc/src/main/java/com/megatim/queryadhoc/factory/DbConnectionFactory.java
new file mode 100644
index 0000000..1997229
--- /dev/null
+++ b/query-adhoc/src/main/java/com/megatim/queryadhoc/factory/DbConnectionFactory.java
@@ -0,0 +1,132 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.queryadhoc.factory;
+
+import com.megatim.queryadhoc.enums.SgbdType;
+import com.megatim.queryadhoc.exceptions.ConnectionException;
+import com.megatim.queryadhoc.exceptions.ConnectionParameterException;
+import com.megatim.queryadhoc.exceptions.NotSupportedDataBaseException;
+import com.megatim.queryadhoc.model.ConnectionParameter;
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.SQLException;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+/**
+ *
+ * @author ASUS
+ */
+public class DbConnectionFactory {
+
+    private DbConnectionFactory() {
+    }
+
+    public static Connection createConnection(SgbdType sgbdType, ConnectionParameter connectionParameter) throws NotSupportedDataBaseException, ConnectionParameterException, ConnectionException {
+
+        if (sgbdType == null) {
+            throw new IllegalArgumentException("Le SGBD ne peut être nul");
+        }
+
+        switch (sgbdType) {
+            case ORACLE:
+                return createOracleConnection(connectionParameter);
+            case MYSQL:
+                return createMySqlConnection(connectionParameter);
+            case SQLSERVER:
+                return createSqlServerConnection(connectionParameter);
+            case POSTGRESQL:
+                return createPostgresConnection(connectionParameter);
+            default:
+                throw new NotSupportedDataBaseException(sgbdType.name());
+        }
+    }
+
+    public static void closeConnection(Connection connection) throws ConnectionException {
+        try {
+            if (connection != null) {
+                connection.close();
+            }
+        } catch (SQLException ex) {
+            Logger.getLogger(DbConnectionFactory.class.getName()).log(Level.SEVERE, ex.getMessage(), ex);
+            throw new ConnectionException();
+        }
+    }
+
+    private static Connection createOracleConnection(ConnectionParameter connectionParameter) throws ConnectionException {
+        try {
+            Class.forName("oracle.jdbc.OracleDriver");
+            String url = "jdbc:oracle:thin:@//" + connectionParameter.getIpAddress() + ":" + connectionParameter.getPort() + "/" + connectionParameter.getDatabaseName();
+
+            Connection connection = connection(url, connectionParameter.getUserName(), connectionParameter.getPassword());
+
+            // Check if the connection is not successful
+            if (connection == null) {
+                throw new ConnectionException(SgbdType.POSTGRESQL, connectionParameter.getDatabaseName());
+            }
+            return connection;
+        } catch (SQLException | ClassNotFoundException ex) {
+            throw new ConnectionException(SgbdType.ORACLE, connectionParameter.getDatabaseName());
+        }
+    }
+
+    private static Connection createSqlServerConnection(ConnectionParameter connectionParameter) throws ConnectionException {
+        try {
+            Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
+            String url = "jdbc:sqlserver://" + connectionParameter.getIpAddress() + ":" + connectionParameter.getPort() + ";databaseName=" + connectionParameter.getDatabaseName()
+                    + ";encrypt=false;trustServerCertificate=false;";
+
+            Connection connection = connection(url, connectionParameter.getUserName(), connectionParameter.getPassword());
+
+            // Check if the connection is not successful
+            if (connection == null) {
+                throw new ConnectionException(SgbdType.POSTGRESQL, connectionParameter.getDatabaseName());
+            }
+            return connection;
+        } catch (SQLException | ClassNotFoundException ex) {
+            throw new ConnectionException(SgbdType.SQLSERVER, connectionParameter.getDatabaseName());
+        }
+    }
+
+    private static Connection createMySqlConnection(ConnectionParameter connectionParameter) throws ConnectionException {
+
+        try {
+            Class.forName("com.mysql.cj.jdbc.Driver");
+            String url = "jdbc:mysql://" + connectionParameter.getIpAddress() + ":" + connectionParameter.getPort() + "/" + connectionParameter.getDatabaseName() + "?useSSL=false";
+
+            Connection connection = connection(url, connectionParameter.getUserName(), connectionParameter.getPassword());
+
+            // Check if the connection is not successful
+            if (connection == null) {
+                throw new ConnectionException(SgbdType.POSTGRESQL, connectionParameter.getDatabaseName());
+            }
+            return connection;
+        } catch (SQLException | ClassNotFoundException ex) {
+            throw new ConnectionException(SgbdType.MYSQL, connectionParameter.getDatabaseName());
+        }
+    }
+
+    private static Connection createPostgresConnection(ConnectionParameter connectionParameter) throws ConnectionException {
+        try {
+            Class.forName("org.postgresql.Driver");
+            String url = "jdbc:postgresql://" + connectionParameter.getIpAddress() + ":" + connectionParameter.getPort() + "/" + connectionParameter.getDatabaseName();
+
+            Connection connection = connection(url, connectionParameter.getUserName(), connectionParameter.getPassword());
+
+            // Check if the connection is not successful
+            if (connection == null) {
+                throw new ConnectionException(SgbdType.POSTGRESQL, connectionParameter.getDatabaseName());
+            }
+            return connection;
+        } catch (SQLException | ClassNotFoundException ex) {
+            throw new ConnectionException(SgbdType.POSTGRESQL, connectionParameter.getDatabaseName());
+        }
+    }
+
+    private static Connection connection(String url, String userName, String password) throws ConnectionException, SQLException {
+        // Create the connection
+        return DriverManager.getConnection(url, userName, password);
+    }
+}
diff --git a/query-adhoc/src/main/java/com/megatim/queryadhoc/model/ConnectionParameter.java b/query-adhoc/src/main/java/com/megatim/queryadhoc/model/ConnectionParameter.java
new file mode 100644
index 0000000..e6b4274
--- /dev/null
+++ b/query-adhoc/src/main/java/com/megatim/queryadhoc/model/ConnectionParameter.java
@@ -0,0 +1,51 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.queryadhoc.model;
+
+/**
+ *
+ * @author ASUS
+ */
+public class ConnectionParameter {
+
+    private final int port;
+
+    private final String databaseName;
+
+    private final String userName;
+
+    private final String ipAddress;
+    
+    private final String password;
+
+    public ConnectionParameter(int port, String databaseName, String userName, String ipAddress, String password) {
+        this.port = port;
+        this.databaseName = databaseName;
+        this.userName = userName;
+        this.ipAddress = ipAddress;
+        this.password = password;
+    }
+
+    public int getPort() {
+        return port;
+    }
+
+    public String getDatabaseName() {
+        return databaseName;
+    }
+
+    public String getUserName() {
+        return userName;
+    }
+
+    public String getIpAddress() {
+        return ipAddress;
+    }
+
+    public String getPassword() {
+        return password;
+    }
+
+}
diff --git a/query-adhoc/src/main/java/com/megatim/queryadhoc/model/DbColumnDescription.java b/query-adhoc/src/main/java/com/megatim/queryadhoc/model/DbColumnDescription.java
new file mode 100644
index 0000000..401a34b
--- /dev/null
+++ b/query-adhoc/src/main/java/com/megatim/queryadhoc/model/DbColumnDescription.java
@@ -0,0 +1,121 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.queryadhoc.model;
+
+import com.megatim.queryadhoc.enums.TypeDonnee;
+import com.megatim.queryadhoc.exceptions.IllegalFormatDateException;
+
+/**
+ *
+ * @author ASUS
+ */
+public class DbColumnDescription {
+
+    private final String name;
+
+    private final TypeDonnee typeDonnee;
+
+    private final int taille;
+
+    private final int taillePartieDecimale;
+
+    private final String formatDate;
+
+    private final int position;
+
+    public DbColumnDescription(String name, TypeDonnee typeDonnee, int taille, int position, String formatDate, String separateurDate, int taillePartieDecimale) throws IllegalFormatDateException {
+        this.name = name;
+        this.typeDonnee = typeDonnee;
+        this.taille = taille;
+        this.position = position;
+        this.taillePartieDecimale = taillePartieDecimale;
+        this.formatDate = finalFormatDate(typeDonnee, formatDate, separateurDate);
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public TypeDonnee getTypeDonnee() {
+        return typeDonnee;
+    }
+
+    public int getTaille() {
+        return taille;
+    }
+
+    public int getTaillePartieDecimale() {
+        return taillePartieDecimale;
+    }
+
+    public String getFormatDate() {
+        return formatDate;
+    }
+
+    public int getPosition() {
+        return position;
+    }
+
+    @Override
+    public String toString() {
+        return "DbColumnDescription{" + "name=" + name + ", position=" + position + '}';
+    }
+
+    private String finalFormatDate(TypeDonnee typeDonnee, String formatDate, String separateurDate) throws IllegalFormatDateException {
+        if (typeDonnee != TypeDonnee.DATE || formatDate == null || formatDate.isEmpty()) {
+            return null;
+        }
+        final String yearPattern = "yyyy";
+        final String monthPattern = "MM";
+        final String dayPattern = "dd";
+
+        if (formatDate.length() == 4 && formatDate.equals(yearPattern)) {
+            return formatDate;
+
+        } else if (formatDate.length() == 6 && formatDate.contains(yearPattern) && formatDate.contains(monthPattern)) {
+            if (formatDate.startsWith(yearPattern)) {
+                return yearPattern + separateurDate + monthPattern;
+            } else {
+                return monthPattern + separateurDate + yearPattern;
+            }
+        } else if (formatDate.length() == 7 && formatDate.contains(yearPattern) && formatDate.contains(monthPattern)) {
+            return formatDate;
+
+        } else if (formatDate.length() == 8 && formatDate.contains(yearPattern) && formatDate.contains(monthPattern) && formatDate.contains(dayPattern)) {
+
+            if (formatDate.startsWith(yearPattern)) {
+
+                if (formatDate.endsWith(dayPattern)) {
+                    return yearPattern + separateurDate + monthPattern + separateurDate + dayPattern;
+
+                } else {
+                    return yearPattern + separateurDate + dayPattern + separateurDate + monthPattern;
+                }
+            } else if (formatDate.startsWith(monthPattern)) {
+
+                if (formatDate.endsWith(dayPattern)) {
+                    return monthPattern + separateurDate + yearPattern + separateurDate + dayPattern;
+
+                } else {
+                    return monthPattern + separateurDate + dayPattern + separateurDate + yearPattern;
+                }
+            } else if (formatDate.startsWith(dayPattern)) {
+
+                if (formatDate.endsWith(yearPattern)) {
+                    return dayPattern + separateurDate + monthPattern + separateurDate + yearPattern;
+
+                } else {
+                    return dayPattern + separateurDate + yearPattern + separateurDate + monthPattern;
+                }
+            } else {
+                throw new IllegalFormatDateException(formatDate);
+            }
+        } else if (formatDate.length() == 10 && formatDate.contains(yearPattern) && formatDate.contains(monthPattern) && formatDate.contains(dayPattern)) {
+            return formatDate;
+        } else {
+            throw new IllegalFormatDateException(formatDate);
+        }
+    }
+}
diff --git a/query-adhoc/src/main/java/com/megatim/queryadhoc/model/QueryParam.java b/query-adhoc/src/main/java/com/megatim/queryadhoc/model/QueryParam.java
new file mode 100644
index 0000000..fe5002f
--- /dev/null
+++ b/query-adhoc/src/main/java/com/megatim/queryadhoc/model/QueryParam.java
@@ -0,0 +1,24 @@
+package com.megatim.queryadhoc.model;
+
+/**
+ *
+ * @author Gabuntu
+ */
+public class QueryParam {
+
+    private final String nomColonne;
+    private final Object paramValue;
+
+    public QueryParam(String nomColonne, Object paramValue) {
+        this.nomColonne = nomColonne;
+        this.paramValue = paramValue;
+    }
+
+    public String getNomColonne() {
+        return nomColonne;
+    }
+
+    public Object getParamValue() {
+        return paramValue;
+    }
+}
diff --git a/query-adhoc/src/main/java/com/megatim/queryadhoc/queries/CommonInsertQuery.java b/query-adhoc/src/main/java/com/megatim/queryadhoc/queries/CommonInsertQuery.java
new file mode 100644
index 0000000..9215c32
--- /dev/null
+++ b/query-adhoc/src/main/java/com/megatim/queryadhoc/queries/CommonInsertQuery.java
@@ -0,0 +1,87 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.queryadhoc.queries;
+
+import com.megatim.queryadhoc.contrat.DataColumn;
+import com.megatim.queryadhoc.contrat.DataRow;
+import com.megatim.queryadhoc.model.QueryParam;
+import com.megatim.queryadhoc.contrat.DefaultPreparedStatementProcessor;
+import com.megatim.queryadhoc.contrat.PreparedStatementProcessor;
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.SQLException;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ *
+ * @author ASUS
+ */
+public class CommonInsertQuery {
+
+    private final String tableName;
+    protected final Connection connection;
+    private final List<String> columnNames;
+    private final List<DataRow> rows;
+    private final int BATCH_SIZE = 1000;
+
+    public CommonInsertQuery(String tableName, final Connection connection, List<String> columnNames, List<DataRow> rows) {
+        this.tableName = tableName;
+        this.connection = connection;
+        this.columnNames = columnNames;
+        this.rows = rows;
+    }
+
+    public void execute() throws Exception {
+
+        try ( PreparedStatement statement = connection.prepareStatement(insertQueryString());) {
+
+            executeInBatch(statement, rows);
+            statement.executeBatch();
+        }
+    }
+
+    private String insertQueryString() {
+
+        StringBuilder query = new StringBuilder("INSERT INTO " + tableName + "(");
+
+        columnNames.forEach(column -> query.append(column).append(","));
+
+        query.replace(query.length() - 1, query.length(), ") VALUES(");
+
+        columnNames.forEach(s -> query.append("?,"));
+
+        query.replace(query.length() - 1, query.length(), ")");
+
+        return query.toString();
+    }
+
+    private void executeInBatch(PreparedStatement preparedStatement, List<DataRow> rows) throws SQLException, Exception {
+
+        int index = 0;
+        int count = 0;
+
+        for (DataRow row : rows) {
+
+            List<QueryParam> queryParameters = new ArrayList<>();
+
+            for (DataColumn dataColumn : row.columns()) {
+                queryParameters.add(new QueryParam(dataColumn.column(), dataColumn.value()));
+            }
+
+            PreparedStatementProcessor statementProcessor = new DefaultPreparedStatementProcessor(index);
+            statementProcessor.process(preparedStatement, queryParameters);
+            index = statementProcessor.lastProcessedIndex();
+
+            preparedStatement.addBatch();
+
+            if (++count % BATCH_SIZE == 0) {
+                preparedStatement.executeBatch();
+            }
+
+        }
+
+    }
+}
diff --git a/query-adhoc/src/main/java/com/megatim/queryadhoc/queries/CommonSelectQuery.java b/query-adhoc/src/main/java/com/megatim/queryadhoc/queries/CommonSelectQuery.java
new file mode 100644
index 0000000..b966a94
--- /dev/null
+++ b/query-adhoc/src/main/java/com/megatim/queryadhoc/queries/CommonSelectQuery.java
@@ -0,0 +1,115 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.queryadhoc.queries;
+
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.ResultSetMetaData;
+import java.sql.SQLException;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * @author ASUS
+ */
+public class CommonSelectQuery {
+
+    private final String tableName;
+    private final Connection connection;
+    private final List<String> selectColumns;
+    private final int limit;
+    private final int offset;
+
+    public CommonSelectQuery(Connection connection, String tableName, List<String> selectColumns, int limit, int offset) {
+        this.tableName = tableName;
+        this.connection = connection;
+        this.selectColumns = selectColumns;
+        this.limit = limit;
+        this.offset = offset;
+    }
+
+    public CommonSelectQuery(Connection connection, String tableName, List<String> selectColumns) {
+        this(connection, tableName, selectColumns, -1, -1);
+    }
+
+    public CommonSelectQuery(String tableName, Connection connection, List<String> selectColumns, int limit, int offset, boolean withCustomColumns) {
+        this.tableName = tableName;
+        this.connection = connection;
+        this.selectColumns = selectColumns;
+        this.limit = limit;
+        this.offset = offset;
+    }
+
+    public List<Map<String, Object>> execute() throws SQLException {
+        List<Map<String, Object>> allData = new ArrayList<>();
+
+        try ( PreparedStatement statement = connection.prepareStatement(selectQuery())) {
+            ResultSet resultSet = statement.executeQuery();
+            ResultSetMetaData metaData = resultSet.getMetaData();
+            int columnCount = metaData.getColumnCount();
+
+            while (resultSet.next()) {
+                Map<String, Object> dataMap = new HashMap<>();
+
+                for (int i = 1; i <= columnCount; i++) {
+                    String name = metaData.getColumnName(i).trim();
+                    Object value = resultSet.getObject(i);
+                    dataMap.put(name, cleanData(value));
+                }
+
+                allData.add(dataMap);
+            }
+        }
+        return allData;
+    }
+
+    public String selectQuery() {
+
+        StringBuilder query = new StringBuilder("SELECT ");
+
+        if (selectColumns.isEmpty()) {
+
+            query.append(" * ");
+
+        } else {
+
+            selectColumns.forEach(c -> query.append(c.toLowerCase()).append(","));
+            query.replace(query.length() - 1, query.length(), ""); //retirer la sernière virgule
+
+        }
+
+        query
+                .append(" FROM ")
+                .append(tableName);
+
+        if (limit > 0 && offset >= 0) {
+
+            query
+                    .append(" LIMIT ")
+                    .append(limit)
+                    .append(" OFFSET ")
+                    .append(offset);
+        }
+
+        return query.toString();
+    }
+
+    private Object cleanData(Object data) {
+        if (data == null) {
+            return null;
+        }
+
+        if (data instanceof String) {
+            String dataString = ((String) data).trim();
+            return dataString.replaceAll("(?U)\\s+", " ");
+        } else {
+            return data;
+        }
+    }
+}
diff --git a/query-adhoc/src/main/java/com/megatim/queryadhoc/queries/metadata/DefaultDataColumn.java b/query-adhoc/src/main/java/com/megatim/queryadhoc/queries/metadata/DefaultDataColumn.java
new file mode 100644
index 0000000..6bd853c
--- /dev/null
+++ b/query-adhoc/src/main/java/com/megatim/queryadhoc/queries/metadata/DefaultDataColumn.java
@@ -0,0 +1,33 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.queryadhoc.queries.metadata;
+
+import com.megatim.queryadhoc.contrat.DataColumn;
+
+/**
+ *
+ * @author ASUS
+ */
+public class DefaultDataColumn implements DataColumn {
+
+    private final String column;
+    private final Object value;
+
+    public DefaultDataColumn(String column, Object value) {
+        this.column = column;
+        this.value = value;
+    }
+
+    @Override
+    public String column() {
+        return column;
+    }
+
+    @Override
+    public Object value() throws Exception {
+        return value;
+    }
+    
+}
diff --git a/query-adhoc/src/main/java/com/megatim/queryadhoc/queries/metadata/DefaultDataRow.java b/query-adhoc/src/main/java/com/megatim/queryadhoc/queries/metadata/DefaultDataRow.java
new file mode 100644
index 0000000..dd33408
--- /dev/null
+++ b/query-adhoc/src/main/java/com/megatim/queryadhoc/queries/metadata/DefaultDataRow.java
@@ -0,0 +1,35 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.queryadhoc.queries.metadata;
+
+import com.megatim.queryadhoc.contrat.DataColumn;
+import com.megatim.queryadhoc.contrat.DataRow;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ *
+ * @author ASUS
+ */
+public class DefaultDataRow implements DataRow {
+
+    private final Map<String, Object> entity;
+
+    public DefaultDataRow(Map<String, Object> entity) {
+        this.entity = entity;
+    }
+
+    @Override
+    public List<DataColumn> columns() {
+        return entity
+                .entrySet()
+                .stream()
+                .map(e -> new DefaultDataColumn(e.getKey(), e.getValue()))
+                .sorted((c1, c2) -> c1.column().compareTo(c2.column())) //On se rassure de classer le résultat
+                .collect(Collectors.toList());
+    }
+
+}
diff --git a/query-adhoc/src/main/java/com/megatim/queryadhoc/queries/metadata/InsertData.java b/query-adhoc/src/main/java/com/megatim/queryadhoc/queries/metadata/InsertData.java
new file mode 100644
index 0000000..501d0a7
--- /dev/null
+++ b/query-adhoc/src/main/java/com/megatim/queryadhoc/queries/metadata/InsertData.java
@@ -0,0 +1,44 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.queryadhoc.queries.metadata;
+
+import com.megatim.queryadhoc.contrat.DataRow;
+import com.megatim.queryadhoc.contrat.InsertMetaData;
+import com.megatim.queryadhoc.exceptions.BadDataValueException;
+import com.megatim.queryadhoc.exceptions.ColumnNotFoundException;
+import com.megatim.queryadhoc.exceptions.LocalDateTimeValueParseError;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * @author ASUS
+ */
+public class InsertData implements InsertMetaData {
+
+    private final ParsedData parsedData;
+    private final String tableName;
+
+    public InsertData(String tableName, ParsedData parsedData) {
+        this.tableName = tableName;
+        this.parsedData = parsedData;
+    }
+
+    @Override
+    public String tableName() {
+        return tableName;
+    }
+
+    @Override
+    public List<DataRow> rows() throws BadDataValueException, LocalDateTimeValueParseError, ColumnNotFoundException {
+        List<DataRow> rows = new ArrayList<>();
+        for (Map<String, Object> entity : parsedData.data()) {
+            rows.add(new DefaultDataRow(entity));
+        }
+        return rows;
+    }
+
+}
diff --git a/query-adhoc/src/main/java/com/megatim/queryadhoc/queries/metadata/LocalDateTimeValue.java b/query-adhoc/src/main/java/com/megatim/queryadhoc/queries/metadata/LocalDateTimeValue.java
new file mode 100644
index 0000000..b6ad112
--- /dev/null
+++ b/query-adhoc/src/main/java/com/megatim/queryadhoc/queries/metadata/LocalDateTimeValue.java
@@ -0,0 +1,92 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.queryadhoc.queries.metadata;
+
+import com.megatim.queryadhoc.exceptions.LocalDateTimeValueParseError;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeParseException;
+
+/**
+ *
+ * @author ASUS
+ */
+public class LocalDateTimeValue {
+
+    private final String format;
+    private final Object value;
+
+    public LocalDateTimeValue(String format, Object value) {
+        this.format = format;
+        this.value = value;
+    }
+
+    public LocalDateTime value() throws LocalDateTimeValueParseError {
+        final String stringValue = value.toString().trim();
+
+        try {
+
+            if (format.length() == 4 && format.equals("yyyy") && stringValue.matches("\\d{4}")) {
+                return LocalDateTime.of(Integer.parseInt(stringValue), 1, 1, 0, 0, 0);
+
+            } else if ((format.length() == 6 && stringValue.length() == 6) || (format.length() == 7) && stringValue.length() == 7) {
+
+                int monthIndex = index(format, "MM");
+                int yearIndex = index(format, "yyyy");
+                
+                return date(yearIndex, monthIndex, stringValue);
+                
+            } else if ((format.length() == 8 && stringValue.length() == 8)
+                    || (format.length() == 10 && stringValue.length() == 10)) {
+
+                int dayIndex = index(format, "dd");
+                int monthIndex = index(format, "MM");
+                int yearIndex = index(format, "yyyy");
+
+                return date(yearIndex, monthIndex, dayIndex, stringValue);
+            }
+
+        } catch (DateTimeParseException e) {
+            throw new LocalDateTimeValueParseError("Impossible de parser la valeur " + value + " au format " + format);
+        }
+
+        throw new LocalDateTimeValueParseError("Impossible de parser la valeur " + value + " au format " + format);
+    }
+
+    private int index(String format, String subSequence) {
+        return format.indexOf(subSequence);
+    }
+    private LocalDateTime date(int yearIndex, int monthIndex, int dayIndex, String stringValue) throws LocalDateTimeValueParseError {
+
+        if (yearIndex >= 0 && monthIndex >= 0 && dayIndex >= 0) {
+            int annee = Integer.parseInt(stringValue.substring(yearIndex, yearIndex + 4));
+            int mois = Integer.parseInt(stringValue.substring(monthIndex, monthIndex + 2));
+            int jour = Integer.parseInt(stringValue.substring(dayIndex, dayIndex + 2));
+
+            if (mois >= 1 && mois <= 12 && jour >= 1 && jour <= 31) {
+                if ((mois == 1 || mois == 3 || mois == 5 || mois == 7 || mois == 8 || mois == 10 || mois == 12) && jour <= 31//Les mois ayant 31 jours
+                        || ((mois == 4 || mois == 6 || mois == 9 || mois == 11) && jour <= 30)//les ayant 30 jours
+                        || (mois == 2 && (annee % 4 == 0 && jour <= 29 || jour <= 28))) { //Le mois de février
+
+                    return LocalDateTime.of(annee, mois, jour, 0, 0, 0, 0);
+                }
+            }
+        }
+        throw new LocalDateTimeValueParseError("Impossible de parser la valeur " + stringValue + " au format " + format);
+    }
+
+    private LocalDateTime date(int yearIndex, int monthIdex, String stringValue) throws LocalDateTimeValueParseError {
+
+        if (yearIndex >= 0 && monthIdex >= 0) {
+            int annee = Integer.parseInt(stringValue.substring(yearIndex, yearIndex + 4));
+            int mois = Integer.parseInt(stringValue.substring(monthIdex, monthIdex + 2));
+            int jour = 1;
+
+            if (mois >= 1 && mois <= 12) {
+                return LocalDateTime.of(annee, mois, jour, 0, 0, 0, 0);
+            }
+        }
+        throw new LocalDateTimeValueParseError("Impossible de parser la valeur " + stringValue + " au format " + format);
+    }
+}
diff --git a/query-adhoc/src/main/java/com/megatim/queryadhoc/queries/metadata/ParsedData.java b/query-adhoc/src/main/java/com/megatim/queryadhoc/queries/metadata/ParsedData.java
new file mode 100644
index 0000000..25e44f6
--- /dev/null
+++ b/query-adhoc/src/main/java/com/megatim/queryadhoc/queries/metadata/ParsedData.java
@@ -0,0 +1,40 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.queryadhoc.queries.metadata;
+
+import com.megatim.queryadhoc.exceptions.BadDataValueException;
+import com.megatim.queryadhoc.exceptions.ColumnNotFoundException;
+import com.megatim.queryadhoc.exceptions.LocalDateTimeValueParseError;
+import com.megatim.queryadhoc.model.DbColumnDescription;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * @author ASUS
+ */
+public class ParsedData {
+
+    private final List<Map<String, Object>> sourceData;
+    private final List<DbColumnDescription> columnsDescription;
+    private final String tableName;
+    private final List<Map<String, Object>> cachedData = new ArrayList<>();
+
+    public ParsedData(List<Map<String, Object>> sourceData, List<DbColumnDescription> columnsDescription, String tableName) {
+        this.sourceData = sourceData;
+        this.tableName = tableName;
+        this.columnsDescription = columnsDescription;
+    }
+
+    public List<Map<String, Object>> data() throws BadDataValueException, LocalDateTimeValueParseError, ColumnNotFoundException {
+        if (cachedData.isEmpty()) {
+            for (Map<String, Object> data : sourceData) {
+                cachedData.add(new ParsedDataRow(data, columnsDescription, tableName).dataRow());
+            }
+        }
+        return cachedData;
+    }
+}
diff --git a/query-adhoc/src/main/java/com/megatim/queryadhoc/queries/metadata/ParsedDataRow.java b/query-adhoc/src/main/java/com/megatim/queryadhoc/queries/metadata/ParsedDataRow.java
new file mode 100644
index 0000000..7e37682
--- /dev/null
+++ b/query-adhoc/src/main/java/com/megatim/queryadhoc/queries/metadata/ParsedDataRow.java
@@ -0,0 +1,117 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.queryadhoc.queries.metadata;
+
+import com.megatim.queryadhoc.enums.TypeDonnee;
+import com.megatim.queryadhoc.exceptions.BadDataValueException;
+import com.megatim.queryadhoc.exceptions.ColumnNotFoundException;
+import com.megatim.queryadhoc.exceptions.LocalDateTimeValueParseError;
+import com.megatim.queryadhoc.model.DbColumnDescription;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+import org.apache.commons.validator.GenericValidator;
+
+/**
+ *
+ * @author ASUS
+ */
+public class ParsedDataRow {
+
+    private final Map<String, Object> data;
+    private final String tableName;
+    private final Map<String, DbColumnDescription> columnNameToDbColumnDescription;
+    private final Map<String, Object> row = new HashMap<>();
+
+    public ParsedDataRow(Map<String, Object> data, List<DbColumnDescription> columnsDescription, String tableName) {
+        this.data = data;
+        this.tableName = tableName;
+        this.columnNameToDbColumnDescription
+                = columnsDescription
+                        .stream()
+                        .collect(Collectors.toMap(c -> c.getName().trim().toLowerCase(), c -> c));
+    }
+
+    public Map<String, Object> dataRow() throws ColumnNotFoundException, BadDataValueException, LocalDateTimeValueParseError {
+
+        if (row.isEmpty()) {
+
+            for (Map.Entry<String, Object> entry : data.entrySet()) {
+
+                String key = entry.getKey();
+                Object value = entry.getValue();
+
+                DbColumnDescription columnDesc = columnNameToDbColumnDescription.get(key.trim());
+                if (columnDesc == null) {
+                    throw new ColumnNotFoundException(key, tableName);
+                }
+
+                row.put(key.trim(), parse(columnDesc, value));
+            }
+
+        }
+
+        return row;
+    }
+
+    private Object parse(DbColumnDescription columnDesc, Object value) throws BadDataValueException, LocalDateTimeValueParseError {
+
+        TypeDonnee columnType = columnDesc.getTypeDonnee();
+
+        if (columnType.equals(TypeDonnee.ALPHANUMERIQUE) && (value == null
+                || (value instanceof String && lengthLowerOrEquals((String) value, columnDesc.getTaille())))) {
+
+            return value != null ? value.toString().replaceAll("\\s+", " ").trim() : value;
+
+        } else if (columnType.equals(TypeDonnee.NUMERIQUE)) {
+
+            if (value == null) {
+                return 0L;
+            }
+
+            String stringValue = value.toString();
+            if (lengthLowerOrEquals(stringValue, columnDesc.getTaille()) && GenericValidator.isLong(stringValue)) {
+                return Long.valueOf(stringValue);
+            }
+
+        } else if (columnType.equals(TypeDonnee.DECIMAL)) {
+
+            if (value == null) {
+                return 0.0;
+            }
+
+            String stringValue = value.toString();
+            if (lengthLowerOrEquals(stringValue, columnDesc.getTaille()) && GenericValidator.isDouble(stringValue)) {
+                return Double.valueOf(stringValue);
+            }
+
+        } else if (columnType.equals(TypeDonnee.DATE)) {
+
+            if (value == null) {
+                return null;
+            }
+            String stringValue = value.toString().trim();
+            
+            if (stringValue.isEmpty()) {
+                return null;
+            }
+
+            if (lengthEquals(stringValue, columnDesc.getTaille()) && GenericValidator.isDate(stringValue, columnDesc.getFormatDate(), true)) {
+                return new LocalDateTimeValue(columnDesc.getFormatDate(), value).value();
+            }
+        }
+
+        throw new BadDataValueException("La valeur " + value + " ne correspond pas au format attendu pour la colonne " + columnDesc.getName());
+    }
+
+    private boolean lengthEquals(String value, int columnMaxLength) {
+        return value.trim().length() == columnMaxLength;
+    }
+
+    private boolean lengthLowerOrEquals(String value, int columnMaxLength) {
+        return value.trim().length() <= columnMaxLength;
+    }
+}
diff --git a/query-adhoc/src/main/java/com/megatim/queryadhoc/query/abstracts/DatabaseInsertQuery.java b/query-adhoc/src/main/java/com/megatim/queryadhoc/query/abstracts/DatabaseInsertQuery.java
new file mode 100644
index 0000000..c6eb634
--- /dev/null
+++ b/query-adhoc/src/main/java/com/megatim/queryadhoc/query/abstracts/DatabaseInsertQuery.java
@@ -0,0 +1,40 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.queryadhoc.query.abstracts;
+
+import com.megatim.queryadhoc.connection.abtracts.DataBaseConnection;
+import com.megatim.queryadhoc.exceptions.ConnectionException;
+import com.megatim.queryadhoc.exceptions.ConnectionParameterException;
+import com.megatim.queryadhoc.exceptions.NotSupportedDataBaseException;
+import com.megatim.queryadhoc.model.ConnectionParameter;
+import com.megatim.queryadhoc.model.DbColumnDescription;
+import java.sql.Connection;
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * @author ASUS
+ */
+public abstract class DatabaseInsertQuery {
+
+    protected final ConnectionParameter connectionParameter;
+
+    public DatabaseInsertQuery(ConnectionParameter connectionParameter) {
+        this.connectionParameter = connectionParameter;
+    }
+
+    public ConnectionParameter getConnectionParameter() {
+        return connectionParameter;
+    }
+
+    protected void execute(DataBaseConnection dbConnection, String tableName, List<Map<String, Object>> data, List<DbColumnDescription> columnsDescription) throws NotSupportedDataBaseException, ConnectionParameterException, ConnectionException, Exception {
+        insert(dbConnection.getConnection(), tableName, data, columnsDescription);
+        dbConnection.closeConnection();
+
+    }
+
+    protected abstract void insert(Connection connection, String tableName, List<Map<String, Object>> data, List<DbColumnDescription> columnsDescription) throws Exception;
+}
diff --git a/query-adhoc/src/main/java/com/megatim/queryadhoc/query/abstracts/DatabaseSelectQuery.java b/query-adhoc/src/main/java/com/megatim/queryadhoc/query/abstracts/DatabaseSelectQuery.java
new file mode 100644
index 0000000..2e30484
--- /dev/null
+++ b/query-adhoc/src/main/java/com/megatim/queryadhoc/query/abstracts/DatabaseSelectQuery.java
@@ -0,0 +1,71 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.queryadhoc.query.abstracts;
+
+import com.megatim.queryadhoc.connection.abtracts.DataBaseConnection;
+import com.megatim.queryadhoc.model.ConnectionParameter;
+import com.megatim.queryadhoc.model.DbColumnDescription;
+import com.megatim.queryadhoc.utils.DataFormatter;
+import java.io.BufferedWriter;
+import java.io.File;
+import java.nio.charset.StandardCharsets;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.nio.file.StandardOpenOption;
+import java.sql.Connection;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * @author ASUS
+ */
+public abstract class DatabaseSelectQuery {
+
+    protected final ConnectionParameter connectionParameter;
+
+    public DatabaseSelectQuery(ConnectionParameter connectionParameter) {
+        this.connectionParameter = connectionParameter;
+    }
+
+    public ConnectionParameter getConnectionParameter() {
+        return connectionParameter;
+    }
+
+    protected List<Map<String, Object>> execute(DataBaseConnection dbConnection, String tableName, List<String> columnsToSelect) throws Exception {
+        List<Map<String, Object>> data = select(tableName, dbConnection.getConnection(), columnsToSelect);
+        dbConnection.closeConnection();
+
+        return data;
+    }
+
+    protected File writeToFile(List<Map<String, Object>> data, List<DbColumnDescription> columnsDescription, String outputDir, String codeTypeFichier, String tableName,  boolean shouldTruncate) throws Exception {
+        Collections.sort(columnsDescription, (DbColumnDescription c1, DbColumnDescription c2) -> Integer.valueOf(c1.getPosition()).compareTo(c2.getPosition()));
+        Path path = constructFileName(codeTypeFichier, outputDir);
+
+        try ( BufferedWriter bufferWriter = Files.newBufferedWriter(path, StandardCharsets.UTF_8, StandardOpenOption.APPEND, StandardOpenOption.CREATE, StandardOpenOption.SYNC)) {
+
+            for (Map<String, Object> map : data) {
+                String line = DataFormatter.formatDatum(map, columnsDescription, tableName, shouldTruncate);
+                bufferWriter.write(line + System.lineSeparator());
+            }
+        }
+        return path.toFile();
+    }
+
+    private Path constructFileName(String codeTypeFichier, String exportDirectory) {
+        LocalDateTime date = LocalDateTime.now();
+        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMddHHmmss");
+        Path path = Paths.get(exportDirectory, codeTypeFichier.toUpperCase() + date.format(formatter) + ".txt");
+
+        return path;
+    }
+
+    protected abstract List<Map<String, Object>> select(String tableName, Connection connection, List<String> columnsToSelect) throws Exception;
+}
diff --git a/query-adhoc/src/main/java/com/megatim/queryadhoc/query/ifaces/InsertQuery.java b/query-adhoc/src/main/java/com/megatim/queryadhoc/query/ifaces/InsertQuery.java
new file mode 100644
index 0000000..39674cb
--- /dev/null
+++ b/query-adhoc/src/main/java/com/megatim/queryadhoc/query/ifaces/InsertQuery.java
@@ -0,0 +1,21 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Interface.java to edit this template
+ */
+package com.megatim.queryadhoc.query.ifaces;
+
+import com.megatim.queryadhoc.model.DbColumnDescription;
+import java.io.File;
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * @author ASUS
+ */
+public interface InsertQuery {
+
+    void execute(String tableName, List<DbColumnDescription> columnsDescription, List<Map<String, Object>> data) throws Exception;
+
+    void execute(String tableName, List<DbColumnDescription> columnsDescription, File file) throws Exception;
+}
diff --git a/query-adhoc/src/main/java/com/megatim/queryadhoc/query/ifaces/SelectQuery.java b/query-adhoc/src/main/java/com/megatim/queryadhoc/query/ifaces/SelectQuery.java
new file mode 100644
index 0000000..eded26c
--- /dev/null
+++ b/query-adhoc/src/main/java/com/megatim/queryadhoc/query/ifaces/SelectQuery.java
@@ -0,0 +1,21 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Interface.java to edit this template
+ */
+package com.megatim.queryadhoc.query.ifaces;
+
+import com.megatim.queryadhoc.model.DbColumnDescription;
+import java.io.File;
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * @author ASUS
+ */
+public interface SelectQuery {
+
+    List<Map<String, Object>> execute(String tableName, List<String> columnsToSelect) throws Exception;
+
+    File execute(String tableName, List<DbColumnDescription> columnsDescription, String outputDir, String codeTypeFichier, boolean shouldTruncate) throws Exception;
+}
diff --git a/query-adhoc/src/main/java/com/megatim/queryadhoc/query/insert/impl/MySqlInsertQuery.java b/query-adhoc/src/main/java/com/megatim/queryadhoc/query/insert/impl/MySqlInsertQuery.java
new file mode 100644
index 0000000..ca06c0b
--- /dev/null
+++ b/query-adhoc/src/main/java/com/megatim/queryadhoc/query/insert/impl/MySqlInsertQuery.java
@@ -0,0 +1,57 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.queryadhoc.query.insert.impl;
+
+import com.megatim.queryadhoc.connection.impl.MySqlDbConnection;
+import com.megatim.queryadhoc.contrat.InsertMetaData;
+import com.megatim.queryadhoc.model.ConnectionParameter;
+import com.megatim.queryadhoc.model.DbColumnDescription;
+import com.megatim.queryadhoc.queries.CommonInsertQuery;
+import com.megatim.queryadhoc.queries.metadata.InsertData;
+import com.megatim.queryadhoc.queries.metadata.ParsedData;
+import com.megatim.queryadhoc.query.abstracts.DatabaseInsertQuery;
+import com.megatim.queryadhoc.query.ifaces.InsertQuery;
+import com.megatim.queryadhoc.utils.FileDataReader;
+import java.io.File;
+import java.sql.Connection;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ *
+ * @author ASUS
+ */
+public class MySqlInsertQuery extends DatabaseInsertQuery implements InsertQuery {
+
+    public MySqlInsertQuery(ConnectionParameter connectionParameter) {
+        super(connectionParameter);
+    }
+
+    @Override
+    protected void insert(Connection connection, String tableName, List<Map<String, Object>> data, List<DbColumnDescription> columnsDescription) throws Exception {
+        Collections.sort(columnsDescription, (DbColumnDescription c1, DbColumnDescription c2) -> c1.getName().compareTo(c2.getName()));
+        
+        ParsedData parsedData = new ParsedData(data, columnsDescription, tableName);
+        InsertMetaData insertMetaData = new InsertData(tableName, parsedData);
+
+        List<String> columns = columnsDescription.stream().map(c -> c.getName()).collect(Collectors.toList());
+
+        new CommonInsertQuery(tableName, connection, columns, insertMetaData.rows()).execute();
+    }
+
+    @Override
+    public void execute(String tableName, List<DbColumnDescription> columnsDescription, List<Map<String, Object>> data) throws Exception {
+        execute(new MySqlDbConnection(connectionParameter), tableName, data, columnsDescription);
+    }
+
+    @Override
+    public void execute(String tableName, List<DbColumnDescription> columnsDescription, File dataFile) throws Exception {
+        List<Map<String, Object>> data = FileDataReader.readFile(columnsDescription, dataFile);
+        execute(tableName, columnsDescription, data);
+    }
+    
+}
diff --git a/query-adhoc/src/main/java/com/megatim/queryadhoc/query/insert/impl/OracleInsertQuery.java b/query-adhoc/src/main/java/com/megatim/queryadhoc/query/insert/impl/OracleInsertQuery.java
new file mode 100644
index 0000000..983a0b1
--- /dev/null
+++ b/query-adhoc/src/main/java/com/megatim/queryadhoc/query/insert/impl/OracleInsertQuery.java
@@ -0,0 +1,57 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.queryadhoc.query.insert.impl;
+
+import com.megatim.queryadhoc.connection.impl.OracleDbConnection;
+import com.megatim.queryadhoc.contrat.InsertMetaData;
+import com.megatim.queryadhoc.model.ConnectionParameter;
+import com.megatim.queryadhoc.model.DbColumnDescription;
+import com.megatim.queryadhoc.queries.CommonInsertQuery;
+import com.megatim.queryadhoc.queries.metadata.InsertData;
+import com.megatim.queryadhoc.queries.metadata.ParsedData;
+import com.megatim.queryadhoc.query.abstracts.DatabaseInsertQuery;
+import com.megatim.queryadhoc.query.ifaces.InsertQuery;
+import com.megatim.queryadhoc.utils.FileDataReader;
+import java.io.File;
+import java.sql.Connection;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ *
+ * @author ASUS
+ */
+public class OracleInsertQuery  extends DatabaseInsertQuery implements InsertQuery {
+
+    public OracleInsertQuery(ConnectionParameter connectionParameter) {
+        super(connectionParameter);
+    }
+
+    @Override
+    protected void insert(Connection connection, String tableName, List<Map<String, Object>> data, List<DbColumnDescription> columnsDescription) throws Exception {
+        Collections.sort(columnsDescription, (DbColumnDescription c1, DbColumnDescription c2) -> c1.getName().compareTo(c2.getName()));
+        
+        ParsedData parsedData = new ParsedData(data, columnsDescription, tableName);
+        InsertMetaData insertMetaData = new InsertData(tableName, parsedData);
+
+        List<String> columns = columnsDescription.stream().map(c -> c.getName()).collect(Collectors.toList());
+
+        new CommonInsertQuery(tableName, connection, columns, insertMetaData.rows()).execute();
+    }
+
+    @Override
+    public void execute(String tableName, List<DbColumnDescription> columnsDescription, List<Map<String, Object>> data) throws Exception {
+        execute(new OracleDbConnection(connectionParameter), tableName, data, columnsDescription);
+    }
+
+    @Override
+    public void execute(String tableName, List<DbColumnDescription> columnsDescription, File dataFile) throws Exception {
+        List<Map<String, Object>> data = FileDataReader.readFile(columnsDescription, dataFile);
+        execute(tableName, columnsDescription, data);
+    }
+    
+}
diff --git a/query-adhoc/src/main/java/com/megatim/queryadhoc/query/insert/impl/PostgresInsertQuery.java b/query-adhoc/src/main/java/com/megatim/queryadhoc/query/insert/impl/PostgresInsertQuery.java
new file mode 100644
index 0000000..7b64066
--- /dev/null
+++ b/query-adhoc/src/main/java/com/megatim/queryadhoc/query/insert/impl/PostgresInsertQuery.java
@@ -0,0 +1,57 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.queryadhoc.query.insert.impl;
+
+import com.megatim.queryadhoc.connection.impl.PostgresDbConnection;
+import com.megatim.queryadhoc.contrat.InsertMetaData;
+import com.megatim.queryadhoc.model.ConnectionParameter;
+import com.megatim.queryadhoc.model.DbColumnDescription;
+import com.megatim.queryadhoc.queries.CommonInsertQuery;
+import com.megatim.queryadhoc.queries.metadata.InsertData;
+import com.megatim.queryadhoc.queries.metadata.ParsedData;
+import com.megatim.queryadhoc.query.abstracts.DatabaseInsertQuery;
+import com.megatim.queryadhoc.query.ifaces.InsertQuery;
+import com.megatim.queryadhoc.utils.FileDataReader;
+import java.io.File;
+import java.sql.Connection;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ *
+ * @author ASUS
+ */
+public class PostgresInsertQuery extends DatabaseInsertQuery implements InsertQuery {
+
+    public PostgresInsertQuery(ConnectionParameter connectionParameter) {
+        super(connectionParameter);
+    }
+
+    @Override
+    protected void insert(Connection connection, String tableName, List<Map<String, Object>> data, List<DbColumnDescription> columnsDescription) throws Exception {
+        Collections.sort(columnsDescription, (DbColumnDescription c1, DbColumnDescription c2) -> c1.getName().compareTo(c2.getName()));
+        
+        ParsedData parsedData = new ParsedData(data, columnsDescription, tableName);
+        InsertMetaData insertMetaData = new InsertData(tableName, parsedData);
+
+        List<String> columns = columnsDescription.stream().map(c -> c.getName()).collect(Collectors.toList());
+
+        new CommonInsertQuery(tableName, connection, columns, insertMetaData.rows()).execute();
+    }
+
+    @Override
+    public void execute(String tableName, List<DbColumnDescription> columnsDescription, List<Map<String, Object>> data) throws Exception {
+        execute(new PostgresDbConnection(connectionParameter), tableName, data, columnsDescription);
+    }
+
+    @Override
+    public void execute(String tableName, List<DbColumnDescription> columnsDescription, File dataFile) throws Exception {
+        List<Map<String, Object>> data = FileDataReader.readFile(columnsDescription, dataFile);
+        execute(tableName, columnsDescription, data);
+    }
+
+}
diff --git a/query-adhoc/src/main/java/com/megatim/queryadhoc/query/insert/impl/SqlServerInsertQuery.java b/query-adhoc/src/main/java/com/megatim/queryadhoc/query/insert/impl/SqlServerInsertQuery.java
new file mode 100644
index 0000000..cb9ff2e
--- /dev/null
+++ b/query-adhoc/src/main/java/com/megatim/queryadhoc/query/insert/impl/SqlServerInsertQuery.java
@@ -0,0 +1,57 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.queryadhoc.query.insert.impl;
+
+import com.megatim.queryadhoc.connection.impl.SqlServerDbConnection;
+import com.megatim.queryadhoc.contrat.InsertMetaData;
+import com.megatim.queryadhoc.model.ConnectionParameter;
+import com.megatim.queryadhoc.model.DbColumnDescription;
+import com.megatim.queryadhoc.queries.CommonInsertQuery;
+import com.megatim.queryadhoc.queries.metadata.InsertData;
+import com.megatim.queryadhoc.queries.metadata.ParsedData;
+import com.megatim.queryadhoc.query.abstracts.DatabaseInsertQuery;
+import com.megatim.queryadhoc.query.ifaces.InsertQuery;
+import com.megatim.queryadhoc.utils.FileDataReader;
+import java.io.File;
+import java.sql.Connection;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ *
+ * @author ASUS
+ */
+public class SqlServerInsertQuery extends DatabaseInsertQuery implements InsertQuery {
+
+    public SqlServerInsertQuery(ConnectionParameter connectionParameter) {
+        super(connectionParameter);
+    }
+
+    @Override
+    protected void insert(Connection connection, String tableName, List<Map<String, Object>> data, List<DbColumnDescription> columnsDescription) throws Exception {
+        Collections.sort(columnsDescription, (DbColumnDescription c1, DbColumnDescription c2) -> c1.getName().compareTo(c2.getName()));
+        
+        ParsedData parsedData = new ParsedData(data, columnsDescription, tableName);
+        InsertMetaData insertMetaData = new InsertData(tableName, parsedData);
+
+        List<String> columns = columnsDescription.stream().map(c -> c.getName()).collect(Collectors.toList());
+
+        new CommonInsertQuery(tableName, connection, columns, insertMetaData.rows()).execute();
+    }
+
+    @Override
+    public void execute(String tableName, List<DbColumnDescription> columnsDescription, List<Map<String, Object>> data) throws Exception {
+        execute(new SqlServerDbConnection(connectionParameter), tableName, data, columnsDescription);
+    }
+
+    @Override
+    public void execute(String tableName, List<DbColumnDescription> columnsDescription, File dataFile) throws Exception {
+        List<Map<String, Object>> data = FileDataReader.readFile(columnsDescription, dataFile);
+        execute(tableName, columnsDescription, data);
+    }
+    
+}
diff --git a/query-adhoc/src/main/java/com/megatim/queryadhoc/query/select/impl/MySqlSelectQuery.java b/query-adhoc/src/main/java/com/megatim/queryadhoc/query/select/impl/MySqlSelectQuery.java
new file mode 100644
index 0000000..d30f89c
--- /dev/null
+++ b/query-adhoc/src/main/java/com/megatim/queryadhoc/query/select/impl/MySqlSelectQuery.java
@@ -0,0 +1,48 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.queryadhoc.query.select.impl;
+
+import com.megatim.queryadhoc.connection.impl.MySqlDbConnection;
+import com.megatim.queryadhoc.model.ConnectionParameter;
+import com.megatim.queryadhoc.query.abstracts.DatabaseSelectQuery;
+import com.megatim.queryadhoc.model.DbColumnDescription;
+import com.megatim.queryadhoc.queries.CommonSelectQuery;
+import java.io.File;
+import java.sql.Connection;
+import java.sql.SQLException;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+import com.megatim.queryadhoc.query.ifaces.SelectQuery;
+
+/**
+ *
+ * @author ASUS
+ */
+public class MySqlSelectQuery extends DatabaseSelectQuery implements SelectQuery {
+
+    public MySqlSelectQuery(ConnectionParameter connectionParameter) {
+        super(connectionParameter);
+    }
+
+    @Override
+    public List<Map<String, Object>> execute(String tableName, List<String> columnsToSelect) throws Exception {
+        return execute(new MySqlDbConnection(connectionParameter), tableName, columnsToSelect);
+    }
+
+    @Override
+    protected List<Map<String, Object>> select(String tableName, Connection connection, List<String> columnsToSelect) throws SQLException {
+        return new CommonSelectQuery(connection, tableName, columnsToSelect).execute();
+    }
+
+    @Override
+    public File execute(String tableName, List<DbColumnDescription> columnsDescription, String outputDir, String codeTypeFichier, boolean shouldTruncate) throws Exception {
+        List<String> columnsToSelect = columnsDescription.stream().map(c -> c.getName()).collect(Collectors.toList());
+        List<Map<String, Object>> data = execute(tableName, columnsToSelect);
+
+        return writeToFile(data, columnsDescription, outputDir, codeTypeFichier, tableName, shouldTruncate);
+    }
+
+}
diff --git a/query-adhoc/src/main/java/com/megatim/queryadhoc/query/select/impl/OracleSelectQuery.java b/query-adhoc/src/main/java/com/megatim/queryadhoc/query/select/impl/OracleSelectQuery.java
new file mode 100644
index 0000000..4d83cd0
--- /dev/null
+++ b/query-adhoc/src/main/java/com/megatim/queryadhoc/query/select/impl/OracleSelectQuery.java
@@ -0,0 +1,47 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.queryadhoc.query.select.impl;
+
+import com.megatim.queryadhoc.connection.impl.OracleDbConnection;
+import com.megatim.queryadhoc.model.ConnectionParameter;
+import com.megatim.queryadhoc.query.abstracts.DatabaseSelectQuery;
+import com.megatim.queryadhoc.model.DbColumnDescription;
+import com.megatim.queryadhoc.queries.CommonSelectQuery;
+import java.util.List;
+import java.io.File;
+import java.sql.Connection;
+import java.util.Map;
+import java.util.stream.Collectors;
+import com.megatim.queryadhoc.query.ifaces.SelectQuery;
+
+/**
+ *
+ * @author ASUS
+ */
+public class OracleSelectQuery extends DatabaseSelectQuery implements SelectQuery {
+
+    public OracleSelectQuery(ConnectionParameter connectionParameter) {
+        super(connectionParameter);
+    }
+
+    @Override
+    public List<Map<String, Object>> execute(String tableName, List<String> columnsToSelect) throws Exception {
+        return execute(new OracleDbConnection(connectionParameter), tableName, columnsToSelect);
+    }
+
+    @Override
+    protected List<Map<String, Object>> select(String tableName, Connection connection, List<String> columnsToSelect) throws Exception {
+        return new CommonSelectQuery(connection, tableName, columnsToSelect).execute();
+    }
+
+    @Override
+    public File execute(String tableName, List<DbColumnDescription> columnsDescription, String outputDir, String codeTypeFichier, boolean shouldTruncate) throws Exception {
+        List<String> columnsToSelect = columnsDescription.stream().map(c -> c.getName()).collect(Collectors.toList());
+        List<Map<String, Object>> data = execute(tableName, columnsToSelect);
+
+        return writeToFile(data, columnsDescription, outputDir, codeTypeFichier, tableName, shouldTruncate);
+    }
+
+}
diff --git a/query-adhoc/src/main/java/com/megatim/queryadhoc/query/select/impl/PostgresSelectQuery.java b/query-adhoc/src/main/java/com/megatim/queryadhoc/query/select/impl/PostgresSelectQuery.java
new file mode 100644
index 0000000..37b8fa7
--- /dev/null
+++ b/query-adhoc/src/main/java/com/megatim/queryadhoc/query/select/impl/PostgresSelectQuery.java
@@ -0,0 +1,47 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.queryadhoc.query.select.impl;
+
+import com.megatim.queryadhoc.connection.impl.PostgresDbConnection;
+import com.megatim.queryadhoc.model.ConnectionParameter;
+import com.megatim.queryadhoc.query.abstracts.DatabaseSelectQuery;
+import com.megatim.queryadhoc.model.DbColumnDescription;
+import com.megatim.queryadhoc.queries.CommonSelectQuery;
+import java.io.File;
+import java.sql.Connection;
+import java.sql.SQLException;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+import com.megatim.queryadhoc.query.ifaces.SelectQuery;
+
+/**
+ *
+ * @author ASUS
+ */
+public class PostgresSelectQuery extends DatabaseSelectQuery implements SelectQuery {
+
+    public PostgresSelectQuery(ConnectionParameter connectionParameter) {
+        super(connectionParameter);
+    }
+
+    @Override
+    public List<Map<String, Object>> execute(String tableName, List<String> columnsToSelect) throws Exception {
+        return execute(new PostgresDbConnection(connectionParameter), tableName, columnsToSelect);
+    }
+
+    @Override
+    protected List<Map<String, Object>> select(String tableName, Connection connection, List<String> columnsToSelect) throws SQLException {
+        return new CommonSelectQuery(connection, tableName, columnsToSelect).execute();
+    }
+
+    @Override
+    public File execute(String tableName, List<DbColumnDescription> columnsDescription, String outputDir,  String codeTypeFichier, boolean shouldTruncate) throws Exception {
+        List<String> columnsToSelect = columnsDescription.stream().map(c -> c.getName()).collect(Collectors.toList());
+        List<Map<String, Object>> data = execute(tableName, columnsToSelect);
+
+        return writeToFile(data, columnsDescription, outputDir, codeTypeFichier, tableName, shouldTruncate);
+    }
+}
diff --git a/query-adhoc/src/main/java/com/megatim/queryadhoc/query/select/impl/SqlServerSelectQuery.java b/query-adhoc/src/main/java/com/megatim/queryadhoc/query/select/impl/SqlServerSelectQuery.java
new file mode 100644
index 0000000..fa9fd4e
--- /dev/null
+++ b/query-adhoc/src/main/java/com/megatim/queryadhoc/query/select/impl/SqlServerSelectQuery.java
@@ -0,0 +1,47 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.queryadhoc.query.select.impl;
+
+import com.megatim.queryadhoc.connection.impl.SqlServerDbConnection;
+import com.megatim.queryadhoc.model.ConnectionParameter;
+import com.megatim.queryadhoc.query.abstracts.DatabaseSelectQuery;
+import com.megatim.queryadhoc.model.DbColumnDescription;
+import com.megatim.queryadhoc.queries.CommonSelectQuery;
+import java.io.File;
+import java.sql.Connection;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+import com.megatim.queryadhoc.query.ifaces.SelectQuery;
+
+/**
+ *
+ * @author ASUS
+ */
+public class SqlServerSelectQuery extends DatabaseSelectQuery implements SelectQuery {
+
+    public SqlServerSelectQuery(ConnectionParameter connectionParameter) {
+        super(connectionParameter);
+    }
+
+    @Override
+    public List<Map<String, Object>> execute(String tableName, List<String> columnsToSelect) throws Exception {
+        return execute(new SqlServerDbConnection(connectionParameter), tableName, columnsToSelect);
+    }
+
+    @Override
+    protected List<Map<String, Object>> select(String tableName, Connection connection, List<String> columnsToSelect) throws Exception {
+        return new CommonSelectQuery(connection, tableName, columnsToSelect).execute();
+    }
+
+    @Override
+    public File execute(String tableName, List<DbColumnDescription> columnsDescription, String outputDir, String codeTypeFichier, boolean shouldTruncate) throws Exception {
+        List<String> columnsToSelect = columnsDescription.stream().map(c -> c.getName()).collect(Collectors.toList());
+        List<Map<String, Object>> data = execute(tableName, columnsToSelect);
+
+        return writeToFile(data, columnsDescription, outputDir, codeTypeFichier, tableName, shouldTruncate);
+    }
+
+}
diff --git a/query-adhoc/src/main/java/com/megatim/queryadhoc/table/DataBaseTable.java b/query-adhoc/src/main/java/com/megatim/queryadhoc/table/DataBaseTable.java
new file mode 100644
index 0000000..fe42b72
--- /dev/null
+++ b/query-adhoc/src/main/java/com/megatim/queryadhoc/table/DataBaseTable.java
@@ -0,0 +1,145 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.queryadhoc.table;
+
+import com.megatim.queryadhoc.connection.abtracts.DataBaseConnection;
+import com.megatim.queryadhoc.connection.impl.MySqlDbConnection;
+import com.megatim.queryadhoc.connection.impl.OracleDbConnection;
+import com.megatim.queryadhoc.connection.impl.PostgresDbConnection;
+import com.megatim.queryadhoc.connection.impl.SqlServerDbConnection;
+import com.megatim.queryadhoc.enums.SgbdType;
+import com.megatim.queryadhoc.exceptions.ConnectionException;
+import com.megatim.queryadhoc.exceptions.ConnectionParameterException;
+import com.megatim.queryadhoc.exceptions.NotSupportedDataBaseException;
+import com.megatim.queryadhoc.model.ConnectionParameter;
+import com.megatim.queryadhoc.query.ifaces.InsertQuery;
+import com.megatim.queryadhoc.query.ifaces.SelectQuery;
+import com.megatim.queryadhoc.query.insert.impl.MySqlInsertQuery;
+import com.megatim.queryadhoc.query.insert.impl.OracleInsertQuery;
+import com.megatim.queryadhoc.query.insert.impl.PostgresInsertQuery;
+import com.megatim.queryadhoc.query.insert.impl.SqlServerInsertQuery;
+import com.megatim.queryadhoc.query.select.impl.MySqlSelectQuery;
+import com.megatim.queryadhoc.query.select.impl.OracleSelectQuery;
+import com.megatim.queryadhoc.query.select.impl.PostgresSelectQuery;
+import com.megatim.queryadhoc.query.select.impl.SqlServerSelectQuery;
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.SQLException;
+
+/**
+ *
+ * @author ASUS
+ */
+public class DataBaseTable {
+
+    private final SgbdType sgbdType;
+    private final ConnectionParameter connectionParameter;
+
+    public DataBaseTable(SgbdType sgbdType, ConnectionParameter connectionParameter) {
+        this.sgbdType = sgbdType;
+        this.connectionParameter = connectionParameter;
+    }
+
+    public SelectQuery select() throws NotSupportedDataBaseException {
+        if (sgbdType == null) {
+            throw new NotSupportedDataBaseException(null);
+        }
+        switch (sgbdType) {
+            case ORACLE:
+                return new OracleSelectQuery(connectionParameter);
+            case POSTGRESQL:
+                return new PostgresSelectQuery(connectionParameter);
+            case MYSQL:
+                return new MySqlSelectQuery(connectionParameter);
+            case SQLSERVER:
+                return new SqlServerSelectQuery(connectionParameter);
+            default:
+                throw new NotSupportedDataBaseException(sgbdType.name());
+        }
+    }
+
+    public InsertQuery insert() throws NotSupportedDataBaseException {
+        if (sgbdType == null) {
+            throw new NotSupportedDataBaseException(null);
+        }
+        switch (sgbdType) {
+            case ORACLE:
+                return new OracleInsertQuery(connectionParameter);
+            case POSTGRESQL:
+                return new PostgresInsertQuery(connectionParameter);
+            case MYSQL:
+                return new MySqlInsertQuery(connectionParameter);
+            case SQLSERVER:
+                return new SqlServerInsertQuery(connectionParameter);
+            default:
+                throw new NotSupportedDataBaseException(sgbdType.name());
+        }
+    }
+
+    public boolean isDatabaseAvailable() throws NotSupportedDataBaseException, ConnectionParameterException {
+        if (sgbdType == null) {
+            throw new NotSupportedDataBaseException(null);
+        }
+        try {
+            switch (sgbdType) {
+                case ORACLE:
+                    return isDatabaseAvailable(new OracleDbConnection(connectionParameter));
+                case POSTGRESQL:
+                    return isDatabaseAvailable(new PostgresDbConnection(connectionParameter));
+                case MYSQL:
+                    return isDatabaseAvailable(new MySqlDbConnection(connectionParameter));
+                case SQLSERVER:
+                    return isDatabaseAvailable(new SqlServerDbConnection(connectionParameter));
+                default:
+                    throw new NotSupportedDataBaseException(sgbdType.name());
+            }
+        } catch (ConnectionException ex) {
+            return false;
+        }
+    }
+
+    public boolean tableExists(String tableName) throws NotSupportedDataBaseException, ConnectionParameterException, ConnectionException {
+        if (sgbdType == null) {
+            throw new NotSupportedDataBaseException(null);
+        }
+        try {
+            switch (sgbdType) {
+                case ORACLE:
+                    return tableExists(new OracleDbConnection(connectionParameter), tableName);
+                case POSTGRESQL:
+                    return tableExists(new PostgresDbConnection(connectionParameter), tableName);
+                case MYSQL:
+                    return tableExists(new MySqlDbConnection(connectionParameter), tableName);
+                case SQLSERVER:
+                    return tableExists(new SqlServerDbConnection(connectionParameter), tableName);
+                default:
+                    throw new NotSupportedDataBaseException(sgbdType.name());
+            }
+        } catch (SQLException ex) {
+            return false;
+        }
+    }
+
+    private boolean isDatabaseAvailable(DataBaseConnection dbConnection) throws ConnectionException, ConnectionParameterException, NotSupportedDataBaseException {
+
+        if (dbConnection != null) {
+            dbConnection.getConnection();
+            dbConnection.closeConnection();
+            return true;
+        } else {
+            return false;
+        }
+    }
+
+    private boolean tableExists(DataBaseConnection dbConnection, String tableName) throws ConnectionParameterException, NotSupportedDataBaseException, ConnectionException, SQLException {
+        String query = "SELECT * FROM " + tableName;
+
+        try ( Connection connection = dbConnection.getConnection();  PreparedStatement stmt = connection.prepareStatement(query)) {
+            stmt.executeQuery();
+            dbConnection.closeConnection();
+            return true;
+        }
+    }
+}
diff --git a/query-adhoc/src/main/java/com/megatim/queryadhoc/utils/CommonUtilities.java b/query-adhoc/src/main/java/com/megatim/queryadhoc/utils/CommonUtilities.java
new file mode 100644
index 0000000..412f47d
--- /dev/null
+++ b/query-adhoc/src/main/java/com/megatim/queryadhoc/utils/CommonUtilities.java
@@ -0,0 +1,51 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.queryadhoc.utils;
+
+import java.io.BufferedInputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.InputStream;
+import java.nio.charset.Charset;
+import java.nio.charset.UnsupportedCharsetException;
+import org.apache.tika.parser.txt.CharsetDetector;
+import org.apache.tika.parser.txt.CharsetMatch;
+
+/**
+ *
+ * @author ASUS
+ */
+public class CommonUtilities {
+
+    private CommonUtilities() {
+
+    }
+
+    /**
+     * Méthode qui récupère l'encodage d'un fichier
+     *
+     * @param file : Fichier dont on veut connaître l'encodage
+     * @return : retourne l'encodage le plus probable
+     * @throws FileNotFoundException
+     * @throws IOException
+     */
+    public static Charset getCharset(File file) throws FileNotFoundException, IOException {
+        try ( InputStream stream = new FileInputStream(file);  InputStream input = new BufferedInputStream(stream);) {
+            CharsetDetector charsetDetector = new CharsetDetector();
+
+            charsetDetector.setText(input);
+
+            CharsetMatch charsetMatch = charsetDetector.detect();
+            String charsetName = charsetMatch != null ? charsetMatch.getName() : "";
+
+            return Charset.forName(charsetName);
+
+        } catch (UnsupportedCharsetException ex) {
+            return Charset.forName("Cp850");
+        }
+    }
+}
diff --git a/query-adhoc/src/main/java/com/megatim/queryadhoc/utils/DataFormatter.java b/query-adhoc/src/main/java/com/megatim/queryadhoc/utils/DataFormatter.java
new file mode 100644
index 0000000..6b9dbd4
--- /dev/null
+++ b/query-adhoc/src/main/java/com/megatim/queryadhoc/utils/DataFormatter.java
@@ -0,0 +1,124 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.queryadhoc.utils;
+
+import com.megatim.queryadhoc.enums.TypeDonnee;
+import static com.megatim.queryadhoc.enums.TypeDonnee.ALPHANUMERIQUE;
+import static com.megatim.queryadhoc.enums.TypeDonnee.DATE;
+import static com.megatim.queryadhoc.enums.TypeDonnee.DECIMAL;
+import static com.megatim.queryadhoc.enums.TypeDonnee.NUMERIQUE;
+import com.megatim.queryadhoc.exceptions.ColumnNotFoundException;
+import com.megatim.queryadhoc.exceptions.IllegalFormatDateException;
+import com.megatim.queryadhoc.exceptions.NotSupportedTypeDonneeException;
+import com.megatim.queryadhoc.model.DbColumnDescription;
+import java.sql.Timestamp;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * @author ASUS
+ */
+public class DataFormatter {
+
+    private DataFormatter() {
+
+    }
+
+    public static String formatDatum(Map<String, Object> datumMap, List<DbColumnDescription> columnsDescription, String tableName, boolean shouldTruncate) throws ColumnNotFoundException, NotSupportedTypeDonneeException, IllegalFormatDateException {
+        StringBuilder line = new StringBuilder();
+
+        for (DbColumnDescription dbCol : columnsDescription) {
+            if (!datumMap.containsKey(dbCol.getName().toLowerCase())) {
+                throw new ColumnNotFoundException(dbCol.getName(), tableName);
+            }
+            Object datum = datumMap.get(dbCol.getName().toLowerCase());
+            line.append(normalizeValue(datum, dbCol, shouldTruncate));
+        }
+        return line.toString();
+    }
+
+    private static String normalizeValue(Object value, DbColumnDescription columnDesc, boolean shouldTruncate) throws NotSupportedTypeDonneeException, IllegalFormatDateException {
+        if (columnDesc.getTypeDonnee() == null) {
+            throw new NotSupportedTypeDonneeException(null);
+        }
+        String stringValue = value != null ? value.toString() : "";
+
+        if (columnDesc.getTypeDonnee().equals(TypeDonnee.DATE)) {
+            if (stringValue.isEmpty()) {
+                stringValue = generateUnknown(columnDesc.getTaille(), " ");
+            } else {
+                Timestamp timestamp = null;
+                if (value instanceof Timestamp) {
+                    timestamp = (Timestamp) value;
+                } else {
+                    timestamp = new Timestamp((long) value);
+                }
+                stringValue = formatDateToString(timestamp, columnDesc);
+            }
+        }
+        if (stringValue.length() < columnDesc.getTaille()) {
+            stringValue = formatData(columnDesc.getTypeDonnee(), stringValue, columnDesc.getTaille());
+        } else if (shouldTruncate && (columnDesc.getTypeDonnee().equals(TypeDonnee.ALPHANUMERIQUE) || columnDesc.getTypeDonnee().equals(TypeDonnee.DATE))
+                && stringValue.length() > columnDesc.getTaille()) {
+            stringValue = stringValue.substring(0, columnDesc.getTaille());
+        }
+        return stringValue;
+    }
+
+    private static String generateUnknown(int nbOfCharacter, String character) {
+        StringBuilder str = new StringBuilder("");
+
+        for (int i = 0; i < nbOfCharacter; i++) {
+            str.append(character);
+        }
+        return str.toString();
+    }
+
+    private static String formatData(TypeDonnee typeDonnee, String data, int columnSize) {
+
+        if (typeDonnee != null) {
+
+            switch (typeDonnee) {
+
+                case NUMERIQUE:
+
+                case DECIMAL:
+                    return generateUnknown(columnSize - data.length(), "0") + data;
+
+                case ALPHANUMERIQUE:
+
+                case DATE:
+
+                default:
+                    return data + generateUnknown(columnSize - data.length(), " ");
+            }
+        } else {
+            throw new IllegalArgumentException();
+        }
+    }
+
+    private static String formatDateToString(Object obj, DbColumnDescription columnDesc) throws IllegalFormatDateException {
+        if (obj == null) {
+            return generateUnknown(columnDesc.getTaille(), " ");
+        }
+        Timestamp data = (Timestamp) obj;
+        LocalDateTime localDateTime = data.toLocalDateTime();
+
+        if (columnDesc.getFormatDate() == null) {
+            throw new IllegalFormatDateException();
+        }
+        DateTimeFormatter formatter = DateTimeFormatter.ofPattern(columnDesc.getFormatDate());
+
+        if (formatter == null) {
+            return localDateTime.toString().substring(0, columnDesc.getTaille());
+        } else {
+            return localDateTime.format(formatter);
+        }
+
+    }
+}
diff --git a/query-adhoc/src/main/java/com/megatim/queryadhoc/utils/FileDataReader.java b/query-adhoc/src/main/java/com/megatim/queryadhoc/utils/FileDataReader.java
new file mode 100644
index 0000000..c001c6e
--- /dev/null
+++ b/query-adhoc/src/main/java/com/megatim/queryadhoc/utils/FileDataReader.java
@@ -0,0 +1,65 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.queryadhoc.utils;
+
+import com.megatim.queryadhoc.model.DbColumnDescription;
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.InputStreamReader;
+import java.nio.charset.Charset;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * @author ASUS
+ */
+public class FileDataReader {
+
+    private FileDataReader() {
+
+    }
+
+    public static List<Map<String, Object>> readFile(List<DbColumnDescription> columnsDescription, File dataFile) throws Exception {
+        List<Map<String, Object>> data = new ArrayList<>();
+
+        //Ranger les olonnes par ordre croissant de position
+        Collections.sort(columnsDescription, (DbColumnDescription c1, DbColumnDescription c2) -> Integer.valueOf(c1.getPosition()).compareTo(c2.getPosition()));
+
+        //On détermine l'encodage du fichier
+        Charset charset = CommonUtilities.getCharset(dataFile);
+
+        try ( FileInputStream fis = new FileInputStream(dataFile);  InputStreamReader isr = new InputStreamReader(fis, charset);  BufferedReader reader = new BufferedReader(isr)) {
+            String line;
+
+            while ((line = reader.readLine()) != null) {
+                LinkedHashMap<String, Object> dataLine = getLine(line, columnsDescription);
+                data.add(dataLine);
+            }
+        }
+
+        return data;
+    }
+
+    private static LinkedHashMap<String, Object> getLine(final String line, final List<DbColumnDescription> columnsDescription) {
+        LinkedHashMap<String, Object> dataLine = new LinkedHashMap<>();
+        int index = 0;
+
+        for (DbColumnDescription c : columnsDescription) {
+
+            //traitement des colonnes du type fichier
+            String data = line.substring(index, index + c.getTaille());
+            dataLine.put(c.getName(), data);
+
+            index += c.getTaille();
+        }
+
+        return dataLine;
+    }
+}
diff --git a/query-adhoc/src/main/java/com/megatim/queryadhoc/validators/ConnectionParameterValidator.java b/query-adhoc/src/main/java/com/megatim/queryadhoc/validators/ConnectionParameterValidator.java
new file mode 100644
index 0000000..fed88e7
--- /dev/null
+++ b/query-adhoc/src/main/java/com/megatim/queryadhoc/validators/ConnectionParameterValidator.java
@@ -0,0 +1,79 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package com.megatim.queryadhoc.validators;
+
+import com.megatim.queryadhoc.exceptions.ConnectionParameterException;
+import com.megatim.queryadhoc.model.ConnectionParameter;
+import java.util.Arrays;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ *
+ * @author ASUS
+ */
+public class ConnectionParameterValidator {
+
+    public void checkConnectionParameter(ConnectionParameter connectionParameter) throws ConnectionParameterException {
+
+        List<String> errors = Arrays.asList(checkPort(connectionParameter.getPort()),
+                checkDataBaseName(connectionParameter.getDatabaseName()),
+                checkUserName(connectionParameter.getUserName()),
+                checkIpAddress(connectionParameter.getIpAddress()));
+        String message = errors.stream().filter(e -> !e.isEmpty()).collect(Collectors.joining("\n"));
+
+        if (!message.isEmpty()) {
+            throw new ConnectionParameterException(message);
+        }
+    }
+
+    private String checkPort(int port) {
+        if (port < 0 && port > 65535) {
+            return "La valeur du port est invalide";
+        }
+        return "";
+    }
+
+    private String checkDataBaseName(String dataBaseName) {
+        if (dataBaseName == null || dataBaseName.isEmpty()) {
+            return "Le nom de la base de données ne peut être vide ou nul";
+        }
+        return "";
+    }
+
+    private String checkUserName(String userName) {
+        if (userName == null || userName.isEmpty()) {
+            return "Le nom de l'utilisateur ne peut être vide ou nul";
+        }
+        return "";
+    }
+
+    private String checkIpAddress(String ipAddress) {
+        if (ipAddress == null || ipAddress.isEmpty()) {
+            return "Adresse IP Invalide";
+        }
+        String[] tab = ipAddress.split("\\.");
+
+        if (tab.length != 4 || !checkIpAdressPart(tab)) {
+            return "Adresse IP Invalide";
+        }
+        return "";
+    }
+
+    private boolean checkIpAdressPart(String[] tab) {
+        try {
+            int part1 = Integer.parseInt(tab[0]);
+            int part2 = Integer.parseInt(tab[1]);
+            int part3 = Integer.parseInt(tab[2]);
+            int part4 = Integer.parseInt(tab[3]);
+            return !(part1 < 0 || part1 > 255
+                    || part2 < 0 || part2 > 255
+                    || part3 < 0 || part3 > 255
+                    || part4 < 0 || part4 > 255);
+        } catch (Exception ex) {
+            return false;
+        }
+    }
+}
diff --git a/query-adhoc/target/classes/.netbeans_automatic_build b/query-adhoc/target/classes/.netbeans_automatic_build
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/query-adhoc/target/classes/.netbeans_automatic_build
diff --git a/query-adhoc/target/classes/com/megatim/queryadhoc/App.class b/query-adhoc/target/classes/com/megatim/queryadhoc/App.class
new file mode 100644
index 0000000..c9300a9
--- /dev/null
+++ b/query-adhoc/target/classes/com/megatim/queryadhoc/App.class
Binary files differ
diff --git a/query-adhoc/target/classes/com/megatim/queryadhoc/connection/abtracts/DataBaseConnection.class b/query-adhoc/target/classes/com/megatim/queryadhoc/connection/abtracts/DataBaseConnection.class
new file mode 100644
index 0000000..fa3a99a
--- /dev/null
+++ b/query-adhoc/target/classes/com/megatim/queryadhoc/connection/abtracts/DataBaseConnection.class
Binary files differ
diff --git a/query-adhoc/target/classes/com/megatim/queryadhoc/connection/impl/MySqlDbConnection.class b/query-adhoc/target/classes/com/megatim/queryadhoc/connection/impl/MySqlDbConnection.class
new file mode 100644
index 0000000..fdcd2c2
--- /dev/null
+++ b/query-adhoc/target/classes/com/megatim/queryadhoc/connection/impl/MySqlDbConnection.class
Binary files differ
diff --git a/query-adhoc/target/classes/com/megatim/queryadhoc/connection/impl/OracleDbConnection.class b/query-adhoc/target/classes/com/megatim/queryadhoc/connection/impl/OracleDbConnection.class
new file mode 100644
index 0000000..e69b240
--- /dev/null
+++ b/query-adhoc/target/classes/com/megatim/queryadhoc/connection/impl/OracleDbConnection.class
Binary files differ
diff --git a/query-adhoc/target/classes/com/megatim/queryadhoc/connection/impl/PostgresDbConnection.class b/query-adhoc/target/classes/com/megatim/queryadhoc/connection/impl/PostgresDbConnection.class
new file mode 100644
index 0000000..88c6433
--- /dev/null
+++ b/query-adhoc/target/classes/com/megatim/queryadhoc/connection/impl/PostgresDbConnection.class
Binary files differ
diff --git a/query-adhoc/target/classes/com/megatim/queryadhoc/connection/impl/SqlServerDbConnection.class b/query-adhoc/target/classes/com/megatim/queryadhoc/connection/impl/SqlServerDbConnection.class
new file mode 100644
index 0000000..9517adc
--- /dev/null
+++ b/query-adhoc/target/classes/com/megatim/queryadhoc/connection/impl/SqlServerDbConnection.class
Binary files differ
diff --git a/query-adhoc/target/classes/com/megatim/queryadhoc/contrat/DataColumn.class b/query-adhoc/target/classes/com/megatim/queryadhoc/contrat/DataColumn.class
new file mode 100644
index 0000000..65362d4
--- /dev/null
+++ b/query-adhoc/target/classes/com/megatim/queryadhoc/contrat/DataColumn.class
Binary files differ
diff --git a/query-adhoc/target/classes/com/megatim/queryadhoc/contrat/DataRow.class b/query-adhoc/target/classes/com/megatim/queryadhoc/contrat/DataRow.class
new file mode 100644
index 0000000..feaf207
--- /dev/null
+++ b/query-adhoc/target/classes/com/megatim/queryadhoc/contrat/DataRow.class
Binary files differ
diff --git a/query-adhoc/target/classes/com/megatim/queryadhoc/contrat/DefaultPreparedStatementProcessor.class b/query-adhoc/target/classes/com/megatim/queryadhoc/contrat/DefaultPreparedStatementProcessor.class
new file mode 100644
index 0000000..b5da19b
--- /dev/null
+++ b/query-adhoc/target/classes/com/megatim/queryadhoc/contrat/DefaultPreparedStatementProcessor.class
Binary files differ
diff --git a/query-adhoc/target/classes/com/megatim/queryadhoc/contrat/InsertMetaData.class b/query-adhoc/target/classes/com/megatim/queryadhoc/contrat/InsertMetaData.class
new file mode 100644
index 0000000..447a83b
--- /dev/null
+++ b/query-adhoc/target/classes/com/megatim/queryadhoc/contrat/InsertMetaData.class
Binary files differ
diff --git a/query-adhoc/target/classes/com/megatim/queryadhoc/contrat/PreparedStatementProcessor.class b/query-adhoc/target/classes/com/megatim/queryadhoc/contrat/PreparedStatementProcessor.class
new file mode 100644
index 0000000..372ec26
--- /dev/null
+++ b/query-adhoc/target/classes/com/megatim/queryadhoc/contrat/PreparedStatementProcessor.class
Binary files differ
diff --git a/query-adhoc/target/classes/com/megatim/queryadhoc/enums/SgbdType.class b/query-adhoc/target/classes/com/megatim/queryadhoc/enums/SgbdType.class
new file mode 100644
index 0000000..341ffac
--- /dev/null
+++ b/query-adhoc/target/classes/com/megatim/queryadhoc/enums/SgbdType.class
Binary files differ
diff --git a/query-adhoc/target/classes/com/megatim/queryadhoc/enums/TypeDonnee.class b/query-adhoc/target/classes/com/megatim/queryadhoc/enums/TypeDonnee.class
new file mode 100644
index 0000000..4f4466f
--- /dev/null
+++ b/query-adhoc/target/classes/com/megatim/queryadhoc/enums/TypeDonnee.class
Binary files differ
diff --git a/query-adhoc/target/classes/com/megatim/queryadhoc/exceptions/BadColumnTypeException.class b/query-adhoc/target/classes/com/megatim/queryadhoc/exceptions/BadColumnTypeException.class
new file mode 100644
index 0000000..e040144
--- /dev/null
+++ b/query-adhoc/target/classes/com/megatim/queryadhoc/exceptions/BadColumnTypeException.class
Binary files differ
diff --git a/query-adhoc/target/classes/com/megatim/queryadhoc/exceptions/BadDataValueException.class b/query-adhoc/target/classes/com/megatim/queryadhoc/exceptions/BadDataValueException.class
new file mode 100644
index 0000000..96e8de0
--- /dev/null
+++ b/query-adhoc/target/classes/com/megatim/queryadhoc/exceptions/BadDataValueException.class
Binary files differ
diff --git a/query-adhoc/target/classes/com/megatim/queryadhoc/exceptions/ColumnNotFoundException.class b/query-adhoc/target/classes/com/megatim/queryadhoc/exceptions/ColumnNotFoundException.class
new file mode 100644
index 0000000..a8881bc
--- /dev/null
+++ b/query-adhoc/target/classes/com/megatim/queryadhoc/exceptions/ColumnNotFoundException.class
Binary files differ
diff --git a/query-adhoc/target/classes/com/megatim/queryadhoc/exceptions/ConnectionException.class b/query-adhoc/target/classes/com/megatim/queryadhoc/exceptions/ConnectionException.class
new file mode 100644
index 0000000..1255c9f
--- /dev/null
+++ b/query-adhoc/target/classes/com/megatim/queryadhoc/exceptions/ConnectionException.class
Binary files differ
diff --git a/query-adhoc/target/classes/com/megatim/queryadhoc/exceptions/ConnectionParameterException.class b/query-adhoc/target/classes/com/megatim/queryadhoc/exceptions/ConnectionParameterException.class
new file mode 100644
index 0000000..8a60b10
--- /dev/null
+++ b/query-adhoc/target/classes/com/megatim/queryadhoc/exceptions/ConnectionParameterException.class
Binary files differ
diff --git a/query-adhoc/target/classes/com/megatim/queryadhoc/exceptions/IllegalFormatDateException.class b/query-adhoc/target/classes/com/megatim/queryadhoc/exceptions/IllegalFormatDateException.class
new file mode 100644
index 0000000..536703a
--- /dev/null
+++ b/query-adhoc/target/classes/com/megatim/queryadhoc/exceptions/IllegalFormatDateException.class
Binary files differ
diff --git a/query-adhoc/target/classes/com/megatim/queryadhoc/exceptions/LocalDateTimeValueParseError.class b/query-adhoc/target/classes/com/megatim/queryadhoc/exceptions/LocalDateTimeValueParseError.class
new file mode 100644
index 0000000..17761f5
--- /dev/null
+++ b/query-adhoc/target/classes/com/megatim/queryadhoc/exceptions/LocalDateTimeValueParseError.class
Binary files differ
diff --git a/query-adhoc/target/classes/com/megatim/queryadhoc/exceptions/NotSupportedDataBaseException.class b/query-adhoc/target/classes/com/megatim/queryadhoc/exceptions/NotSupportedDataBaseException.class
new file mode 100644
index 0000000..c6fe344
--- /dev/null
+++ b/query-adhoc/target/classes/com/megatim/queryadhoc/exceptions/NotSupportedDataBaseException.class
Binary files differ
diff --git a/query-adhoc/target/classes/com/megatim/queryadhoc/exceptions/NotSupportedTypeDonneeException.class b/query-adhoc/target/classes/com/megatim/queryadhoc/exceptions/NotSupportedTypeDonneeException.class
new file mode 100644
index 0000000..4046e61
--- /dev/null
+++ b/query-adhoc/target/classes/com/megatim/queryadhoc/exceptions/NotSupportedTypeDonneeException.class
Binary files differ
diff --git a/query-adhoc/target/classes/com/megatim/queryadhoc/factory/DbConnectionFactory$1.class b/query-adhoc/target/classes/com/megatim/queryadhoc/factory/DbConnectionFactory$1.class
new file mode 100644
index 0000000..9450c1a
--- /dev/null
+++ b/query-adhoc/target/classes/com/megatim/queryadhoc/factory/DbConnectionFactory$1.class
Binary files differ
diff --git a/query-adhoc/target/classes/com/megatim/queryadhoc/factory/DbConnectionFactory.class b/query-adhoc/target/classes/com/megatim/queryadhoc/factory/DbConnectionFactory.class
new file mode 100644
index 0000000..513b708
--- /dev/null
+++ b/query-adhoc/target/classes/com/megatim/queryadhoc/factory/DbConnectionFactory.class
Binary files differ
diff --git a/query-adhoc/target/classes/com/megatim/queryadhoc/model/ConnectionParameter.class b/query-adhoc/target/classes/com/megatim/queryadhoc/model/ConnectionParameter.class
new file mode 100644
index 0000000..76bf977
--- /dev/null
+++ b/query-adhoc/target/classes/com/megatim/queryadhoc/model/ConnectionParameter.class
Binary files differ
diff --git a/query-adhoc/target/classes/com/megatim/queryadhoc/model/DbColumnDescription.class b/query-adhoc/target/classes/com/megatim/queryadhoc/model/DbColumnDescription.class
new file mode 100644
index 0000000..b48f1d1
--- /dev/null
+++ b/query-adhoc/target/classes/com/megatim/queryadhoc/model/DbColumnDescription.class
Binary files differ
diff --git a/query-adhoc/target/classes/com/megatim/queryadhoc/model/QueryParam.class b/query-adhoc/target/classes/com/megatim/queryadhoc/model/QueryParam.class
new file mode 100644
index 0000000..a308121
--- /dev/null
+++ b/query-adhoc/target/classes/com/megatim/queryadhoc/model/QueryParam.class
Binary files differ
diff --git a/query-adhoc/target/classes/com/megatim/queryadhoc/queries/CommonInsertQuery.class b/query-adhoc/target/classes/com/megatim/queryadhoc/queries/CommonInsertQuery.class
new file mode 100644
index 0000000..5d382b8
--- /dev/null
+++ b/query-adhoc/target/classes/com/megatim/queryadhoc/queries/CommonInsertQuery.class
Binary files differ
diff --git a/query-adhoc/target/classes/com/megatim/queryadhoc/queries/CommonSelectQuery.class b/query-adhoc/target/classes/com/megatim/queryadhoc/queries/CommonSelectQuery.class
new file mode 100644
index 0000000..1d3ffc0
--- /dev/null
+++ b/query-adhoc/target/classes/com/megatim/queryadhoc/queries/CommonSelectQuery.class
Binary files differ
diff --git a/query-adhoc/target/classes/com/megatim/queryadhoc/queries/metadata/DefaultDataColumn.class b/query-adhoc/target/classes/com/megatim/queryadhoc/queries/metadata/DefaultDataColumn.class
new file mode 100644
index 0000000..bd7b929
--- /dev/null
+++ b/query-adhoc/target/classes/com/megatim/queryadhoc/queries/metadata/DefaultDataColumn.class
Binary files differ
diff --git a/query-adhoc/target/classes/com/megatim/queryadhoc/queries/metadata/DefaultDataRow.class b/query-adhoc/target/classes/com/megatim/queryadhoc/queries/metadata/DefaultDataRow.class
new file mode 100644
index 0000000..34637ae
--- /dev/null
+++ b/query-adhoc/target/classes/com/megatim/queryadhoc/queries/metadata/DefaultDataRow.class
Binary files differ
diff --git a/query-adhoc/target/classes/com/megatim/queryadhoc/queries/metadata/InsertData.class b/query-adhoc/target/classes/com/megatim/queryadhoc/queries/metadata/InsertData.class
new file mode 100644
index 0000000..72bdb7b
--- /dev/null
+++ b/query-adhoc/target/classes/com/megatim/queryadhoc/queries/metadata/InsertData.class
Binary files differ
diff --git a/query-adhoc/target/classes/com/megatim/queryadhoc/queries/metadata/LocalDateTimeValue.class b/query-adhoc/target/classes/com/megatim/queryadhoc/queries/metadata/LocalDateTimeValue.class
new file mode 100644
index 0000000..9c5c9da
--- /dev/null
+++ b/query-adhoc/target/classes/com/megatim/queryadhoc/queries/metadata/LocalDateTimeValue.class
Binary files differ
diff --git a/query-adhoc/target/classes/com/megatim/queryadhoc/queries/metadata/ParsedData.class b/query-adhoc/target/classes/com/megatim/queryadhoc/queries/metadata/ParsedData.class
new file mode 100644
index 0000000..afeee73
--- /dev/null
+++ b/query-adhoc/target/classes/com/megatim/queryadhoc/queries/metadata/ParsedData.class
Binary files differ
diff --git a/query-adhoc/target/classes/com/megatim/queryadhoc/queries/metadata/ParsedDataRow.class b/query-adhoc/target/classes/com/megatim/queryadhoc/queries/metadata/ParsedDataRow.class
new file mode 100644
index 0000000..43195ec
--- /dev/null
+++ b/query-adhoc/target/classes/com/megatim/queryadhoc/queries/metadata/ParsedDataRow.class
Binary files differ
diff --git a/query-adhoc/target/classes/com/megatim/queryadhoc/query/abstracts/DatabaseInsertQuery.class b/query-adhoc/target/classes/com/megatim/queryadhoc/query/abstracts/DatabaseInsertQuery.class
new file mode 100644
index 0000000..9192e1a
--- /dev/null
+++ b/query-adhoc/target/classes/com/megatim/queryadhoc/query/abstracts/DatabaseInsertQuery.class
Binary files differ
diff --git a/query-adhoc/target/classes/com/megatim/queryadhoc/query/abstracts/DatabaseSelectQuery.class b/query-adhoc/target/classes/com/megatim/queryadhoc/query/abstracts/DatabaseSelectQuery.class
new file mode 100644
index 0000000..d118b62
--- /dev/null
+++ b/query-adhoc/target/classes/com/megatim/queryadhoc/query/abstracts/DatabaseSelectQuery.class
Binary files differ
diff --git a/query-adhoc/target/classes/com/megatim/queryadhoc/query/ifaces/InsertQuery.class b/query-adhoc/target/classes/com/megatim/queryadhoc/query/ifaces/InsertQuery.class
new file mode 100644
index 0000000..25a081a
--- /dev/null
+++ b/query-adhoc/target/classes/com/megatim/queryadhoc/query/ifaces/InsertQuery.class
Binary files differ
diff --git a/query-adhoc/target/classes/com/megatim/queryadhoc/query/ifaces/SelectQuery.class b/query-adhoc/target/classes/com/megatim/queryadhoc/query/ifaces/SelectQuery.class
new file mode 100644
index 0000000..300d092
--- /dev/null
+++ b/query-adhoc/target/classes/com/megatim/queryadhoc/query/ifaces/SelectQuery.class
Binary files differ
diff --git a/query-adhoc/target/classes/com/megatim/queryadhoc/query/insert/impl/MySqlInsertQuery.class b/query-adhoc/target/classes/com/megatim/queryadhoc/query/insert/impl/MySqlInsertQuery.class
new file mode 100644
index 0000000..5f6c522
--- /dev/null
+++ b/query-adhoc/target/classes/com/megatim/queryadhoc/query/insert/impl/MySqlInsertQuery.class
Binary files differ
diff --git a/query-adhoc/target/classes/com/megatim/queryadhoc/query/insert/impl/OracleInsertQuery.class b/query-adhoc/target/classes/com/megatim/queryadhoc/query/insert/impl/OracleInsertQuery.class
new file mode 100644
index 0000000..247087b
--- /dev/null
+++ b/query-adhoc/target/classes/com/megatim/queryadhoc/query/insert/impl/OracleInsertQuery.class
Binary files differ
diff --git a/query-adhoc/target/classes/com/megatim/queryadhoc/query/insert/impl/PostgresInsertQuery.class b/query-adhoc/target/classes/com/megatim/queryadhoc/query/insert/impl/PostgresInsertQuery.class
new file mode 100644
index 0000000..1ea165b
--- /dev/null
+++ b/query-adhoc/target/classes/com/megatim/queryadhoc/query/insert/impl/PostgresInsertQuery.class
Binary files differ
diff --git a/query-adhoc/target/classes/com/megatim/queryadhoc/query/insert/impl/SqlServerInsertQuery.class b/query-adhoc/target/classes/com/megatim/queryadhoc/query/insert/impl/SqlServerInsertQuery.class
new file mode 100644
index 0000000..3cc6d21
--- /dev/null
+++ b/query-adhoc/target/classes/com/megatim/queryadhoc/query/insert/impl/SqlServerInsertQuery.class
Binary files differ
diff --git a/query-adhoc/target/classes/com/megatim/queryadhoc/query/select/impl/MySqlSelectQuery.class b/query-adhoc/target/classes/com/megatim/queryadhoc/query/select/impl/MySqlSelectQuery.class
new file mode 100644
index 0000000..b9048c6
--- /dev/null
+++ b/query-adhoc/target/classes/com/megatim/queryadhoc/query/select/impl/MySqlSelectQuery.class
Binary files differ
diff --git a/query-adhoc/target/classes/com/megatim/queryadhoc/query/select/impl/OracleSelectQuery.class b/query-adhoc/target/classes/com/megatim/queryadhoc/query/select/impl/OracleSelectQuery.class
new file mode 100644
index 0000000..b045cd3
--- /dev/null
+++ b/query-adhoc/target/classes/com/megatim/queryadhoc/query/select/impl/OracleSelectQuery.class
Binary files differ
diff --git a/query-adhoc/target/classes/com/megatim/queryadhoc/query/select/impl/PostgresSelectQuery.class b/query-adhoc/target/classes/com/megatim/queryadhoc/query/select/impl/PostgresSelectQuery.class
new file mode 100644
index 0000000..40b0470
--- /dev/null
+++ b/query-adhoc/target/classes/com/megatim/queryadhoc/query/select/impl/PostgresSelectQuery.class
Binary files differ
diff --git a/query-adhoc/target/classes/com/megatim/queryadhoc/query/select/impl/SqlServerSelectQuery.class b/query-adhoc/target/classes/com/megatim/queryadhoc/query/select/impl/SqlServerSelectQuery.class
new file mode 100644
index 0000000..7fd5b73
--- /dev/null
+++ b/query-adhoc/target/classes/com/megatim/queryadhoc/query/select/impl/SqlServerSelectQuery.class
Binary files differ
diff --git a/query-adhoc/target/classes/com/megatim/queryadhoc/table/DataBaseTable$1.class b/query-adhoc/target/classes/com/megatim/queryadhoc/table/DataBaseTable$1.class
new file mode 100644
index 0000000..9002182
--- /dev/null
+++ b/query-adhoc/target/classes/com/megatim/queryadhoc/table/DataBaseTable$1.class
Binary files differ
diff --git a/query-adhoc/target/classes/com/megatim/queryadhoc/table/DataBaseTable.class b/query-adhoc/target/classes/com/megatim/queryadhoc/table/DataBaseTable.class
new file mode 100644
index 0000000..8227aa9
--- /dev/null
+++ b/query-adhoc/target/classes/com/megatim/queryadhoc/table/DataBaseTable.class
Binary files differ
diff --git a/query-adhoc/target/classes/com/megatim/queryadhoc/utils/CommonUtilities.class b/query-adhoc/target/classes/com/megatim/queryadhoc/utils/CommonUtilities.class
new file mode 100644
index 0000000..9a029b0
--- /dev/null
+++ b/query-adhoc/target/classes/com/megatim/queryadhoc/utils/CommonUtilities.class
Binary files differ
diff --git a/query-adhoc/target/classes/com/megatim/queryadhoc/utils/DataFormatter$1.class b/query-adhoc/target/classes/com/megatim/queryadhoc/utils/DataFormatter$1.class
new file mode 100644
index 0000000..e4f59d2
--- /dev/null
+++ b/query-adhoc/target/classes/com/megatim/queryadhoc/utils/DataFormatter$1.class
Binary files differ
diff --git a/query-adhoc/target/classes/com/megatim/queryadhoc/utils/DataFormatter.class b/query-adhoc/target/classes/com/megatim/queryadhoc/utils/DataFormatter.class
new file mode 100644
index 0000000..71d8b71
--- /dev/null
+++ b/query-adhoc/target/classes/com/megatim/queryadhoc/utils/DataFormatter.class
Binary files differ
diff --git a/query-adhoc/target/classes/com/megatim/queryadhoc/utils/FileDataReader.class b/query-adhoc/target/classes/com/megatim/queryadhoc/utils/FileDataReader.class
new file mode 100644
index 0000000..afbd79f
--- /dev/null
+++ b/query-adhoc/target/classes/com/megatim/queryadhoc/utils/FileDataReader.class
Binary files differ
diff --git a/query-adhoc/target/classes/com/megatim/queryadhoc/validators/ConnectionParameterValidator.class b/query-adhoc/target/classes/com/megatim/queryadhoc/validators/ConnectionParameterValidator.class
new file mode 100644
index 0000000..e694eca
--- /dev/null
+++ b/query-adhoc/target/classes/com/megatim/queryadhoc/validators/ConnectionParameterValidator.class
Binary files differ
diff --git a/query-adhoc/target/maven-archiver/pom.properties b/query-adhoc/target/maven-archiver/pom.properties
new file mode 100644
index 0000000..038d5f7
--- /dev/null
+++ b/query-adhoc/target/maven-archiver/pom.properties
@@ -0,0 +1,5 @@
+#Generated by Maven
+#Thu May 15 17:03:16 WAT 2025
+version=1.0
+groupId=com.megatim.queryadhoc
+artifactId=query-adhoc
diff --git a/query-adhoc/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/query-adhoc/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
new file mode 100644
index 0000000..965a91a
--- /dev/null
+++ b/query-adhoc/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
@@ -0,0 +1,54 @@
+com\megatim\queryadhoc\factory\DbConnectionFactory.class
+com\megatim\queryadhoc\contrat\PreparedStatementProcessor.class
+com\megatim\queryadhoc\table\DataBaseTable$1.class
+com\megatim\queryadhoc\utils\CommonUtilities.class
+com\megatim\queryadhoc\queries\metadata\ParsedData.class
+com\megatim\queryadhoc\contrat\DataColumn.class
+com\megatim\queryadhoc\queries\metadata\DefaultDataColumn.class
+com\megatim\queryadhoc\exceptions\ConnectionParameterException.class
+com\megatim\queryadhoc\contrat\DefaultPreparedStatementProcessor.class
+com\megatim\queryadhoc\contrat\DataRow.class
+com\megatim\queryadhoc\query\select\impl\SqlServerSelectQuery.class
+com\megatim\queryadhoc\queries\metadata\InsertData.class
+com\megatim\queryadhoc\query\insert\impl\MySqlInsertQuery.class
+com\megatim\queryadhoc\connection\abtracts\DataBaseConnection.class
+com\megatim\queryadhoc\queries\CommonInsertQuery.class
+com\megatim\queryadhoc\utils\DataFormatter$1.class
+com\megatim\queryadhoc\utils\DataFormatter.class
+com\megatim\queryadhoc\utils\FileDataReader.class
+com\megatim\queryadhoc\contrat\InsertMetaData.class
+com\megatim\queryadhoc\query\insert\impl\PostgresInsertQuery.class
+com\megatim\queryadhoc\table\DataBaseTable.class
+com\megatim\queryadhoc\exceptions\ColumnNotFoundException.class
+com\megatim\queryadhoc\exceptions\LocalDateTimeValueParseError.class
+com\megatim\queryadhoc\queries\metadata\DefaultDataRow.class
+com\megatim\queryadhoc\connection\impl\OracleDbConnection.class
+com\megatim\queryadhoc\model\DbColumnDescription.class
+com\megatim\queryadhoc\validators\ConnectionParameterValidator.class
+com\megatim\queryadhoc\query\ifaces\SelectQuery.class
+com\megatim\queryadhoc\query\abstracts\DatabaseSelectQuery.class
+com\megatim\queryadhoc\App.class
+com\megatim\queryadhoc\query\insert\impl\OracleInsertQuery.class
+com\megatim\queryadhoc\query\abstracts\DatabaseInsertQuery.class
+com\megatim\queryadhoc\query\select\impl\PostgresSelectQuery.class
+com\megatim\queryadhoc\exceptions\NotSupportedDataBaseException.class
+com\megatim\queryadhoc\connection\impl\MySqlDbConnection.class
+com\megatim\queryadhoc\enums\SgbdType.class
+com\megatim\queryadhoc\model\ConnectionParameter.class
+com\megatim\queryadhoc\factory\DbConnectionFactory$1.class
+com\megatim\queryadhoc\exceptions\ConnectionException.class
+com\megatim\queryadhoc\exceptions\BadColumnTypeException.class
+com\megatim\queryadhoc\enums\TypeDonnee.class
+com\megatim\queryadhoc\query\insert\impl\SqlServerInsertQuery.class
+com\megatim\queryadhoc\queries\CommonSelectQuery.class
+com\megatim\queryadhoc\query\ifaces\InsertQuery.class
+com\megatim\queryadhoc\exceptions\NotSupportedTypeDonneeException.class
+com\megatim\queryadhoc\exceptions\IllegalFormatDateException.class
+com\megatim\queryadhoc\query\select\impl\MySqlSelectQuery.class
+com\megatim\queryadhoc\query\select\impl\OracleSelectQuery.class
+com\megatim\queryadhoc\connection\impl\SqlServerDbConnection.class
+com\megatim\queryadhoc\queries\metadata\ParsedDataRow.class
+com\megatim\queryadhoc\exceptions\BadDataValueException.class
+com\megatim\queryadhoc\connection\impl\PostgresDbConnection.class
+com\megatim\queryadhoc\queries\metadata\LocalDateTimeValue.class
+com\megatim\queryadhoc\model\QueryParam.class
diff --git a/query-adhoc/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/query-adhoc/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
new file mode 100644
index 0000000..ad089da
--- /dev/null
+++ b/query-adhoc/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
@@ -0,0 +1,51 @@
+C:\Users\ASUS\Documents\NetBeansProjects\mgt-data-base-query-module\query-adhoc\src\main\java\com\megatim\queryadhoc\queries\CommonSelectQuery.java
+C:\Users\ASUS\Documents\NetBeansProjects\mgt-data-base-query-module\query-adhoc\src\main\java\com\megatim\queryadhoc\queries\CommonInsertQuery.java
+C:\Users\ASUS\Documents\NetBeansProjects\mgt-data-base-query-module\query-adhoc\src\main\java\com\megatim\queryadhoc\contrat\InsertMetaData.java
+C:\Users\ASUS\Documents\NetBeansProjects\mgt-data-base-query-module\query-adhoc\src\main\java\com\megatim\queryadhoc\exceptions\ConnectionParameterException.java
+C:\Users\ASUS\Documents\NetBeansProjects\mgt-data-base-query-module\query-adhoc\src\main\java\com\megatim\queryadhoc\exceptions\ConnectionException.java
+C:\Users\ASUS\Documents\NetBeansProjects\mgt-data-base-query-module\query-adhoc\src\main\java\com\megatim\queryadhoc\query\insert\impl\SqlServerInsertQuery.java
+C:\Users\ASUS\Documents\NetBeansProjects\mgt-data-base-query-module\query-adhoc\src\main\java\com\megatim\queryadhoc\exceptions\NotSupportedDataBaseException.java
+C:\Users\ASUS\Documents\NetBeansProjects\mgt-data-base-query-module\query-adhoc\src\main\java\com\megatim\queryadhoc\queries\metadata\DefaultDataColumn.java
+C:\Users\ASUS\Documents\NetBeansProjects\mgt-data-base-query-module\query-adhoc\src\main\java\com\megatim\queryadhoc\enums\SgbdType.java
+C:\Users\ASUS\Documents\NetBeansProjects\mgt-data-base-query-module\query-adhoc\src\main\java\com\megatim\queryadhoc\contrat\DataRow.java
+C:\Users\ASUS\Documents\NetBeansProjects\mgt-data-base-query-module\query-adhoc\src\main\java\com\megatim\queryadhoc\queries\metadata\InsertData.java
+C:\Users\ASUS\Documents\NetBeansProjects\mgt-data-base-query-module\query-adhoc\src\main\java\com\megatim\queryadhoc\query\select\impl\SqlServerSelectQuery.java
+C:\Users\ASUS\Documents\NetBeansProjects\mgt-data-base-query-module\query-adhoc\src\main\java\com\megatim\queryadhoc\contrat\DefaultPreparedStatementProcessor.java
+C:\Users\ASUS\Documents\NetBeansProjects\mgt-data-base-query-module\query-adhoc\src\main\java\com\megatim\queryadhoc\query\select\impl\PostgresSelectQuery.java
+C:\Users\ASUS\Documents\NetBeansProjects\mgt-data-base-query-module\query-adhoc\src\main\java\com\megatim\queryadhoc\model\DbColumnDescription.java
+C:\Users\ASUS\Documents\NetBeansProjects\mgt-data-base-query-module\query-adhoc\src\main\java\com\megatim\queryadhoc\queries\metadata\ParsedData.java
+C:\Users\ASUS\Documents\NetBeansProjects\mgt-data-base-query-module\query-adhoc\src\main\java\com\megatim\queryadhoc\exceptions\IllegalFormatDateException.java
+C:\Users\ASUS\Documents\NetBeansProjects\mgt-data-base-query-module\query-adhoc\src\main\java\com\megatim\queryadhoc\query\abstracts\DatabaseInsertQuery.java
+C:\Users\ASUS\Documents\NetBeansProjects\mgt-data-base-query-module\query-adhoc\src\main\java\com\megatim\queryadhoc\query\abstracts\DatabaseSelectQuery.java
+C:\Users\ASUS\Documents\NetBeansProjects\mgt-data-base-query-module\query-adhoc\src\main\java\com\megatim\queryadhoc\query\insert\impl\MySqlInsertQuery.java
+C:\Users\ASUS\Documents\NetBeansProjects\mgt-data-base-query-module\query-adhoc\src\main\java\com\megatim\queryadhoc\exceptions\BadDataValueException.java
+C:\Users\ASUS\Documents\NetBeansProjects\mgt-data-base-query-module\query-adhoc\src\main\java\com\megatim\queryadhoc\queries\metadata\LocalDateTimeValue.java
+C:\Users\ASUS\Documents\NetBeansProjects\mgt-data-base-query-module\query-adhoc\src\main\java\com\megatim\queryadhoc\query\ifaces\SelectQuery.java
+C:\Users\ASUS\Documents\NetBeansProjects\mgt-data-base-query-module\query-adhoc\src\main\java\com\megatim\queryadhoc\query\ifaces\InsertQuery.java
+C:\Users\ASUS\Documents\NetBeansProjects\mgt-data-base-query-module\query-adhoc\src\main\java\com\megatim\queryadhoc\enums\TypeDonnee.java
+C:\Users\ASUS\Documents\NetBeansProjects\mgt-data-base-query-module\query-adhoc\src\main\java\com\megatim\queryadhoc\utils\CommonUtilities.java
+C:\Users\ASUS\Documents\NetBeansProjects\mgt-data-base-query-module\query-adhoc\src\main\java\com\megatim\queryadhoc\utils\DataFormatter.java
+C:\Users\ASUS\Documents\NetBeansProjects\mgt-data-base-query-module\query-adhoc\src\main\java\com\megatim\queryadhoc\query\select\impl\MySqlSelectQuery.java
+C:\Users\ASUS\Documents\NetBeansProjects\mgt-data-base-query-module\query-adhoc\src\main\java\com\megatim\queryadhoc\model\QueryParam.java
+C:\Users\ASUS\Documents\NetBeansProjects\mgt-data-base-query-module\query-adhoc\src\main\java\com\megatim\queryadhoc\contrat\PreparedStatementProcessor.java
+C:\Users\ASUS\Documents\NetBeansProjects\mgt-data-base-query-module\query-adhoc\src\main\java\com\megatim\queryadhoc\connection\impl\PostgresDbConnection.java
+C:\Users\ASUS\Documents\NetBeansProjects\mgt-data-base-query-module\query-adhoc\src\main\java\com\megatim\queryadhoc\utils\FileDataReader.java
+C:\Users\ASUS\Documents\NetBeansProjects\mgt-data-base-query-module\query-adhoc\src\main\java\com\megatim\queryadhoc\query\insert\impl\PostgresInsertQuery.java
+C:\Users\ASUS\Documents\NetBeansProjects\mgt-data-base-query-module\query-adhoc\src\main\java\com\megatim\queryadhoc\validators\ConnectionParameterValidator.java
+C:\Users\ASUS\Documents\NetBeansProjects\mgt-data-base-query-module\query-adhoc\src\main\java\com\megatim\queryadhoc\query\insert\impl\OracleInsertQuery.java
+C:\Users\ASUS\Documents\NetBeansProjects\mgt-data-base-query-module\query-adhoc\src\main\java\com\megatim\queryadhoc\exceptions\LocalDateTimeValueParseError.java
+C:\Users\ASUS\Documents\NetBeansProjects\mgt-data-base-query-module\query-adhoc\src\main\java\com\megatim\queryadhoc\query\select\impl\OracleSelectQuery.java
+C:\Users\ASUS\Documents\NetBeansProjects\mgt-data-base-query-module\query-adhoc\src\main\java\com\megatim\queryadhoc\queries\metadata\ParsedDataRow.java
+C:\Users\ASUS\Documents\NetBeansProjects\mgt-data-base-query-module\query-adhoc\src\main\java\com\megatim\queryadhoc\connection\abtracts\DataBaseConnection.java
+C:\Users\ASUS\Documents\NetBeansProjects\mgt-data-base-query-module\query-adhoc\src\main\java\com\megatim\queryadhoc\connection\impl\OracleDbConnection.java
+C:\Users\ASUS\Documents\NetBeansProjects\mgt-data-base-query-module\query-adhoc\src\main\java\com\megatim\queryadhoc\factory\DbConnectionFactory.java
+C:\Users\ASUS\Documents\NetBeansProjects\mgt-data-base-query-module\query-adhoc\src\main\java\com\megatim\queryadhoc\connection\impl\MySqlDbConnection.java
+C:\Users\ASUS\Documents\NetBeansProjects\mgt-data-base-query-module\query-adhoc\src\main\java\com\megatim\queryadhoc\contrat\DataColumn.java
+C:\Users\ASUS\Documents\NetBeansProjects\mgt-data-base-query-module\query-adhoc\src\main\java\com\megatim\queryadhoc\exceptions\NotSupportedTypeDonneeException.java
+C:\Users\ASUS\Documents\NetBeansProjects\mgt-data-base-query-module\query-adhoc\src\main\java\com\megatim\queryadhoc\connection\impl\SqlServerDbConnection.java
+C:\Users\ASUS\Documents\NetBeansProjects\mgt-data-base-query-module\query-adhoc\src\main\java\com\megatim\queryadhoc\exceptions\BadColumnTypeException.java
+C:\Users\ASUS\Documents\NetBeansProjects\mgt-data-base-query-module\query-adhoc\src\main\java\com\megatim\queryadhoc\table\DataBaseTable.java
+C:\Users\ASUS\Documents\NetBeansProjects\mgt-data-base-query-module\query-adhoc\src\main\java\com\megatim\queryadhoc\App.java
+C:\Users\ASUS\Documents\NetBeansProjects\mgt-data-base-query-module\query-adhoc\src\main\java\com\megatim\queryadhoc\exceptions\ColumnNotFoundException.java
+C:\Users\ASUS\Documents\NetBeansProjects\mgt-data-base-query-module\query-adhoc\src\main\java\com\megatim\queryadhoc\model\ConnectionParameter.java
+C:\Users\ASUS\Documents\NetBeansProjects\mgt-data-base-query-module\query-adhoc\src\main\java\com\megatim\queryadhoc\queries\metadata\DefaultDataRow.java
diff --git a/query-adhoc/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst b/query-adhoc/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/query-adhoc/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst
diff --git a/query-adhoc/target/query-adhoc-1.0-jar-with-dependencies.jar b/query-adhoc/target/query-adhoc-1.0-jar-with-dependencies.jar
new file mode 100644
index 0000000..32c6b2d
--- /dev/null
+++ b/query-adhoc/target/query-adhoc-1.0-jar-with-dependencies.jar
Binary files differ
diff --git a/query-adhoc/target/query-adhoc-1.0.jar b/query-adhoc/target/query-adhoc-1.0.jar
new file mode 100644
index 0000000..19d569d
--- /dev/null
+++ b/query-adhoc/target/query-adhoc-1.0.jar
Binary files differ
diff --git a/query-adhoc/target/test-classes/.netbeans_automatic_build b/query-adhoc/target/test-classes/.netbeans_automatic_build
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/query-adhoc/target/test-classes/.netbeans_automatic_build

--
Gitblit v1.10.0