gpt4 book ai didi

c# - 如何有效地从 C# 中的 SQL datareader 写入文件?

转载 作者:太空狗 更新时间:2023-10-29 18:02:46 25 4
gpt4 key购买 nike

我在 C# 中有一个远程 sql 连接,需要执行查询并将其结果保存到用户的本地硬盘。这个东西可以返回相当大量的数据,所以需要考虑一种有效的存储方式。我之前读过,首先将整个结果放入内存然后写入它不是一个好主意,所以如果有人能提供帮助,那就太好了!

我目前正在将 sql 结果数据存储到 DataTable 中,尽管我认为在 while(myReader.Read(){...} 中做一些事情可能会更好下面是获取结果的代码:

          DataTable t = new DataTable();
string myQuery = QueryLoader.ReadQueryFromFileWithBdateEdate(@"Resources\qrs\qryssysblo.q", newdate, newdate);
using (SqlDataAdapter a = new SqlDataAdapter(myQuery, sqlconn.myConnection))
{
a.Fill(t);
}

var result = string.Empty;
for(int i = 0; i < t.Rows.Count; i++)
{
for (int j = 0; j < t.Columns.Count; j++)
{
result += t.Rows[i][j] + ",";
}


result += "\r\n";
}

所以现在我有了这个巨大的结果字符串。我有数据表。一定有更好的方法吗?

谢谢。

最佳答案

您自己走在正确的轨道上。使用带有 while(myReader.Read(){...} 的循环并将每条记录写入循环内的文本文件。.NET 框架和操作系统将负责将缓冲区刷新到以高效的方式磁盘。

using(SqlConnection conn = new SqlConnection(connectionString))
using(SqlCommand cmd = conn.CreateCommand())
{
conn.Open();
cmd.CommandText = QueryLoader.ReadQueryFromFileWithBdateEdate(
@"Resources\qrs\qryssysblo.q", newdate, newdate);

using(SqlDataReader reader = cmd.ExecuteReader())
using(StreamWriter writer = new StreamWriter("c:\temp\file.txt"))
{
while(reader.Read())
{
// Using Name and Phone as example columns.
writer.WriteLine("Name: {0}, Phone : {1}",
reader["Name"], reader["Phone"]);
}
}
}

关于c# - 如何有效地从 C# 中的 SQL datareader 写入文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9055521/

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