1

我有以下内容:

    SqlConnection con = new SqlConnection(strConn);
    DataSet ds = new DataSet();
    SqlDataAdapter myda = new SqlDataAdapter("SELECT [Key], [Value] FROM [data_LookupValues] where Category = 'CanadaProvinces' ", con);
    myda.Fill(ds);
    ddlState.DataSource = ds;
    ddlState.DataTextField = "Value";
    ddlState.DataValueField = "Key";
    ddlState.DataBind(); 

我被卡住了,因为我需要CanadaProvincesSqlDataAdapter.

有没有一种简单的方法可以做到这一点?当我按照我的方式进行操作时会出现错误。

4

2 回答 2

1

您还没有告诉我们错误,但是,这不是有效的 sql:

SELECT [Key], [Value] FROM [data_LookupValues] = 'CanadaProvinces'

你要查询什么,是data_LookupValues数据库中的一个表吗?

也许这就是你真正想要的:

SELECT [Key], [Value] FROM [data_LookupValues] WHERE Provinces = 'CanadaProvinces'

当然,我只是假设了正确的列名。

于 2012-11-14T21:33:38.057 回答
0

正确的方法是做一些事情:

  1. 将一次性物品包裹成using
  2. 使用单独的SqlCommand对象并使用参数化查询(而不是将您的 SQL 连接在一起)
  3. 因为您只返回一组数据 - 使用 aDataTable而不是“更重”DataSet
  4. 将数据的获取分离到它自己的方法中 - 并且只需从您的网页中调用 - 使其也普遍可用!(将适用于其他事情 - 不仅仅是CanadaProvinces

所以你的代码应该是这样的:

private DataTable FetchData(string categoryValue)
{
   string query = "SELECT [Key], [Value] FROM [data_LookupValues] where Category = @Category";

   using (SqlConnection con = new SqlConnection(strConn))
   using (SqlCommand cmd = new SqlCommand(query, con))
   {
       cmd.Parameters.Add("@Category", SqlDbType.VarChar, 50).Value = categoryValue;

       SqlDataAdapter myda = new SqlDataAdapter(cmd);
       DataTable result = new DataTable();

       myda.Fill(result);
       return result;
    }
}

然后在您的 ASPX web 的代码隐藏中,使用如下内容:

DataTable tblCanadaProvinces = FetchData('CanadaProvinces');  

ddlState.DataSource = tblCanadaProvinces;
ddlState.DataTextField = "Value";
ddlState.DataValueField = "Key";
ddlState.DataBind(); 

并完成它。现在您可以调用您的FetchData方法来检索查找表中的任何可能的类别!

于 2012-11-14T21:54:52.903 回答