Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将数据库中的值添加到一系列下拉按钮中?_C#_Sql_.net_Sqlcommand - Fatal编程技术网

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

C# 如何将数据库中的值添加到一系列下拉按钮中?,c#,sql,.net,sqlcommand,C#,Sql,.net,Sqlcommand,我有一个向客户发送文本的应用程序,我希望能够为它提供一个模板系统;完成的代码将使用“我的数据库”中的值填充toolStripDropDownButton,提供数据库中的描述,然后当用户单击描述时,要发送的文本框将预先填充数据库中的模板文本 我已经开始使用messagebox测试这段代码,但是代码不会编译,因为第62行有一个错误,它说“方法'GetValues'不重载0个参数”,如果可能的话,我想要一些关于如何让代码工作的指导 下面是有问题的代码,任何帮助都将不胜感激 private void F

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

我已经开始使用messagebox测试这段代码,但是代码不会编译,因为第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());
    }
private void Form1\u加载(对象发送方,事件参数e)
{
尝试
{
面板1.隐藏();
this.ebox=false;
SqlConnection conn=newsqlconnection(“数据源=tcp:CRUSADER,49172;初始目录=HermesSMS;持久安全信息=True;用户ID=Admin;密码=w”);
SqlCommand comm=新的SqlCommand();
通信连接=连接;
conn.Open();
comm.CommandText=(“从模板中选择描述”);
SqlDataReader DR=comm.ExecuteReader();
Show(DR.GetValues()ToString());
方法“GetValues”没有采用0个参数的重载

这是因为不存在接受零参数的重载。它需要一个
对象数组
才能传递给该方法。请看链接MSDN文档中的示例:

Object[] values = new Object[reader.FieldCount];
int fieldCount = reader.GetValues(values);
一个
Object[]
参数被传递给
GetValues
方法,然后该数组将被
SqlDataReader
中的值填充


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

如果您不在问题中包括这一点,怎么会有人知道错误是什么呢?DR.GetValues().ToString()您缺少一个。before
ToString()
抱歉,是的!错误是“方法“GetValues”的无重载在建议的amendment@Reece这条消息还不够清楚吗?您正在调用
GetValues()
-也就是说,它不提供参数,但需要参数。我建议您在发布这些类型的问题之前查看文档。他们会为您解答。这不只是获取与列数有关的值,而不是列数中包含的值吗?@Reece:它同时提供。它返回计数,并修改这是
对象
集合。(无可否认,我真的不喜欢这样修改参数的方法。这可能是一个不直观的副作用,使方法调用不明确。但这就是他们在这个方法中所做的。)