【发布时间】:2017-07-30 01:16:41
【问题描述】:
我是这个网站的新手。我目前正在研究 wcf 。我正试图从这项艰苦的工作中取得一些成就,但我遇到了一些问题。我在我的 MS Visual Stuido 2015 中运行了 WCF 服务,该服务具有名为 AccountBalance 的本地类,并且该类有几个字符串属性,如 account_number、account_balace 等。我创建了数据库在 MS Sql 服务器中。目前我正在控制台应用程序中使用 wcf 服务。我正在尝试使用帐号作为密钥从控制台窗口中的数据库中检索记录。当我输入帐号时,它应该在控制台应用程序中显示数据库中的其余记录,但我收到错误消息,我无法运行它。 无法从“字符串”转换为 MyService.AccountBalanceRequest' 这是从另一个基类继承的类代码..
[DataContract]
public class AccountBalanceRequest : Current_Account_Details
{
string account_number;
[DataMember]
public string Account_Number
{
get { return account_number; }
set { account_number = value; }
}
}
}
这是 ADO.NET 代码..
public bool AccountBalanceCheek(AccountBalanceRequest accountNumber)
{
using (SqlConnection conn = new SqlConnection(ConnectionString))
{
conn.Open();
using (SqlCommand cmd = new SqlCommand("SELECT * FROM
Current_Account_Details WHERE Account_Number ='" +
accountNumber.Account_Number + "'", conn))
{
cmd.Parameters.AddWithValue("@Account_Number",
accountNumber.Account_Number);
cmd.CommandType = CommandType.Text;
cmd.ExecuteNonQuery();
return true;
}
}
}
这是控制台应用程序代码..
public static void Balance()
{
MyService.HalifaxCurrentAccountServiceClient currentAccount = new MyService.HalifaxCurrentAccountServiceClient("NetTcpBinding_IHalifaxCurrentAccou
ntService");
MyService.AccountBalanceRequest cs = new MyService.AccountBalanceRequest();
string AccountNumber;
Console.WriteLine("\nEnter your Account Number--------:");
AccountNumber = Console.ReadLine();
cs.Account_Number = AccountNumber;
MyService.AccountBalanceRequest cs1 =
currentAccount.AccountBalanceCheek(AccountNumber);//Error on this line.
Console.WriteLine("Your Account Number is :" + cs.Account_Number);
Console.WriteLine("Your Account Type :" + cs.Account_Balance);
Console.WriteLine("Your Account Account Fee :" + cs.Account_Fee);
Console.WriteLine("Your Account Balance:" + cs.Account_Balance);
Console.WriteLine("Your Account Over Draft Limit :" + cs.Over_Draft_Limit);
Console.Write("--------------------------");
Console.ReadLine();
}
我也尝试过这种方式。代码确实出现了任何错误,但没有给出预期的结果。这是代码。
public static void Balance()
{
MyService.HalifaxCurrentAccountServiceClient currentAccount = new MyService.HalifaxCurrentAccountServiceClient("NetTcpBinding_IHalifaxCurrentAccountService");
MyService.AccountBalanceRequest cs = new MyService.AccountBalanceRequest();
string AccountNumber;
Console.WriteLine("\nEnter your Account Number--------:");
AccountNumber = Console.ReadLine();
cs.Account_Number = AccountNumber;
// MyService.AccountBalanceRequest cs1 = currentAccount.AccountBalanceCheek(AccountNumber);
if (currentAccount.AccountBalanceCheek(cs))
{
Console.WriteLine("Your Account Number is :" + cs.Account_Number);
Console.WriteLine("Your Account Type :" + cs.Account_Balance);
Console.WriteLine("Your Account Account Fee :" + cs.Account_Fee);
Console.WriteLine("Your Account Balance:" + cs.Account_Balance);
Console.WriteLine("Your Account Over Draft Limit :" + cs.Over_Draft_Limit);
Console.Write("--------------------------");
Console.ReadLine();
//Console.Clear();
}
}
这是输出的图像。This is image of the out put
【问题讨论】:
-
有什么建议或解决方案吗??
-
提示:您将从数据库读取的值填充到对象的何处?您正在使用
@Account_Number,但您的 SQL 语句没有使用它。 -
好的。在 ado.net 和控制台应用程序中
-
您需要使用数据库中的值填充您的对象并返回它。看看这里的第一个例子 - docs.microsoft.com/en-us/dotnet/framework/data/adonet/… 你也可以改变你的方法签名如下:
public AccountBalanceRequest AccountBalanceCheek(string accountNumber)- 即,输入参数是字符串,返回值是你的对象。您必须从数据库中读取(通过 DatabaseReader)并填充您的对象 -
您提供的链接实际上并未与 WCF 服务交互。谢谢@Subbu
标签: c# wcf ado.net console-application