【发布时间】:2014-07-14 04:47:44
【问题描述】:
当我试图从 wcf 查看数据库中的多行时,我只得到了最后一行
我创建了这个服务
public dcTransaction SelectMasterTransaction(DateTime date1, DateTime date2)
{
dcTransaction dcTrans = new dcTransaction();
string conString = ConfigurationManager.ConnectionStrings["DBCS"].ConnectionString;
using (con = new SqlConnection(conString))
{
SqlCommand cmd = new SqlCommand("spViewMasterTransaction", con);
cmd.CommandType = CommandType.StoredProcedure;
SqlParameter parameterDate1 = new SqlParameter();
parameterDate1.ParameterName = "@date1";
parameterDate1.Value = date1;
cmd.Parameters.Add(parameterDate1);
SqlParameter parameterDate2 = new SqlParameter();
parameterDate2.ParameterName = "@date2";
parameterDate2.Value = date2;
cmd.Parameters.Add(parameterDate2);
con.Open();
SqlDataReader dtReader = cmd.ExecuteReader();
while (dtReader.Read())
{
dcTrans.no_trans = int.Parse(dtReader["no_trans"].ToString());
dcTrans.name = dtReader["name"].ToString();
dcTrans.sum = int.Parse(dtReader["sum"].ToString());
dcTrans.dates = DateTime.Parse(dtReader["dates"].ToString());
}
}
return dcTrans;
}
我在这里得到的是,wcftestclient 也只显示我请求的最后一条记录.. 例如:从日期 2010 年 1 月 1 日到 2014 年 1 月 1 日(sql 查询是在我的 sql 服务器中的存储过程中编写的)
然后当我给 wcftestclient 一个值 1/1/2010 到 1/1/2014 时,wcftestclient 只返回最后一个日期记录,我认为它不会打印循环,我在这里缺少什么?我认为 WHILE(dataReader.read()) 已经循环了?
这是我在我的 sql server 中的存储过程
CREATE PROCEDURE spViewMasterTransaksi
@date1 datetime,
@date2 datetime
AS
BEGIN
select * from MasterTransaction WHERE date >= @date1 AND date <= @date2
END
当我通过 sql server 执行我的存储过程时,它似乎很好,它显示了我输入的值之间的日期..
【问题讨论】:
-
顺便说一句,SQL 已经将这些字段返回为
ints。您不需要解析字符串表示。这不是导致您的问题的原因,但这是一种非常低效的方法。您还应该添加一些using语句。我将在我的代码中进行这两项更改以显示一个示例。
标签: c# sql wcf loops datareader