【问题标题】:How can I add values found in a Database to a series of Dropdown Buttons?如何将在数据库中找到的值添加到一系列下拉按钮?
【发布时间】:2014-06-09 12:34:20
【问题描述】:

我有一个向客户发送文本的应用程序,我希望能够为它提供一个模板系统;完成的代码将用我的数据库中的值填充 toolStripDropDownButton,提供数据库中的描述,然后当用户单击描述时,要发送的文本框将预先填充数据库中的模板文本。

我已经开始使用消息框测试此代码,但是代码将无法编译,因为第 62 行出现错误说“方法 'GetValues' 没有重载需要 0 个参数”,我需要一些指导如果可能的话,请告诉我如何让我的代码正常工作。

违规代码如下,任何帮助将不胜感激

private void Form1_Load(object sender, EventArgs e)
{
    try
    {
        panel1.Hide();
        this.MaximizeBox = false;
        SqlConnection conn = new SqlConnection("Data Source=tcp:CRUSADER,49172;Initial Catalog=HermesSMS;Persist Security Info=True;User ID=Admin;Password=w");
        SqlCommand comm = new SqlCommand();
        comm.Connection = conn;
        conn.Open();
        comm.CommandText = ("Select Description FROM Templates");
        SqlDataReader DR = comm.ExecuteReader();
        MessageBox.Show(DR.GetValues()ToString());<-line 62
        conn.Close();
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.ToString());
    }

【问题讨论】:

  • 如果您没有在问题中包含错误,那么任何人应该如何知道错误是什么?
  • DR.GetValues().ToString() 您缺少一个 .之前ToString()
  • 对不起,当然!错误是“方法 'GetValues' 没有重载需要 0 个参数”
  • 在您提出修改后
  • @Reece 这条信息还不够清楚吗?您正在调用GetValues() - 即不提供任何参数,它需要参数。我建议您在发布这些类型的问题之前查看文档。他们会为您解答。

标签: c# sql .net sqlcommand


【解决方案1】:

“GetValues”方法没有重载需要 0 个参数

嗯,这是因为 the GetValues method 没有重载,它接受零参数。它需要将objects 的数组传递给该方法。查看链接的 MSDN 文档中的示例:

Object[] values = new Object[reader.FieldCount];
int fieldCount = reader.GetValues(values);

Object[] 参数被传递给GetValues 方法,然后该数组将填充来自SqlDataReader 的值。

顺便说一句,我真的建议采用更强类型的数据访问方法。理想情况下使用实体框架之类的东西,甚至是已弃用(但仍然非常实用)的 Linq to Sql。将所有内容装箱到无类型的 object 中会导致大量类型检查代码和很高的错误可能性。

【讨论】:

  • 那不是只获取与列数有关的值,而不是其中包含的值吗?
  • @Reece:两者都有。它返回计数,并修改object 集合。 (诚​​然,我真的不喜欢这样修改参数的方法。这可能是一种不直观的副作用,并且使方法调用不清楚。但这就是他们在这个方法中所做的。)跨度>
猜你喜欢
  • 2015-02-12
  • 1970-01-01
  • 2013-01-29
  • 2016-05-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-21
  • 1970-01-01
相关资源
最近更新 更多