2012-02-28 6 views
0

Comment utiliser la procédure stockée au lieu de la requête dans la chaîne de connexion. Peux-tu me suggérer de coder ???Utilisation de la procédure stockée avec l'exemple

+4

* au lieu de requête dans la chaîne de connexion * J'espère que vous connaissez la chaîne de connexion est un autre but plutôt que d'interroger. S'il vous plaît prenez le temps de formuler une question réelle. – V4Vendetta

Répondre

0

Vous devez définir vos commandes sql - dans ce cas, un appel de la procédure stockée -, puis vous connecter à la base de données, envoyer votre requête et recevoir le résultat.

N'oubliez pas de fermer la connexion par la suite!

Un bon tutoriel est en ligne sur csharp-station.

Je ne peux pas décrire toute la procédure ici, si vous avez des questions plus détaillées viennent tout juste et demander - c'est ce que Stackoverflow est pour :)

2

Ici, vous allez

string spName = "stored_proc_name"; 
string idParameterValue = "someId"; 

using (SqlConnection connection = new SqlConnection(ConnectionString)) 
{ 
    using (SqlCommand command = new SqlCommand(spName, connection)) 
    { 
     command.CommandType = CommandType.StoredProcedure; 
     command.Parameters.Add(new SqlParameter("@Id", idParameterValue)); 
     connection.Open(); 

     IDbDataAdapter da = new SqlDataAdapter(); 
     da.SelectCommand = command; 

     // (*) Put here a code block of the actual SP execution logic 
     // There are different ways of SP execution and it depends on 
     // return result set type, see below 
    } 
} 

(*) Choisissez une approche appropriée:

  1. Enregistrer résultat de sortie situé dans un DataSet

    // Store output result set in the DataSet 
    DataSet ds = ExecuteQuery(da); 
    
  2. OU lecture entier unique en tant que valeur de retour de procédure stockée (pas param!)

    IDataReader reader = command.ExecuteReader(); 
    if (reader != null && reader.Read()) 
    { 
        retValue = (reader.GetInt32(returnParamName)); 
    } 
    
  3. Dans le cas où la procédure stockée ne retourne rien

    bool successfull = cmd.ExecuteNonQuery() == 1; 
    

Méthodes auxiliaires

private static DataSet ExecuteQuery(IDataAdapter da) 
{ 
    DataSet ds = new DataSet("rawData"); 
    da.Fill(ds); 

    ds.Tables[0].TableName = "row"; 
    foreach (DataColumn c in ds.Tables[0].Columns) 
    { 
     c.ColumnMapping = MappingType.Attribute; 
    } 

    return ds; 
} 

public static class DataReaderExtensions 
{ 
    public static Int32 GetInt32(this IDataReader rdr, string fieldName) 
    { 
     int ordinal = rdr.GetOrdinal(fieldName); 
     return !rdr.IsDBNull(ordinal) ? rdr.GetInt32(ordinal) : Int32.MinValue; 
    } 
} 

Liens utiles:

+0

pas besoin de fermer la connexion quand il est enveloppé dans un 'using' –

+0

Droit, retiré. – sll

Questions connexes