【问题标题】:([sqlDataReader to comboBox]) - Complex DataBinding accepts as a data source either an IList or an IListSource([sqlDataReader to comboBox]) - 复杂 DataBinding 接受 IList 或 IListSource 作为数据源
【发布时间】:2017-12-18 20:47:52
【问题描述】:

我在尝试填充组合框时遇到了这个非常令人沮丧的错误。

System.ArgumentException: Complex DataBinding 接受 IList 或 IListSource 作为数据源

这是导致它的代码 sn-p。

main.cmd.Connection = main.con;
    main.cmd.CommandText = "SELECT num_innovation FROM Innovation INNER JOIN Activite ON Innovation.num_activite = Activite.num_activite WHERE Activite.num_activite = " + comboBox_activite.SelectedValue;
    main.con.Open();
    System.Data.SqlClient.SqlDataReader sdReader = main.cmd.ExecuteReader();
    comboBox_innovation.DisplayMember = "num_innovation";
    comboBox_innovation.ValueMember = "num_innovation";
    comboBox_innovation.DataSource = sdReader; //Error here
    sdReader.Close();
    main.con.Close();

【问题讨论】:

  • 在 bobby 表访问之前,您需要阅读、理解并开始参数化您的查询。 bobby-tables.com 你所拥有的对 sql 注入是开放的。

标签: c# sql sql-server


【解决方案1】:

错误消息说您需要将 sdReader 转换为列表。 请参阅下文,了解如何将数据阅读器转换为列表: How can I easily convert DataReader to List<T>?

顺便说一句,您还应该参数化您的查询以防止 SQL 注入攻击。

尝试使用 ORM 框架,例如 EntityFramework 或 Nhibernate。学习和开始可能需要一些时间,但从长远来看,这会让你的生活更轻松。例如简单绑定,查询中的 lambda

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-20
    • 1970-01-01
    • 2021-11-04
    • 1970-01-01
    • 1970-01-01
    • 2015-02-18
    相关资源
    最近更新 更多