列名无效?

时间:2015-03-01 15:32:53

标签: c# asp.net sql-server

好的,我已经尝试了几个小时,无法查看代码有什么问题。 (我可能已经失去了代码,但是当你编码超过24小时不停的时候会发生什么:D)。这是一个非常小的代码。我只需要选择一些列并在gridview中显示它们。我查询了,当我运行它时,我得到了:Invalid column name Donor

C#代码:

string str = "SELECT BBID, Name, ContactNum, Email, Gender, BloodGroup, Category, Address FROM Bloodbank WHERE (Category = N'Donor')";
        cmd = new SqlCommand(str, con);
        con.Open();
        SqlDataAdapter adp = new SqlDataAdapter(cmd);
        DataTable dt = new DataTable();
        adp.Fill(dt);
        GridView1.DataSource = dt;
        GridView1.DataBind();
        con.Close();

我的数据库表:

SELECT [BBID]
  ,[Name]
  ,[ContactNum]
  ,[Email]
  ,[Gender]
  ,[BloodGroup]
  ,[Category]
  ,[Address]

FROM [SMC]。[dbo]。[Bloodbank]

Category中,您可以通过Donor选择RecieverDropDownList。 我相信这将是我犯的一些愚蠢的错误,但我在这里完全不知所措。任何帮助将不胜感激。谢谢!

P.S:此查询在SSMS中完美运行。

2 个答案:

答案 0 :(得分:1)

您是否确定您的DDL在所选值附近加上引号?听起来好像查询使用“Category = Donor”(没有单引号)而不是“Category = N'Donor”“

答案 1 :(得分:0)

您应该将SqlParameter与您的代码一起使用,如以下代码段所示。我假设Category字段的DataType是NvarChar(10)。它将在未来为您的代码提供一些灵活性。

SqlConnection con = new SqlConnection("Data Source=ServerName;Initial Catalog=CatalogName;Integrated Security=True");            
        string str = "SELECT [BBID], [Name], [ContactNum], [Email], [Gender], [BloodGroup], [Category], [Address] FROM [Bloodbank] WHERE ([Category] = @Category)";
        SqlCommand cmd = new SqlCommand(str, con);
        SqlParameter param = new SqlParameter("Category", SqlDbType.NVarChar, 10);
        cmd.Parameters.Add(param);
        param.Value = "Donor";
        con.Open();
        SqlDataAdapter adp = new SqlDataAdapter(cmd);
        DataTable dt = new DataTable();
        adp.Fill(dt);
        GridView1.DataSource = dt;
        GridView1.DataBind();
        con.Close();