通过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);
}
}
假设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}'"