【问题标题】:pasing listview results through SQL to get "result"通过 SQL 传递 listview 结果以获取“结果”
【发布时间】:2015-11-26 12:06:57
【问题描述】:

我试图通过 sql 命令解析 arr[0] 的结果以获取结果,然后将其替换为 arr[0] 结果。

arr[0] 给我的第一个结果是:34

所以我想得到结果 34 通过我的 SQL 连接解析它以返回结果“Trtanium”。

这是我正在使用的代码;

    private void JitaOrePrices()
    {            

        ListViewItem itm;

        //listview settings.
        listView1_Jita.View = View.Details;
        listView1_Jita.GridLines = true;
        listView1_Jita.FullRowSelect = true;

        //convert to string.
        string string1 = "http://api.eve-central.com/api/marketstat?typeid=34&minQ=1&typeid=35&minQ=1&typeid=36&minQ=1&typeid=37&minQ=1&typeid=38&minQ=1&typeid=39&minQ=1&typeid=40&minQ=1&typeid=11399&minQ=1&usesystem=30000142";

        // add colums to put into. 
        listView1_Jita.Columns.Add("Type", 45);
        listView1_Jita.Columns.Add("(B)", 70);
        listView1_Jita.Columns.Add("(S)", 70);

        //set arrays to put into.
        string[] arr = new string[3];

        XmlDocument doco = new XmlDocument();
        doco.Load(string1);            
        XmlNodeList Blist = doco.SelectNodes("/evec_api/marketstat/type");
        foreach (XmlNode xnod in Blist)           
        {
            SqlConnection SQLC = new SqlConnection("user id=No_IdeaV2;" + "password = ********;server =******;" + "Trusted_Connection=yes;" + "database = 12345;" + "connection timeout = 30");

            SQLC.Open();

            SqlCommand SQLLookup = new SqlCommand("SELECT typeName FROM invTypes WHERE typeID = 'THIS IS WHERE I AM STUCK'");

            XmlNode znod = xnod.SelectSingleNode("buy");
            XmlNode dnod = xnod.SelectSingleNode("sell");

            if (xnod.Attributes["id"] != null)
            {
                arr[0] = xnod.Attributes["id"].InnerText;
                arr[1] = znod.SelectSingleNode("max").InnerText;
                arr[2] = dnod.SelectSingleNode("max").InnerText;
            }

                itm = new ListViewItem(arr);
            itm.Font = new Font("Tahima", 9);
            listView1_Jita.Items.Add(itm);        
        }


    }

【问题讨论】:

    标签: c# sql xml winforms


    【解决方案1】:

    假设您的 typeID 列是一个数字字段,请像这样创建您的 sql 命令:

    using (SqlConnection SQLC = new SqlConnection( /* as shown by OP */))
    {
      SQLC.Open();
      foreach (XmlNode xnod in Blist)           
      {
        // I guess you would leave those nodes out entirely
        if (xnod.Attributes["id"] == null) continue;
        XmlNode znod = xnod.SelectSingleNode("buy");
        XmlNode dnod = xnod.SelectSingleNode("sell");
    
        arr[0] = xnod.Attributes["id"].InnerText;
        arr[1] = znod.SelectSingleNode("max").InnerText;
        arr[2] = dnod.SelectSingleNode("max").InnerText;
    
        SqlCommand SQLLookup = new SqlCommand(string.Format("SELECT typeName FROM invTypes WHERE typeID = {0}", arr[0]), SQLC); // don't forget to set the connection
    
        arr[0] = SQLLookup.ExecuteScalar() as string;
    
        itm = new ListViewItem(arr);
        itm.Font = new Font("Tahima", 9);
        listView1_Jita.Items.Add(itm);        
      }
    }
    

    我将连接放到外部范围,这样您就不必为每个节点打开一个新连接。它在 using 语句中,因此它会在之后正确关闭和清理。

    请务必添加一些错误处理,因为 sql 连接可能会在网络错误时抛出异常或者您的 typeID 可能找不到等。

    如果您的 typeID 列是字符串类型,请将格式字符串更改为"... WHERE typeID = '{0}'"

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-29
      • 2014-07-21
      • 1970-01-01
      • 1970-01-01
      • 2017-09-10
      相关资源
      最近更新 更多