2011-07-21 15 views
2

C#のSQL Serverデータベースからデータ型Varchar(MAX)の列を取得するにはどうすればよいですか?VARCHAR(MAX)を取得する

私はSqlDataReaderがそれを検索するのに役立つとは思いません。

ヒント?

おかげ

+1

あなたが何をしようとしたのですか? – VMAtm

+0

SqlDataReader reader = command.ExecuteReader()を使用して取得しようとしました。しかし、Streams/Pointers/Somethingを使用して取得する必要があることを読んで、従来の方法は機能しません。 – Jayesh

+0

クエリは何ですか? –

答えて

3

それは単なる文字列フィールドです....ちょうどVARCHAR(MAX)タイプについて何も特別なものは本当にありません

// define your query 
string query = "SELECT YourField FROM dbo.YourTable WHERE ID = 1"; 

using(SqlConnection conn = new SqlConnection("......")) 
using(SqlCommand cmd = new SqlCommand(query, conn)) 
{ 
    conn.Open(); 

    using(SqlDataReader rdr = cmd.ExecuteReader()) 
    { 
     if(rdr.Read()) 
     { 
      string fieldValue = rdr.GetString(0); 
     } 
    } 

    conn.Close(); 
} 

.....他の文字列のようにそれをつかむ - それは単なるテキストですこれは、.NETのstringのように、最大​​2 GBのテキストを保持できます。ストリーミングなどの特別な操作は必要ありません。列を文字列に読み込むだけです。

+0

もし500MBと判明すれば、ストリーミングAPI –

+0

で読み取ることを*選択するかもしれません@Marc Gravell:はい、もちろんですが、VARCHAR(MAX)の列には実際に500MBのデータを保持していますか? –

+1

.NETの文字列の大きさには実際の制限があると思います。これは[2 GB]よりも低くなります(http://stackoverflow.com/questions/140468/what-is-the-maximum-possible-length-of -a-net-string)を指定します。 –

0

Working with Large-Value Types in ADO.NET

reader = cmd.ExecuteReader(CommandBehavior.CloseConnection); 
while (reader.Read()) 
{ 
    SqlChars buffer = reader.GetSqlChars(0); 
} 

それとも、CLR型に変換します

while (reader.Read()) 
{ 
    string str = reader[0].ToString(); 
    Console.WriteLine(str); 
} 
関連する問題