如何使用一个SQL查询创建多个DataTable?

时间:2013-04-16 10:15:53

标签: c# sql-server

我正在创建一个应用程序,每天从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());
}

希望我足够清楚。英语不是我强硬的一面。以及编码似乎......

1 个答案:

答案 0 :(得分:0)

一种选择。

将所有数据放入DataSet中。然后针对ds.GetXml()进行Xsl转换。 这是一个例子:

http://granadacoder.wordpress.com/2007/05/15/xml-to-xml-conversion/

但我要做的就是彻底消除DataTable。使用IDataReader。 循环数据。也许将原始查询作为&#34;按中间人识别&#34;,然后当midManIdentifer&#34;跳过&#34;时,关闭前一个文件并写一个新文件。 这样的事情。

您可以从此演示中学到一些东西:

http://granadacoder.wordpress.com/2009/01/27/bulk-insert-example-using-an-idatareader-to-strong-dataset-to-sql-server-xml/

以下是一些IDataReader助手:

http://kalit-codesnippetsofnettechnology.blogspot.com/2009/05/write-textfile-from-sqldatareader.html

How to efficiently write to file from SQL datareader in c#?