Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/76.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_Sql Server - Fatal编程技术网

C# 该方法采用字符串,并且必须返回列表或树

C# 该方法采用字符串,并且必须返回列表或树,c#,sql,sql-server,C#,Sql,Sql Server,我创建了一个方法并向其中添加了一个参数以插入到查询中。调用此方法时,我应该构建一个树 错误参数1:无法从“CodersLab.Windows.Controls.TreeView”转换为“string” public List GetHTInfoTable(字符串o) { TreeNode树=新的TreeNode(); //tree.BeginUpdate(); //tree.Nodes.Clear(); 列表结果=新列表(); 使用(SqlCommand comm=newsqlcommand(@

我创建了一个方法并向其中添加了一个参数以插入到查询中。调用此方法时,我应该构建一个树

错误参数1:无法从“CodersLab.Windows.Controls.TreeView”转换为“string”

public List GetHTInfoTable(字符串o)
{
TreeNode树=新的TreeNode();
//tree.BeginUpdate();
//tree.Nodes.Clear();
列表结果=新列表();
使用(SqlCommand comm=newsqlcommand(@“从[HT].[dbo].[tat]a[HT].[dbo].[HT]b中选择a.wro、b.name、a.status,其中b.id=a.id_表和[o]='{o}',Connect))
{
// Проходим ридером
使用(SqlDataReader=comm.ExecuteReader())
{
if(!reader.HasRows)返回结果;
var状态=新树节点(“+++”);
while(reader.Read())
{
var HT=新状态信息();
HT.O=Convert.ToString(reader.GetValue(0));
HT.US=Convert.ToString(reader.GetValue(2));
HT.T=reader.GetString(1);
TreeNode statusTree=新的TreeNode();
statusTree.Nodes.Add(HT.US);
Status.Nodes.Add(statusTree);
TreeNode tableTree=新的TreeNode();
tableTree.Nodes.Add(HT.Table);
statusTree.Nodes.Add(tableTree);
tree.Nodes.Add(状态);
}
}
返回结果;
}
私人电视(O)
{
StatusTree.BeginUpdate();
StatusTree.SelectedNodes.Clear();
StatusTree.Nodes.Clear();
List ht=新列表();
尝试
{
MSSDB=新的MSSQLSDB(Settings.MSSQL_地址、Settings.MSSQL_数据库名、Settings.MSSQL_登录、Settings.MSSQL_密码);
MSSDB.Open();
ht=MSSDB.GetHTInfoTable(StatusTree);
}
捕获(例外情况除外)
{
MessageBox.Show(例如Message);
Application.Exit();
}
StatusTree.EndUpdate();
}

嗯,似乎您传递的是
TreeView
类型的对象,而不是
string
。因此异常不是因为代码段中的第一个函数,而是因为它的调用者
refreshttv(O)
。您希望在这里发生什么:
ht=MSSDB.GetHTInfoTable(StatusTree)
?事实上是相反的,他应该传递一个树视图而不是字符串。@Glenvanacker无论如何,因为
结果从来没有被添加到,这将总是返回一个空列表……这是一个事实,我感觉到另一个问题出现了:D,因为它与这个问题无关
public List<StatusInfo> GetHTInfoTable(string o)
{

    TreeNode tree = new TreeNode();
    //tree.BeginUpdate();
    //tree.Nodes.Clear();
    List<StatusInfo> result = new List<StatusInfo>();


    using (SqlCommand comm = new SqlCommand(@"select a.wro, b.name, a.status from [HT].[dbo].[tat] a, [HT].[dbo].[HT] b where b.id = a.id_table and [o]='{o}'", Connect))
    {

        // Проходим ридером
        using (SqlDataReader reader = comm.ExecuteReader())
        {
            if (!reader.HasRows) return result;

            var Status = new TreeNode("+++");

            while (reader.Read())
            {
                var HT = new StatusInfo();
                HT.O = Convert.ToString(reader.GetValue(0));
                HT.US = Convert.ToString(reader.GetValue(2));
                HT.T= reader.GetString(1);
                TreeNode statusTree = new TreeNode();
                statusTree.Nodes.Add(HT.US);
                Status.Nodes.Add(statusTree);
                TreeNode tableTree = new TreeNode();
                tableTree.Nodes.Add(HT.Table);
                statusTree.Nodes.Add(tableTree);

            tree.Nodes.Add(Status);

        }

    }

    return result;
}

private void RefreshTV(O o)
{
    StatusTree.BeginUpdate();
    StatusTree.SelectedNodes.Clear();
    StatusTree.Nodes.Clear();

    List<StatusInfo> ht = new List<StatusInfo>();

    try
    {
        MSSDB = new MSSqlDB(Settings.MSSQL_Address, Settings.MSSQL_DBName, Settings.MSSQL_Login, Settings.MSSQL_Password);
        MSSDB.Open();
        ht = MSSDB.GetHTInfoTable(StatusTree);

    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);
        Application.Exit();
    }

    StatusTree.EndUpdate();
}