Categories
Humor Miniposts Web WTF

Abraza a un programador

Si ves a un programador por la calle, abrázalo.

Categories
Varios WTF

Pequeños detalles que a veces hacen desperdiciar tiempo

Hoy, luego de estar intentando determinar por algunas horas la causa del error, finalmente llegué a la conclusión que la culpa no era mía -- generalmente es lo contrario 😀 --, sino de la herramienta que estaba usando para hacer un pequeño trabajo. El hecho es que un poco mosqueado por la nula poca usabilidad del cliente de consola de Oracle, decidí usar la interfaz web que viene con la versión Express del citado DBMS, que al parecer tiene el siguiente bug *:

Oracle Client Bug
Para los que no hayan notado la diferencia, el nùmero de filas retornadas para la misma consulta en ambos clientes de Oracle es diferente.

En fin, si alguien está usando el cliente web la versión express de Oracle posiblemente tenga algunos problemas.

* Asumo que es bug de la interfaz web puesto que el otro cliente lleva un poco más tiempo en desarrollo, aunque como es la primera vez que uso Oracle puedo estar totalmente equivocado.

Categories
Humor Varios WTF

Cosas curiosas de los foros de discusión

El ser partícipe de listas de correo o foros de discusión es una experiencia enriquecedora y muchas veces divertida, no sólo porque se puede aprender mucho o conocer gente bastante interesante, sino también porque existen casos anecdóticos como el siguiente 🙂 :

ESTOY EN EXAMEN (URGENTE) Problema con datagrid

Hola, espero que leais esto pronto, necesito aprobar como sea. Mi problema es el siguiente:

- Genero un datagrid, del que selecciono una provincia, y enlazo con otro datagrid que se genera automaticamente con los cursos existentes en esa provincia. En el segundo datagrid selecciono un curso concreto para pasarlo a un listbox... pero el datagrid se me vacia y el listbox no se llena. Como puedo hacer para que se guarde el valor del datagrid?

Categories
.NET Seguridad Sql Injection WTF

Administrar comillas utilizando el método Replace de la clase String

El título hace referencia a un artículo -bastante preocupante por cierto- publicado en el sitio web de El Guille, en el que se presenta una función para evitar el problema con las comillas simples cuando se concatenan sentencias SQL.

En este ejemplo veremos cómo utilizar el método Replace de la clase String. Este ejemplo reemplaza comillas simples entre dos comillas simples adyacentes para asegurarse de que los datos tienen el formato correcto cuando se concatenan valores para una instrucción SQL.

El código que se muestra es el siguiente (en mi opinión, código candidato para WTF):

csharp:

public string QuitarApostrofe(string vCadena)
{
    vCadena = vCadena.Replace("'", "''");
    return vCadena;
}

public void e50factu()
{
    //Cadena a la cual se le va a sustituir la comilla.
    string MiCadena = QuitarApostrofe("WARNER'S DE MEXICO SA DE CV ");
    //Abro la conexion
    ConecServer.Open();
    OleDbCommand mycmd = ConecServer.CreateCommand();
    OleDbTransaction Trans;
    Trans = ConecServer.BeginTransaction(IsolationLevel.ReadCommitted);
    mycmd.Connection = ConecServer;
    mycmd.Transaction = Trans;
    try
    {
        strSQL = "INSERT INTO e50factu(serie50,numero50,descri50) " +
            "VALUES ('" + clsVariables.vSerie + "'," + 20356 + ",'" + MiCadena + "')";
        mycmd.CommandText = strSQL;
        mycmd.ExecuteNonQuery();
        strSQL = "INSERT INTO A50COTI(folio,factura,usuario,hora,serie)" +
            "VALUES(" + 1 + "," + 20356 + "," + "evallejo" + ",'" + "12:00" + "','" + "B" + "')";
        mycmd.CommandText = strSQL;
        mycmd.ExecuteNonQuery();
        Trans.Commit();
    }
    catch (System.Exception error)
    {
        try
        {
            Trans.Rollback();
            MessageBox.Show("Ocurrio un error, no se realizo ningún cambio en la base de datos" +
                error.Message,
                "Guardar Factura", MessageBoxButtons.OK, MessageBoxIcon.Error);
        }
        catch (OleDbException ex)
        {
            if (Trans.Connection != null)
            {
                MessageBox.Show("Ha ocurrido una excepción grave de tipo " + ex.GetType());
            }
        }
    }
    finally
    {
        ConecServer.Close();
    }
}

Personalmente creo que el hecho de que se publiquen o dejen pasar este tipo de recursos en un sitio bastante popular, puede hacer daño a aquellos que recién empiezan y consideran que todo lo que se publica ahí sea información útil y fiable.