我创建了一个带有示例内容的Xml文件,如下所示:
<?xml version="1.0" encoding="utf-8" ?>
<Periods>
<PeriodGroup name="HER">
<Period>
<PeriodName>Prehistoric</PeriodName>
<StartDate>-500000</StartDate>
<EndDate>43</EndDate>
</Period>
<Period>
<PeriodName>Iron Age</PeriodName>
<StartDate>-800</StartDate>
<EndDate>43</EndDate>
</Period>
<Period>
<PeriodName>Roman</PeriodName>
<StartDate>43</StartDate>
<EndDate>410</EndDate>
</Period>
</PeriodGroup>
<PeriodGroup name="CAFG">
<Period>
<PeriodName>Prehistoric</PeriodName>
<StartDate>-500000</StartDate>
<EndDate>43</EndDate>
</Period>
<Period>
<PeriodName>Roman</PeriodName>
<StartDate>43</StartDate>
<EndDate>410</EndDate>
</Period>
<Period>
<PeriodName>Anglo-Saxon</PeriodName>
<StartDate>410</StartDate>
<EndDate>800</EndDate>
</Period>
</PeriodGroup>
</Periods>
Run Code Online (Sandbox Code Playgroud)
我需要能够读取所选PeriodGroup中的Period节点子节点.我想PeriodName可能是Period的一个属性,如果这更合理的话.
我看了很多例子,但似乎没有一点是正确的,似乎有几十种不同的方法,一些使用XmlReader,一些使用XmlTextReader,一些不使用.由于这是我第一次阅读Xml文件,我想我会问是否有人可以给我一个指针.我有一些工作只是为了尝试,但感觉很笨.我正在使用VS2010和c#.另外,我看到很多人都在使用LINQ-Xml,所以我很欣赏使用这种方法的优点和缺点.
string PG = "HER";
XmlDocument doc = new XmlDocument();
doc.Load(Server.MapPath("./Xml/XmlFile.xml"));
string text = string.Empty;
XmlNodeList xnl = doc.SelectNodes("/Periods/PeriodGroup");
foreach (XmlNode node in xnl)
{
text = node.Attributes["name"].InnerText;
if (text == PG)
{
XmlNodeList xnl2 …Run Code Online (Sandbox Code Playgroud) 我试图更新一个工作正常的存储过程,而无需使用sp_executesql.我现在想要将表名作为参数,因为我有许多具有相同结构的表,并且不希望为每个表创建新的存储过程.
我遇到的问题是这个版本似乎需要所有参数,而前一个版本接受任意数量的参数.例如,如果我删除所有WHERE参数并且只有@TableName参数,它可以正常工作.我试过寻找一个例子,但我找不到这样的东西.解析表名的所有示例都只包含该参数.
CREATE PROCEDURE cafgTenantNamesTEST2
@TableName sysname,
@Square nvarchar(100) = null,
@Location nvarchar(100) = null,
@Name nvarchar(100) = null,
@NormalizedName nvarchar(100) = null,
@SharedLand int = 0,
@FieldNumber int = 0,
@Description nvarchar(255) = null,
@Dwelling nvarchar(100) = null
AS
BEGIN
DECLARE @sql AS NVARCHAR(MAX)
SET @sql = 'SELECT * FROM [' + @TableName + ']' +
'WHERE ([Square] LIKE ''' + @Square + ''' OR ''' + @Square + ''' IS NULL)' +
'AND ([Location] = ''' + @Location …Run Code Online (Sandbox Code Playgroud) 当我开始掌握 Linq 时,我可能问错了问题。我已经寻找了一个解决方案,我唯一想到的是继承可能是答案,但我不知道如何在这种情况下使用它。我正在使用 C# 并为表创建了一个类:
[Table(Name = "CommonDocumentData1800")]
public class CommonDocumentRecordData
{
[Column]
public string RecordID;
[Column]
public int? StartYear;
[Column]
public int? EndYear;
[Column]
....
}
Run Code Online (Sandbox Code Playgroud)
我有多个表(例如 CommonDocumentData1800、CommonDocumentData1900、CommonDocumentData2000),但我想使用相同的类,而不是使用不同的名称重复该类。我该如何处理这个问题?
我刚刚开始在sql server中使用存储过程并且已经相当不错,但我现在遇到了一个我无法理解的问题.我已经找到了答案,但说实话,我不确定我是在问正确的问题.
我的sp是:
ALTER PROCEDURE [FindName]
@Square nvarchar(100) = null,
@Location nvarchar(100) = null,
@Name nvarchar(100) = null,
@NormalizedName nvarchar(100) = null,
@SharedLand int = 0,
@FieldNumber int = 0,
@Description nvarchar(255) = null,
@Dwelling nvarchar(100) = null
AS
BEGIN
SELECT * FROM [Holdings]
WHERE
([Square] LIKE @Square OR @Square IS NULL)
AND ([Location] = @Location OR @Location IS NULL)
AND ([Name] LIKE @Name OR @Name IS NULL)
AND ([NormalizedName] LIKE @NormalizedName OR @NormalizedName IS NULL)
AND ([SharedLand] = @SharedLand …Run Code Online (Sandbox Code Playgroud)