我正在创建一个应用程序,每天从SQL数据库加载一次数据并将其保存到文本文件中。 主表是一个“事务”表,其中包含有关当天所有事务的数据。其中一列代表一个中间呼号。 我的程序首先将数据保存在DataTable中,然后使用StringBuilder我给它提供正确的表单,最后将其保存到StreamWriter的文本文件中。
我的问题是,我可以将进程的哪个阶段或哪个阶段与一个表项区分开来。我想创建两个文件:一个是由中间人A和B进行的交易。 到目前为止,这是我的代码:
// Query for Data
row = new SqlDataAdapter("SELECT [MSISDN], [Amount], [Transaction_ID], POS.[Name], MNO.[Call Sign] FROM"
+ "[Transactions] join [POS] "
+ "on Transactions.POS_ID = POS.idPOS "
+ "join [MNO] on Transactions.MNO_ID = MNO.idMNO "
+ "where [Status] = '1'", con);
row.Fill(Row);
// Save Data in StringBuilder
for (int i = 0; i < Row.Rows.Count; i++)
{
sb.Append(Row.Rows[i].ItemArray[0].ToString()).Append(",");
double amount = Convert.ToDouble(Row.Rows[i].ItemArray[1].ToString());
sb.Append(Math.Round(amount, 2).ToString().Replace(",", ".")).Append(",");
sb.Append(Row.Rows[i].ItemArray[2].ToString()).Append(",");
sb.Append(Row.Rows[i].ItemArray[3].ToString()).Append(",");
sb.Append(Row.Rows[i].ItemArray[4].ToString()).Append(",").Append(Environment.NewLine);
}
// Create a file from StringBuilder
mydocpath = @"C:\Transactions\" + fileDate.ToString(format) + ".txt";
FileStream fsOverwrite = new FileStream(mydocpath, FileMode.Create);
using (StreamWriter outfile = new StreamWriter(fsOverwrite))
{
outfile.WriteAsync(sb.ToString());
}
希望我足够清楚。英语不是我强硬的一面。以及编码似乎......
答案 0 :(得分:0)
一种选择。
将所有数据放入DataSet中。然后针对ds.GetXml()进行Xsl转换。 这是一个例子:
http://granadacoder.wordpress.com/2007/05/15/xml-to-xml-conversion/
但我要做的就是彻底消除DataTable。使用IDataReader。 循环数据。也许将原始查询作为&#34;按中间人识别&#34;,然后当midManIdentifer&#34;跳过&#34;时,关闭前一个文件并写一个新文件。 这样的事情。
您可以从此演示中学到一些东西:
以下是一些IDataReader助手:
http://kalit-codesnippetsofnettechnology.blogspot.com/2009/05/write-textfile-from-sqldatareader.html
和