Yo lo he probado hace un tiempo y yo realmente no lo consigue. Me recive de error «No se puede convertir implícitamente tipo ‘void’ a ‘cadena'»
He intentado varias variantes de la cadena, int, nada, vacío, public, static y nope, yo realmente no hacerlo bien.

Quiero obtener un valor de mi db pensamiento de car mi DAL y BLL, mi código es el siguiente.

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        Repeater1.DataSource = BLL.getGames();
        Repeater1.DataBind();
        var culture = CultureInfo.GetCultureInfo("sv-SE");
        var dateTimeInfo = DateTimeFormatInfo.GetInstance(culture);
        var dateTime = DateTime.Today;
        int weekNumber = culture.Calendar.GetWeekOfYear(dateTime, dateTimeInfo.CalendarWeekRule, dateTimeInfo.FirstDayOfWeek);
        string mroundY = dateTime.Year.ToString();
        string mroundW = weekNumber.ToString();
        string mrounddate = mroundY + mroundW;

        string mround = BLL.getMroundGames(mrounddate);  <-- Here's the error

    }
    protected void Repeater1_ItemCommand(object source, RepeaterCommandEventArgs e)
    {

    }
}

Mi BLL se parece a esto;

    public class BLL
{
    public static void getMroundGames(string mrounddate)
    {
        SqlCommand getMroundGames = new SqlCommand("SELECT mround FROM gameTB where mround = @mrounddate");
        DAL.ExecuteNonQuery(getMroundGames);
     }
}

También esta probado;

public class BLL
{
    public static DataTable getMroundGames(string mrounddate)
    {
        SqlCommand getMroundGames = new SqlCommand("SELECT mround FROM gameTB where mround = @mrounddate");
        getMroundGames.Parameters.Add("@mrounddate", SqlDbType.VarChar, 10).Value = mrounddate;
        return DAL.GetData(getMroundGames);
    }
}

Y, finalmente, mi DAL se parece a esto;

public class DAL
    {
    public static SqlConnection GetConnection()
        {
            SqlConnection conn = new
            SqlConnection(ConfigurationManager.ConnectionStrings["tiptopConnectionString"].ConnectionString);
            conn.Open();
            return conn;
        }

    public static DataTable GetData(SqlCommand command)
    {
        try
        {
            using (SqlConnection conn = GetConnection())
            {
                using (DataSet ds = new DataSet())
                {
                    using (SqlDataAdapter da = new SqlDataAdapter())
                    {
                        da.SelectCommand = command;
                        da.SelectCommand.Connection = conn;
                        da.Fill(ds);
                        return ds.Tables[0];
                    }
                }
            }
        }
        catch (Exception err)
        {
            throw new ApplicationException(string.Format("Felmeddelande:{0}", err.Message));
        }
    }

    public static object ExecuteScalar(SqlCommand command)
    {
        using (SqlConnection conn = GetConnection())
        {
            command.Connection = conn;
            object result = command.ExecuteScalar();
            return result;
        }
    }

    public static void ExecuteNonQuery(SqlCommand command)
    {
        using (SqlConnection conn = GetConnection())
        {
            command.Connection = conn;
            command.ExecuteNonQuery();
        }
    }

}

Por dónde empezar?

  • Su función es void es decir que no devuelve nada. E intenta asignar que a una cadena… ¿Qué se puede esperar / la intención de suceder?
  • ¿Por qué te devuelve void?
  • Aceptar en lugar de hacer las cosas más difíciles. Como hacer un simple posible consulta para un único valor para presentar en su página aspx donde mround = actual año actual semana de año. Así que el sql sería; Seleccione mround de gameTB donde mround = 201310 Y me da el valor sql para mi etiqueta con id mroundlabel?
InformationsquelleAutor Slint | 2013-03-06

2 Comentarios

  1. 10

    La firma para que esto está mal;

    public static void getMroundGames(string mrounddate)

    Usted necesita para cambiar a algo similar ;

    public static string getMroundGames(string mrounddate)

    Recuperar la cadena de valor de su DAL y la devolución al consumidor en consecuencia.

    var dt = Dal.GetData();
    return (string)dt.Rows[0]["field"];

    Sin embargo, en toda honestidad, yo no estaría pasando un datatable de su DAL a su BLL. Me gustaría volver a la cadena directamente o introducir un DTO y llenar esto de tu DAL a través de su BLL, de regreso al consumidor.

  2. 1

    Que usted necesita para añadir un tipo de retorno de la cadena de getMroundGameas(cadena mrounddate).

    No está claro qué tipo de objeto DAL es, pero probablemente deberías utilizar el método ExecuteReader, http://msdn.microsoft.com/en-us/library/bb344397.aspx
    en lugar de ExecuteNonQuery. Esto devolverá un Lector que se puede consultar por el valor devuelto por la instrucción select.

    Finalmente, usted debe devolver el valor.

Dejar respuesta

Please enter your comment!
Please enter your name here