Возвращает String из веб-метода вместо набора данных. - PullRequest
0 голосов
/ 14 января 2009

Как бы я реорганизовал этот код, чтобы он возвращал строку, а не набор данных?

[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);
}

Ответы [ 5 ]

1 голос
/ 14 января 2009

Вы можете вернуть ds.GetXml () и изменить тип возвращаемого значения.

Это вернет данные в виде XML.

Если ваши результаты были довольно просты (скажем одно значение), вы можете просто вернуть их напрямую.

1 голос
/ 14 января 2009
//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();
1 голос
/ 14 января 2009

Вы можете преобразовать набор данных в его строковое представление JSON. Таким образом, он может быть легко использован практически любым клиентом.

0 голосов
/ 28 июня 2009

@ MartGrif

Я изменил ваш код, включив в него оператор использования, это обычное использование. Это также делает код более лаконичным, и я считаю, более читабельным. Оператор using автоматически удаляет объект в конце блока кода. См. Документацию по MSDN здесь

[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();
}
0 голосов
/ 14 января 2009

Это то, чем я закончил, и работает, спасибо за ваш вклад:

[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();
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...