2017-02-20 6 views
-1

私はすべてのSQLカラム(名前)をTable1からtxtにエクスポートしようとしています。問題は、私のSQLから最初の名前だけをエクスポートすることです。私は、問題は私の読み取りのどこかにあると思い各SQLカラムをtxtにエクスポート

string name; 
SqlCommand command = new SqlCommand("select membername from table1 ", con); 
SqlDataReader read = command.ExecuteReader(); 

while (read.Read()) 
{ 
name = (read["membername"].ToString()); 
} 
read.Close(); 

using (StreamWriter sw = new StreamWriter(@"C:\fiscal.txt")) 
{ 
sw.WriteLine("{0,-0}", name.ToString()); 
sw.Close(); 

は、ここに私のコードです。

+1

すべてのデータをループしていますが、最後の値だけを保持しています。 *ループが終了したら、最後の値をファイルに保存します –

+0

あなたはギリシャ人だと思いますか?答えてくれてありがとう。すべての列をどのようにエクスポートしますか? – Dim

+0

適切なツール - SSISまたはエクスポートウィザードを使用してください。レポートを生成する場合、適切なツールはSSRSです。なぜこれにクライアントサイドのコードを使用していますか? –

答えて

0

名前の値は、whileループを通過するたびに上書きされます。各値を記述できるようにコードを変更します。

string name; 
SqlCommand command = new SqlCommand("select membername from table1 ", con); 
SqlDataReader read = command.ExecuteReader(); 

using (StreamWriter sw = new StreamWriter(@"C:\fiscal.txt")) 
{ 
while (read.Read()) 
{ 
name = (read["membername"].ToString()); 
sw.WriteLine("{0,-0}", name.ToString()); 
} 
read.Close(); 
sw.Close(); 
} 
1

すべてのデータをループしていますが、最後の値のみを保持しています。ループが終了したら、最後の値をファイルに格納します。これを修正するには、ループ内の値を記述する必要があります。

using(var con=new SqlConnection(connString)) 
{ 
    con.Open(); 
    var command = new SqlCommand("select membername from table1 ", con); 
    using(var read = command.ExecuteReader()) 
    using (StreamWriter sw = new StreamWriter(@"C:\fiscal.txt")) 
    { 
     while (read.Read()) 
     { 
      var name = read["membername"]); 
      sw.WriteLine("{0,-0}", name); 
     } 
    } 
} 

あなたが代わりに手動で接続、ファイルなどは、例外がスローされた場合でも、配置されていることを確認するためにClose()を呼び出すusingブロックを使用する必要があります。

はすべての場所で文字列に変換または変換する必要はありません。 WriteLineは、その値をストリングに変換します。

最後に、nameが宣言され、最も内側のブロックで使用されます。他の場所では必要ないので、はそのブロックの外側でと宣言してはいけません。

関連する問題