2009-01-14 8 views
0

Comment est-ce que je refactoriser ceci pour l'obtenir pour renvoyer une chaîne pas un ensemble de données?Renvoie une chaîne à partir d'une méthode Web au lieu d'un ensemble de données.

[WebMethod] 
public DataSet GetPONumber(string Database) 
{ 
    SqlConnection sqlConn = new SqlConnection(); 

    sqlConn.ConnectionString = GetConnString(Database); 

    // build query 
    string strSQL = @" A SELECT QUERY!!!!! "; 

    SqlDataAdapter da = new SqlDataAdapter(strSQL, sqlConn); 
    DataSet ds = new DataSet(); 
    da.Fill(ds, "NEWPO"); 

    return (ds); 
} 

Répondre

0

C'est ce que je finnished avec et travaille, je vous remercie de votre contribution:

[WebMethod] 
    public String GetPONumber(string Database) 
    { 
     //Create Object ready for Value 
     object po = ""; 

     //Set Connection 
     SqlConnection Connection = new SqlConnection(GetConnString(Database)); 

     //Open Connection 
     Connection.Open(); 

     //Set Query to string 
     string Query = @" SQL QUERY GOES HERE!!!! "; 

     //Run Query 
     SqlCommand Command = new SqlCommand(Query, Connection); 

     //Set Value from Query 
     try 
     { 
      po = Command.ExecuteScalar(); 
     } 
     catch 
     { 
      //Error 
     } 

     //Clean up sql 
     Command.Dispose(); 
     Command = null; 


     //Clean up connection 
     Connection.Close(); 
     Connection.Dispose(); 
     Connection = null; 

     //Return Value 
     return po.ToString(); 
    } 
1

Vous pouvez transformer l'ensemble de données en sa représentation de chaîne JSON. De cette façon, il peut être facilement consommé par n'importe quel client.

1

Vous pouvez renvoyer ds.GetXml() et modifier le type de retour.

Cela retournerait les données au format XML.

Si vos résultats étaient assez simples (Dites une seule valeur), vous pourriez vouloir les renvoyer directement.

+0

La valeur dans ce cas est une seule valeur renvoyée, Pourriez-vous afficher un exemple complet? – MartGriff

+0

Cela devrait fonctionner: ds.Tables [0] .Rows [0] [0] .ToString(); Bien que je vous suggère d'utiliser une procédure stockée et d'utiliser un paramètre de sortie, retourner le résultat. – Bravax

1
//Use an SqlCommand and the ExecuteScalar method. 
//Cast returnValue to known object. 
SqlCommand command = sqlConn.CreateCommand(); 
command.CommandType = CommandType.Text; 
command.CommandText = @" A SELECT QUERY!!!!! "; 
sqlConn.Open(); 
object returnValue = command.ExecuteScalar(); 
command.Dispose(); 
return returnValue.ToString(); 
0

@MartGrif

J'ai modifié votre code pour inclure l'instruction à l'aide, ce qui est commun usage. Cela rend également le code plus concis et je crois, plus lisible. L'instruction using dispose automatiquement de l'objet à la fin du bloc de code. Voir la documentation sur MSDN here

[WebMethod] 
public String GetPONumber(string Database) 
{ 
    //Create Object ready for Value 
    object po = ""; 

    //Set Connection 
    using(SqlConnection connection = new SqlConnection(GetConnString(Database))) 
    { 
     string Query = @" SQL QUERY GOES HERE!!!! "; 
     using(SqlCommand command = new SqlCommand(Query, connection)) 
     { 
      try 
      { 
       connection.Open(); 
       po = Command.ExecuteScalar(); 
      } 
      catch 
      { 
       //Error 
      } 
     } 
    } 
    return po.ToString(); 
} 
Questions connexes