从Web服务中的select语句获取结果

时间:2015-11-19 15:53:57

标签: c# web-services wcf

我编写了一个非常简单的Web服务,它从SQL DB中的表中选择最重要的一个结果。我在Web服务中调用该类时遇到问题。我的Web服务中的类中有3个变量。我只是希望能够将变量分配给我正在使用Web服务的项目中的一组变量。

我的Web服务中有另一个类,我插入到我的数据库中,它工作正常,所以我知道Web服务正在运行。

这就是我所拥有的:

网络服务

[OperationContract]
void ViewDetails();

[DataContract]
public class ViewDetails
{
    string titleView = string.Empty;
    string descriptionView = string.Empty;
    string authorView = string.Empty;

    [DataMember]
    public string TitleView
    {
        get { return titleView ; }
        set { titleView = value; }
    }

    [DataMember]
    public string DescriptionView
    {
        get { return descriptionView ; }
        set { descriptionView = value; }
    }

    [DataMember]
    public string AuthorView
    {
        get { return authorView ; }
        set { authorView = value; }
    }
}

public ViewDetails ViewDetails()
    {
        string titleView;
        string descriptionView;
        string authorView;
        SqlConnection conn = new SqlConnection(strConnString);
        conn.Open();
        SqlCommand cmd = new SqlCommand("SELECT TOP 1 [My_Title] AS 'Title', [My_Description] AS 'Description', [My_Author] AS 'Author' FROM [TBL_My_Table]", conn);

        SqlDataReader rdrDetails = cmd.ExecuteReader();

        if (rdrDetails.HasRows)
        {
            titleView = rdrDetails.GetSqlString(rdrDetails.GetOrdinal("Title")).ToString();
            sescriptionView = rdrDetails.GetSqlString(rdrDetails.GetOrdinal("Description")).ToString();
            authorView = rdrDetails.GetSqlString(rdrDetails.GetOrdinal("Author")).ToString();
        }           
        conn.Close();

        return new ViewDetails
        {
            TitleView = titleView,
            DescriptionView = descriptionView,
            AuthorView = authorView
        };
    }

我想用查询结果填充变量

 public Page1()
 {
     this.InitializeComponent();
 }

任何人都可以帮我抓取我填写的Web服务中的3个变量并将它们带到上面的类中以显示在我的屏幕上吗?

我想要完成的示例

    private void btnView_Click(object sender, RoutedEventArgs e)
    {
        ServiceReference1.Service1Client client = new ServiceReference1.Service1Client();
        string author = string.Empty;

        //this is what I think I should be able to do
        author = client.ViewDetailsAsync.TitleView;

    }

1 个答案:

答案 0 :(得分:1)

您的网络服务实际上并未返回任何内容。它抓取数据,将数据存储在三个局部变量中,然后结束。从不实际使用ViewDetails类或为调用者提供这些值。

更改您的网络服务方式以返回ViewDetails

public ViewDetails ViewDetails()
{
    // your code
}

然后从方法返回该对象的实例:

public ViewDetails ViewDetails()
{
    // your code

    return new ViewDetails
    {
        TitleView = titleView,
        DescriptionView = descriptionView,
        AuthorView = authorView
    };
}

然后,只要有人调用您的Web服务方法,它就会收到该方法提取的值。