2013-04-16 111 views
0

我正在創建一個應用程序,每天從SQL數據庫加載一次數據並將其保存到文本文件中。 主表是一個「交易」表,其中包含有關當天所有交易的數據。其中一列代表中間人呼號。 我的程序首先將數據保存在一個DataTable中,然後用一個StringBuilder保存,然後將它賦給適當的表單,最後用StreamWriter將它保存到一個文本文件中。如何用一個sql查詢創建多個DataTable?

我的問題是,我可以如何或在哪個階段的過程中區分一個表項和另一個表項。我要創建兩個文件:一個由中間人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

您需要一些示例數據。 MSISDN是「中間人」唯一標識符嗎? – granadaCoder

回答

0

一個選項。

將所有數據放入DataSet中。然後對ds.GetXml()進行Xsl轉換。 下面是類的一個實例:

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

但我會做的是完全消除數據表。使用IDataReader。 循環播放數據。也許將原始查詢作爲「Order By Middle-Man-Identifer」,然後當middleManIdentifer「跳轉」時,關閉前一個文件並寫入一個新文件。 就是這樣的。

您可能能夠汲取這次演示的東西:

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#?