public string JSONparametrosAddDatabase(parametrosAddDatabase addDatabase)
        {
            try {
                MariaConnect db = new MariaConnect("localhost", "TEST", "prueba", "prueba");
                db.NonQuery("CALL registrar_conexion('" + addDatabase.database_type + "','"
                            + addDatabase.user + "','"
                            + addDatabase.pass + "','"
                            + addDatabase.server + "','"
                            + addDatabase.protocol + "','"
                            + addDatabase.port + "','"
                            + addDatabase.alias + "');");

                /*ArrayList filas = new ArrayList();
                 *
                 * string prueba = "";
                 *
                 * filas = db.Select2("db_connection");
                 *
                 * for (int i = 0; i < filas.Count; i++) prueba += filas[i];
                 *
                 *
                 * return prueba;*/
                return("Conexion exitosa");
            }
            catch (Exception ex)
            {
                return(ex.ToString());
            }
        }
 public string createDatabase(parametrosCreateDatabase createDatabase)
 {
     try
     {
         MariaConnect db = new MariaConnect("localhost", "TEST", "prueba", "prueba", "3306");
         db.NonQuery("CALL add_data_base('" + createDatabase.name + "');");
         return("{\"message\": \"Base de datos creada exitosamente\"}");
     }
     catch (Exception ex)
     {
         return("{\"messageError\": \"" + ex.ToString() + "\"}");
     }
 }
 public string dropTable(parametroID dropTable)
 {
     try
     {
         MariaConnect db = new MariaConnect("localhost", "TEST", "prueba", "prueba", "3306");
         db.NonQuery("DELETE FROM TABLAS WHERE ID =" + dropTable.ID);
         return("{\"message\": \"Tabla borrada exitosamente\"}");
     }
     catch (Exception ex)
     {
         return("{\"messageError\": \"" + ex.ToString() + "\"}");
     }
 }
        public bool updateQueryMaria(Dictionary <string, object> datos, string condition, string value)
        {
            string server   = datos["server"].ToString();
            string database = "multidb_datos";
            string uid      = datos["user"].ToString();
            string pass     = datos["pass"].ToString();
            string port     = datos["port"].ToString();

            MariaConnect db = new MariaConnect(server, database, uid, pass, port);

            //update string set data = 'holi' WHERE data_id = 1 AND data = 'pi';

            db.NonQuery("UPDATE " + datos["column_type"].ToString() + " SET data = '" + value +
                        "' WHERE data_id = " + datos["ID_data"] + " AND data " + condition + ";");

            return(true);
        }
        public string addDatabase(parametrosAddDatabase addDatabase)
        {
            try {
                MariaConnect db = new MariaConnect("localhost", "TEST", "prueba", "prueba", "3306");
                db.NonQuery("CALL registrar_conexion('" + addDatabase.database_type + "','"
                            + addDatabase.user + "','"
                            + addDatabase.pass + "','"
                            + addDatabase.server + "','"
                            + addDatabase.protocol + "','"
                            + addDatabase.port + "','"
                            + addDatabase.alias + "');");

                return("{\"message\": \"Conexion creada exitosamente\"}");
            }
            catch (Exception ex)
            {
                return("{\"messageError\": \"" + ex.ToString() + "\"}");
            }
        }
        public bool insertMaria(Dictionary <string, object> conexion, object dato, int data_id)
        {
            string server   = conexion["server"].ToString();
            string database = "multidb_datos";
            string uid      = conexion["user"].ToString();
            string pass     = conexion["pass"].ToString();
            string port     = conexion["port"].ToString();

            MariaConnect db = new MariaConnect(server, database, uid, pass, port);

            try
            {
                db.NonQuery("INSERT INTO " + conexion["columna"] + "(data_id, data) VALUES ('" + data_id + "', '" + dato.ToString() + "');");
                return(true);
            }
            catch
            {
                return(false);
            }
        }
        public bool deleteDataMaria(Dictionary <string, object> datos)
        {
            string server   = datos["server"].ToString();
            string database = "multidb_datos";
            string uid      = datos["user"].ToString();
            string pass     = datos["pass"].ToString();
            string port     = datos["port"].ToString();

            MariaConnect db = new MariaConnect(server, database, uid, pass, port);

            Debug.WriteLine("DELETE FROM " + datos["column_type"].ToString() + " WHERE data_id = '" + datos["ID_data"].ToString() + "';");
            try
            {
                db.NonQuery("DELETE FROM " + datos["column_type"].ToString() + " WHERE data_id = '" + datos["ID_data"].ToString() + "';");
                return(true);
            }

            catch
            {
                return(false);
            }
        }
        public string createTable(parametrosCreateTable createTable)
        {
            try
            {
                MariaConnect db       = new MariaConnect("localhost", "TEST", "prueba", "prueba", "3306");
                var          id_table = db.GetValueFunction("add_table('" + createTable.table_name + "'," +
                                                            "" + createTable.database_id + ");");

                foreach (parametrosColumn column in createTable.columns)
                {
                    db.NonQuery("CALL add_Column(" + id_table + "," +
                                "'" + column.DB_alias + "'," +
                                "'" + column.column_name + "'," +
                                "'" + column.Type + "'," +
                                "'" + column.Null + "'" +
                                ");");
                }
                return("{\"message\": \"" + "SE CREO LA TABLA EXITOSAMENTE!" + "\"}");
            }
            catch (Exception ex)
            {
                return("{\"messageError\": \"" + ex.ToString() + "\"}");
            }
        }
        public string query_deleteRow(parametrosDelete delete)
        {
            try
            {
                MariaConnect db = new MariaConnect("localhost", "TEST", "prueba", "prueba", "3306");

                string procedure = "get_tuplas(" + delete.filter.column + ");";
                List <Dictionary <string, object> > tuplas = db.CallProcedure(procedure);
                List <string> deletedRows = new List <string>();

                foreach (Dictionary <string, object> resultado in tuplas)
                {
                    object value         = new object();
                    string database_type = resultado["database_type"].ToString();
                    string condition     = delete.filter.method + " '" + delete.filter.byValue + "'";
                    Debug.WriteLine(condition);
                    bool hasBeenDeleted = false;

                    switch (database_type)
                    {
                    case "mariaDB":
                        hasBeenDeleted = hasBeenDeletedMaria(resultado, condition);
                        break;

                    case "SQLServer":
                        hasBeenDeleted = hasBeenDeletedServer(resultado, condition);
                        break;

                    case "mongoDB":
                        hasBeenDeleted = hasBeenDeletedMongo(resultado, delete.filter.byValue, delete.filter.method);
                        break;
                    }

                    if (hasBeenDeleted && !deletedRows.Contains(resultado["ID_tupla"].ToString()))
                    {
                        deletedRows.Add(resultado["ID_tupla"].ToString());
                    }
                }

                foreach (string id_tupla in deletedRows)
                {
                    List <Dictionary <string, object> > dataTuplas = db.CallProcedure("get_tupla('" + id_tupla + "')");
                    Debug.WriteLine("tuplas = " + dataTuplas.Count.ToString());
                    bool validDelete = true;
                    foreach (Dictionary <string, object> column in dataTuplas)
                    {
                        Debug.WriteLine(column["database_type"].ToString());
                        switch (column["database_type"].ToString())
                        {
                        case "mariaDB":
                            validDelete = validDelete && deleteDataMaria(column);
                            break;

                        case "SQLServer":
                            validDelete = validDelete && deleteDataServer(column);
                            break;

                        case "mongoDB":
                            validDelete = validDelete && deleteDataMongo(column);
                            break;
                        }
                    }
                    if (validDelete)
                    {
                        db.NonQuery("DELETE FROM tuplas WHERE ID_tupla = '" + id_tupla + "';");
                    }
                }

                return("{\"message\": \"" + "SE BORRON " + deletedRows.Count + " FILAS EXITOSAMENTE!" + "\"}");
            }
            catch (Exception ex)
            {
                return("{\"messageError\": \"" + ex.ToString() + "\"}");
            }
        }