如何将数据库中找到的值添加到一系列下拉按钮?

时间:2014-06-09 12:34:20

标签: c# sql .net sqlcommand

我有一个向客户发送文本的应用程序,我希望能够为它提供模板系统;完成的代码将使用我的数据库中的值填充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());
    }

1 个答案:

答案 0 :(得分:2)

  

没有超载方法&#39; GetValues&#39;取0参数

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

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

Object[]参数传递给GetValues方法,然后将使用SqlDataReader中的值填充该数组。

顺便说一句,我真的建议采用更强类型的数据访问方法。理想情况下使用像Entity Framework这样的东西,甚至是不推荐使用的Linq to Sql。将所有内容装入无类型object会导致大量类型检查代码并且很有可能出错。