2015-11-19 65 views
1

我已经编写了一个非常简单的Web服务,它可以从我的SQL DB中的表中选择最上面的一个结果。我在我的Web服务中调用该类时出现问题。我的Web服务中有3个变量在我的类中。我只想将变量分配给我使用Web服务的项目中的一组变量。从Web服务中的select语句获取结果

我在我的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(); 
} 

谁能帮我抢3个变量我正在填写Web服务并将它们带到上面的类中进行显示唉在我的屏幕上?

的什么,我试图完成

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

您的Web服务实例实际上不是返回什么。它抓取数据,将数据存储在三个局部变量中,然后结束。永远不要使用ViewDetails类或向调用者提供这些值。

更改Web服务方法返回一个ViewDetails

public ViewDetails ViewDetails() 
{ 
    // your code 
} 

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

public ViewDetails ViewDetails() 
{ 
    // your code 

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

然后任何时间的东西调用Web服务方法,将接收该方法获取的值。

+0

我已经更新了我的答案和你一起编辑。它给我错误“使用未分配的变量titleView”。我知道这意味着什么,但我将这个变量赋值为一个值....它正在为所有3变量做回报 – Code

+0

@Code:良好的捕获。该代码仅分配给“if”块中的那些变量。如果没有满足这个条件,它们就没有分配。只需用默认值初始化它们即可。例如:'string titleView = string.Empty;'等等。 – David

+0

完美,现在让我试试看看我现在是否可以在我的其他项目中调用它..现在真正的乐趣开始了!支持 – Code