【发布时间】:2021-09-06 00:24:06
【问题描述】:
我要使用下面的 XML 文件;
<?xml version="1.0" encoding="UTF-8"?>
-<ty>
-<ry>
<EMPID>1</EMPID>
<EMPName>Thabo</EMPName>
<EMPRole>Developer </EMPRole>
<EMPAddress>227 Complex B WoodMans Road Claremont</EMPAddress>
<EMPEmail>Thabecoo@hotmail.com</EMPEmail>
<EMPNumber>083 577 8910</EMPNumber>
</ry>
-<ry>
<EMPID>2</EMPID>
<EMPName>Aldrin</EMPName>
<EMPRole>Analyst </EMPRole>
<EMPAddress>65 Mfecane Avenue</EMPAddress>
<EMPEmail>AGFFHH@tommail.com</EMPEmail>
<EMPNumber>0872343352</EMPNumber>
</ry>
-<ry>
<EMPID>4</EMPID>
<EMPName>Amoleng</EMPName>
<EMPRole>Engineer </EMPRole>
<EMPAddress>43 Pixely KaSeme Street</EMPAddress>
<EMPEmail>AmoT@axxess.co.za</EMPEmail>
<EMPNumber>0765546832</EMPNumber>
</ry>
-<ry>
<EMPID>5</EMPID>
<EMPName>Nathi</EMPName>
<EMPRole>Executive </EMPRole>
<EMPAddress>54 Steve Biko Road</EMPAddress>
<EMPEmail>nat544787@gmail.com</EMPEmail>
<EMPNumber>0834567656</EMPNumber>
</ry>
</ty>
我想使用这个名为 Oldtable.xml 的 XML 来更新名为 tblemp 的 SQL 数据库表。我正在使用 WPF 应用程序,我希望它使用 C# 来完成。该数据库具有完全相同的列,例如<EMPID> 和<EMPName>。我希望它获取 XML 数据并相应地更新现有条目(如果有新条目,它必须添加它)。或者,如果将tblemp 转换为 XML 文件并更新新的 XML 文件并让应用程序读取新的 XML 更简单,我愿意这样做。提前致谢。
这是我迄今为止尝试过的
void main()
{
string FILENAME = Path.Combine(System.AppDomain.CurrentDomain.BaseDirectory, "Connection.xml");
XDocument xdoc = XDocument.Load(FILENAME);
string conn = xdoc.Descendants("connectionStrings").FirstOrDefault().Value;
using (SqlConnection con = new SqlConnection(conn))
using (SqlCommand cmd = new SqlCommand())
{
cmd.Connection = con;
cmd.CommandType = CommandType.Text;
cmd.CommandText = " INSERT INTO [dbo].[tblEMP] SELECT * FROM [dbo].[tblEMP1] WHERE [EMPID]=[EMPID] ";
XmlDocument xmldoc = new XmlDocument();
xmldoc.Load(@"C:\Users\user1\Desktop\Oldtable.xml");
var attributeName = "EMPID";
var element = xdoc.Descendants("ry").FirstOrDefault(el => el.Attribute(attributeName) != null);
}
}
这就是我目前的方式,但我不确定如何构造 SQL 语句,因为我是新手。
请帮助我更好地构建 C# 代码。
为了进一步解释,Oldtable.xml 是上面数据的 xml,Connection.xml 是我用来连接 SQL Server 2014 Management Studio 中的 SQL Server 数据库的 xml
【问题讨论】:
-
您的问题是如何提取数据或如何更新数据库?大不同。
-
最好将整个 XML 作为参数传递给存储过程 (SP)。该 SP 将粉碎 XML 并使用 MERGE 插入/更新现有的数据库表。
-
@mm8 是如何更新数据库的。
标签: c# sql-server xml