gpt4 book ai didi

sql - 在 SQL Server 2000 中存储 XML 数据集

转载 作者:行者123 更新时间:2023-12-04 06:57:55 25 4
gpt4 key购买 nike

我需要将数据集(报告应用程序的结果)保存到 SQL Server 2000 中的表中。我是否像通过 Byte Array() 在数据库中存储文件一样保存数据集?

最佳答案

SQL Server 2000 确实不能很好地处理 XML blob。它既没有专用的 XML 类型,也不容易支持 VARCHAR(MAX) 数据类型形式的大文本。两者都在 SQL Server 2005 及更高版本中可用。

如果您绝对并且肯定坚持使用 2000,那么最好的选择是将您的 XML 存储到 TEXT 中。列(或 NTEXT - 每个字符 2 个字节 - 如果您需要支持非 ASCII 类型的字符集,如亚洲语言、希伯来语、阿拉伯语等)。

不过请注意:TEXT 列数据类型并不是很有用,因为您实际上无法在没有很多麻烦的情况下对其进行太多操作 - 您甚至无法真正搜索或替换其上的某些内容。一团糟。没有一个通常的字符串方法适用于它——它真的是一种“存储和忘记”的 blob ......

更新:如果你愿意 从不 需要在文件存储在数据库中时检查文件的内容(真的吗?),您也可以使用 IMAGE数据类型。

要将文件存储在 SQL Server 中,请执行以下操作:

private void AddFileToDatabase(string filename)
{
using(SqlConnection con = new SqlConnection("server=***;database=***;integrated security=SSPI;"))
{
string insertStmt = "INSERT INTO dbo.YourTableName(DocFilename, DocContent) VALUES(@FileName, @Content)";

using(SqlCommand cmd = new SqlCommand(insertStmt, con))
{
cmd.Parameters.AddWithValue("@FileName", filename);
cmd.Parameters.Add("@Content", SqlDbType.Image);

cmd.Parameters["@Content"].Value = File.ReadAllBytes(filename);

con.Open();
int result = cmd.ExecuteNonQuery();
con.Close();
}
}
}

从数据库中读取字节块基本上是一样的。或者您可以将其打包在一个很好的存储过程中 - 完全由您决定。

如果您使用 TEXT/NTEXT ,你需要存储一个实际的字符串,例如你不能真正使用二进制文件(比如 Word)——但是如果你从报告中输出 XML 或 HTML 或其他东西,那么 TEXT/NTEXT 也可以工作(在这种情况下只需使用 cmd.Parameters.Add("@Content", SqlDbType.Text);)。

关于sql - 在 SQL Server 2000 中存储 XML 数据集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2320041/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com