[英]Need to read inline query from xml file and execute using Vb.net
附加上面的代码
<?xml version="1.0" encoding="UTF-8"?>
<QUERIES>
<QUERY ID="XLIGR">
SELECT trim(QUERY.CDKEY1) as Product, trim(QUERY.CDKEY2) as QUERY, trim(QUERY.CDDESC) as Description,QUERY.EFFDTE as Effective_Date,
QUERY.ENDDTE as Expire_Date FROM XLINS.DWXF347 QUERY WHERE QUERY.GRP = 'XLIGR' UNION SELECT trim(CanadaQUERY.CDKEY1) as Product,
trim(CanadaQUERY.CDKEY2) as QUERY, trim(CanadaQUERY.CDDESC) as Description,CanadaQUERY.EFFDTE as Effective_Date,CanadaQUERY.ENDDTE as Expire_Date
FROM XLCANADA.DWXF347 CanadaQUERY WHERE CanadaQUERY.GRP = 'XLESCAN'
</QUERY>
<QUERY ID="XLIE">
SELECT trim(QUERY.CDKEY1) as Product, trim(QUERY.CDKEY2) as QUERY, trim(QUERY.CDDESC) as Description,QUERY.EFFDTE as Effective_Date,
QUERY.ENDDTE as Expire_Date FROM XLINS.DWXF347 QUERY WHERE (QUERY.GRP = 'XLDATA' OR QUERY.GRP='MIDMARKET')UNION SELECT trim(CanadaQUERY.CDKEY1) as Product,
trim(CanadaQUERY.CDKEY2) as QUERY, trim(CanadaQUERY.CDDESC) as Description,CanadaQUERY.EFFDTE as Effective_Date,CanadaQUERY.ENDDTE as Expire_Date
FROM XLCANADA.DWXF347 CanadaQUERY WHERE (CanadaQUERY.GRP = 'XLESCAN' OR CanadaQUERY.GRP='CANDATA')
</QUERY>
<QUERY ID="XLES">
SELECT trim(QUERY.CDKEY1) as Product, trim(QUERY.CDKEY2) as QUERY, trim(QUERY.CDDESC) as Description,QUERY.EFFDTE as Effective_Date,
QUERY.ENDDTE as Expire_Date FROM XLINS.DWXF347 QUERY WHERE QUERY.GRP = 'XLES' UNION SELECT trim(CanadaQUERY.CDKEY1) as Product,
trim(CanadaQUERY.CDKEY2) as QUERY, trim(CanadaQUERY.CDDESC) as Description,CanadaQUERY.EFFDTE as Effective_Date,CanadaQUERY.ENDDTE as Expire_Date
FROM XLCANADA.DWXF347 CanadaQUERY WHERE CanadaQUERY.GRP = 'XLESCAN'
</QUERY>
<QUERY ID="XLIN">
SELECT trim(QUERY.CDKEY1) as Product, trim(QUERY.CDKEY2) as QUERY, trim(QUERY.CDDESC) as Description,QUERY.EFFDTE as Effective_Date,
QUERY.ENDDTE as Expire_Date FROM INCOMING.DWXF347 QUERY WHERE QUERY.GRP = 'INCOMING' UNION SELECT trim(CanadaQUERY.CDKEY1) as Product,
trim(CanadaQUERY.CDKEY2) as QUERY, trim(CanadaQUERY.CDDESC) as Description,CanadaQUERY.EFFDTE as Effective_Date,CanadaQUERY.ENDDTE as Expire_Date
FROM XLCANADA.DWXF347 CanadaQUERY WHERE CanadaQUERY.GRP = 'XLESCAN'
</QUERY>
<QUERY ID="XLSP">
SELECT trim(QUERY.CDKEY1) as Product, trim(QUERY.CDKEY2) as QUERY, trim(QUERY.CDDESC) as Description,QUERY.EFFDTE as Effective_Date,
QUERY.ENDDTE as Expire_Date FROM XLINS.DWXF347 QUERY WHERE QUERY.GRP = 'XLSELPROF' UNION SELECT trim(CanadaQUERY.CDKEY1) as Product,
trim(CanadaQUERY.CDKEY2) as QUERY, trim(CanadaQUERY.CDDESC) as Description,CanadaQUERY.EFFDTE as Effective_Date,CanadaQUERY.ENDDTE as Expire_Date
FROM XLCANADA.DWXF347 CanadaQUERY WHERE CanadaQUERY.GRP = 'XLESCAN'
</QUERY>
<QUERY ID="XLCN">
SELECT trim(QUERY.CDKEY1) as Product, trim(QUERY.CDKEY2) as QUERY, trim(QUERY.CDDESC) as Description,QUERY.EFFDTE as Effective_Date,
QUERY.ENDDTE as Expire_Date FROM XLINS.DWXF347 QUERY WHERE QUERY.GRP = 'CONSTRUCT' UNION SELECT trim(CanadaQUERY.CDKEY1) as Product,
trim(CanadaQUERY.CDKEY2) as QUERY, trim(CanadaQUERY.CDDESC) as Description,CanadaQUERY.EFFDTE as Effective_Date,CanadaQUERY.ENDDTE as Expire_Date
FROM XLCANADA.DWXF347 CanadaQUERY WHERE CanadaQUERY.GRP = 'XLESCAN'
</QUERY>
<QUERIES>
我需要阅读内联代码并在VB.net中执行,然后使用c#代码进行调用。 我已经尝试过硬编码并在vb .net中执行查询,并将结果集作为数据集获得
private string GetSymbol(String argQueryID)
{
string l_Query;
XmlDocument l_XmlDoc = new XmlDocument();
//load the xml file
l_XmlDoc.Load(Server.MapPath("~/XML/Queries.config"));
l_Query = l_XmlDoc.SelectSingleNode("/QUERIES/QUERY[@ID='" + argQueryID + "']").InnerText;
return l_Query;
}
您可以创建与您的xml文件相对应的类,并使用序列化/反序列化来读取文件并进行迭代或选择查询。
模型:
<Xml.Serialization.XmlRoot("QUERIES")>
Public Class Queries
<Xml.Serialization.XmlElement("QUERY")>
Public Property Queries As List(Of Query)
<Xml.Serialization.XmlIgnore>
Default Public ReadOnly Property Index(ID As String) As String
Get
Return Queries.SingleOrDefault(Function(q) q.ID = ID)?.CommandText
End Get
End Property
End Class
Public Class Query
<Xml.Serialization.XmlAttribute>
Public Property ID As String
<Xml.Serialization.XmlText>
Public Property CommandText As String
End Class
测试代码:
Dim mySerializer As New Xml.Serialization.XmlSerializer(GetType(Queries))
Dim myQueries As Queries ' will hold your query objects
Using sr As New IO.StreamReader("filename.xml")
myQueries = DirectCast(mySerializer.Deserialize(sr), Queries)
End Using
For Each myQuery In myQueries.Queries ' iterate over query objects
Console.WriteLine($"Query ID={myQuery.ID}, CommandText='{myQuery.CommandText}'")
Next
Dim myCommandText = myQueries("XLSP") ' get the query with ID XLSP
Console.WriteLine($"XLSP CommandText='{myCommandText}'")
myCommandText = myQueries("ABCD") ' get a query which doesn't exist (returns "")
Console.WriteLine($"ABCD CommandText='{myCommandText}'")
现在,您有了查询,就可以在数据库中执行查询了。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.