首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

用数据库的储存数据做查询,在SQL中的执行结果和C#中不同?

2013-10-05 
用数据库的存储数据做查询,在SQL中的执行结果和C#中不同?!本帖最后由 treeglow 于 2013-10-04 17:25:36 编

用数据库的存储数据做查询,在SQL中的执行结果和C#中不同?!
本帖最后由 treeglow 于 2013-10-04 17:25:36 编辑 时间段查询,SQL中执行存储数据和在C#中执行储存数据结果不一样。
完全一样的输入参数:
FromDT"2013-09-12 11:50:20"string
ToDT"2013-09-12 12:10:20"string
sql中返回2条结果,11:53的和12:08的数据。
C#中只返回1条结果,12:08的。
为什么?为什么?为什么?


                conn.Open();
                SqlCommand cmd = conn.CreateCommand();
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.CommandText = "sp_select_onlytime";
                SqlParameter inparm1 = cmd.Parameters.Add("@start", SqlDbType.DateTime );
                SqlParameter inparm2 = cmd.Parameters.Add("@end", SqlDbType.DateTime);
                inparm1.Direction = ParameterDirection.Input;
                inparm2.Direction = ParameterDirection.Input;
                String FromDT = dtpfrdat.Value.ToString("yyyy-MM-dd")+" "+dtpfrtim.Value.ToString("HH:mm:ss");
                DateTime temp1=Convert.ToDateTime(FromDT);
                inparm1.Value = temp1;
                String ToDT = dtptodat.Value.ToString("yyyy-MM-dd") + " "+dtptotim.Value.ToString("HH:mm:ss");
                DateTime temp2=Convert.ToDateTime(ToDT);
                inparm2.Value = temp2;
                SqlDataReader rdr = cmd.ExecuteReader();

[解决办法]
试试:
ALTER procedure [dbo].[sp_select_onlytime]
(@start datetime, @end datetime)
as
select
*
from
TestRecord 
where
(TestTime >= CONVERT(VARCHAR(30),@start,121) and (TestTime <= CONVERT(VARCHAR(30),@end,121));

[解决办法]
楼主,你在 SqlDataReader rdr = cmd.ExecuteReader();这个命令之后,有没有调用
while(rdr.Read())
{
  ...
}
这个格式?
如果只调用rdr.Read(),你就只读取了第一行数据。

热点排行