好的,我已经尝试了几个小时,无法查看代码有什么问题。 (我可能已经失去了代码,但是当你编码超过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
选择Reciever
或DropDownList
。
我相信这将是我犯的一些愚蠢的错误,但我在这里完全不知所措。任何帮助将不胜感激。谢谢!
P.S:此查询在SSMS中完美运行。
答案 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();