通过SQL对列表视图结果进行pasing;结果”;

本文关键字:结果 pasing SQL 列表 视图 通过 | 更新日期: 2023-09-27 18:24:45

im试图通过sql命令解析arr[0]的结果以获得结果,然后将其放入arr[0]结果的replacment中。

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);        
        }

    }

通过SQL对列表视图结果进行pasing;结果”;

假设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}'"