C#のSQL Serverデータベースからデータ型Varchar(MAX)
の列を取得するにはどうすればよいですか?VARCHAR(MAX)を取得する
私はSqlDataReader
がそれを検索するのに役立つとは思いません。
ヒント?
おかげ
C#のSQL Serverデータベースからデータ型Varchar(MAX)
の列を取得するにはどうすればよいですか?VARCHAR(MAX)を取得する
私はSqlDataReader
がそれを検索するのに役立つとは思いません。
ヒント?
おかげ
それは単なる文字列フィールドです....ちょうど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のテキストを保持できます。ストリーミングなどの特別な操作は必要ありません。列を文字列に読み込むだけです。
もし500MBと判明すれば、ストリーミングAPI –
で読み取ることを*選択するかもしれません@Marc Gravell:はい、もちろんですが、VARCHAR(MAX)の列には実際に500MBのデータを保持していますか? –
.NETの文字列の大きさには実際の制限があると思います。これは[2 GB]よりも低くなります(http://stackoverflow.com/questions/140468/what-is-the-maximum-possible-length-of -a-net-string)を指定します。 –
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);
}
あなたが何をしようとしたのですか? – VMAtm
SqlDataReader reader = command.ExecuteReader()を使用して取得しようとしました。しかし、Streams/Pointers/Somethingを使用して取得する必要があることを読んで、従来の方法は機能しません。 – Jayesh
クエリは何ですか? –