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.