Comment puis-je récupérer une colonne de type de données Varchar(MAX)
à partir d'une base de données SQL Server en C#? Je ne pense pas SqlDataReader
aide à le récupérer.Récupération de VARCHAR (MAX)
Une idée?
Merci
Comment puis-je récupérer une colonne de type de données Varchar(MAX)
à partir d'une base de données SQL Server en C#? Je ne pense pas SqlDataReader
aide à le récupérer.Récupération de VARCHAR (MAX)
Une idée?
Merci
Il est juste un champ de chaîne .... saisir tout comme toute autre chaîne .....
// 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();
}
sur le type VARCHAR(MAX)
Il n'y a vraiment rien de spécial - il est juste un texte champ, et il peut contenir jusqu'à 2 Go de texte - tout comme un .NET string
. Vous n'avez pas besoin de faire quelque chose de spécial, comme le streaming ou quoi que ce soit - il suffit de lire la colonne dans une chaîne!
Bien que, s'il s'avère être 500 Mo, vous pouvez * choisir * de le lire via l'API de streaming –
@Marc Gravell: oui, bien sûr - mais combien de colonnes VARCHAR (MAX) avez-vous réellement qui contiennent 500 Mo de données? –
Je pense qu'il existe une limite pratique sur la taille d'une chaîne .NET inférieure à [2 Go] (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);
}
Ou tout simplement le convertir en type CLR:
while (reader.Read())
{
string str = reader[0].ToString();
Console.WriteLine(str);
}
Qu'avez-vous essayé? – VMAtm
J'ai essayé de le récupérer en utilisant SqlDataReader reader = command.ExecuteReader(); Mais je l'ai lu qu'il doit être récupéré en utilisant Streams/Pointers/Something et l'approche traditionnelle ne fonctionne pas – Jayesh
Quelle est votre requête? –