为什么executereader的行为如下?

时间:2013-01-22 10:49:26

标签: c# asp.net code-behind

我找不到对这种奇怪行为的正确解释。 在另一个项目中,这就像一个魅力。 当我解析sqlconnection并使用System.Data.SqlClient时,它会在executereader下使这个红色下划线....为什么它会像这样?

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.Configuration;
using System.Data.SqlClient;


public partial class Default3 : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

        //*********************************
        //Definerer connection stringen   *
        //*********************************
        SqlConnection BilleddataBasen = new SqlConnection(WebConfigurationManager.ConnectionStrings["Boligforeningen_AB8"].ConnectionString);

        //**************************************
        //Definerer de forskellige variabler   *
        //**************************************
        string ImageFilePath = "";
        string ImageName = "";
        string OverfoereDataTilImageControlPaaAspxSiden = "";

        //**************************************************
        //Definerer hvordan der skal læses fra databasen   *
        //**************************************************
        SqlCommand SelectBlogIndlæg = new SqlCommand("SELECT FileName, FilePath, OprettelsesDato, Tittel, BilledetsIndhold FROM BillederTilGalleri", BilleddataBasen);

        BilleddataBasen.Open();
        SqlDataReader reader = BilleddataBasen.ExecuteReader();
        while (reader.Read())
        {
            ImageName += reader["FileName"];
            ImageFilePath += reader["FilePath"];
            lbl_OprettelsesDato.Text += reader["OprettelsesDato"];
            lbl_BilledNavnet.Text += reader["Tittel"];
            lbl_BeskrivelseAfBilledet.Text += reader["BilledetsIndhold"];
        }

        OverfoereDataTilImageControlPaaAspxSiden = ImageFilePath + ImageName;
        lbl_BilledFraDataBasen.ImageUrl = OverfoereDataTilImageControlPaaAspxSiden;

        //************************************************
        //Følgende to linier bestemmer pixel størrelse   *
        //************************************************

        lbl_BilledFraDataBasen.Width = 300;
        lbl_BilledFraDataBasen.Height = 250;

        //*************************************
        //Lukker ned for database tilgangen   *
        //*************************************
        reader.Close();
        BilleddataBasen.Close();
    }
}

2 个答案:

答案 0 :(得分:3)

SqlConnection没有ExecuteReader方法。 SqlCommand。你应该打电话:

SqlDataReader reader = SelectBlogIndlæg.ExecuteReader();

请注意,在构建时,编译器错误消息应该为您提供了自己诊断所需的所有信息 - 至少在第一部分。值得回过头来弄清楚如何为自己解决这个问题(以及如何解决下一个问题)。

as asides:

  • 您应该对所有资源(连接,命令,阅读器)使用using语句列表项
  • 在循环中连接字符串通常是一个坏主意(在这种情况下,它看起来不像你有一个分隔符,所以你的值将被涂抹在一起)
  • 常规变量是使用camelCase而不是PascalCase

另外,你说:

  

在另一个项目中,这就像一个魅力。

这根本不是真的。您提供的代码在任何项目中都可以使用。

答案 1 :(得分:0)

您正在SqlConnection对象上调用ExecuteReader,您应该在Command对象上调用它。

SqlDataReader reader = SelectBlogIndlæg.ExecuteReader();