我遇到一个奇怪的问题!
当数据库 里面有1条数据的时候!SqlHelp 填充 DataTable , 返回的 DataTable 会是 NULL !
而且用 COUNT 方法,得到的记录行数也是 0 条!但是 我用 SQL2000的事件探查器 到的SQL在 查询分析器里面 可以查出一条数据!
而且 当有1条以上的时候 都能正常显示!这是为什么啊?下面是源代码:using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.SqlClient;namespace EnterpriseSms.DAL
{
public class TakeFunds
{
/// <summary>
/// 查询取款明细
/// </summary>
readonly public static string SQL_SEL_TAKEFUNDS = "SELECT SYS_user.UserID,UserName,CardNo, DeptName, KindName,Take_Funds,Balance,Take_Date, UseTimes,Sps_TakeFunds.OpeName FROM Sys_User INNER JOIN Sps_UserInfo ON Sys_User.UserID = Sps_UserInfo.UserID INNER JOIN Sps_CardKind ON Sps_UserInfo.KindID = Sps_CardKind.KindID INNER JOIN Sys_Depart ON Sys_User.DeptID = Sys_Depart.DeptID INNER JOIN Sps_TakeFunds ON Sys_User.UserID = Sps_TakeFunds.UserID WHERE Sys_User.UserID = @1 AND Sps_TakeFunds.Take_Date >= @1 AND Sps_TakeFunds.Take_Date <= @2 order by Take_Date DESC ";
/// <summary>
/// 查询取款明细总行数
/// </summary>
readonly public static string SQL_SEL_TAKEFUNDS_COUNT = "SELECT COUNT(*) FROM Sys_User INNER JOIN Sps_UserInfo ON Sys_User.UserID = Sps_UserInfo.UserID INNER JOIN Sps_CardKind ON Sps_UserInfo.KindID = Sps_CardKind.KindID INNER JOIN Sys_Depart ON Sys_User.DeptID = Sys_Depart.DeptID INNER JOIN Sps_TakeFunds ON Sys_User.UserID = Sps_TakeFunds.UserID WHERE Sys_User.UserID = @1 AND Sps_TakeFunds.Take_Date >= @1 AND Sps_TakeFunds.Take_Date <= @2 ";
DataTable dt;
/// <summary>
/// 取款明细查询
/// </summary>
/// <param name="userID">用户编号</param>
/// <param name="beginTime">开始时间</param>
/// <param name="endTime">结束时间</param>
/// <returns>取款明细</returns>
public DataTable GetTakeFundsALL(string userID, string beginTime, string endTime)
{
dt = new DataTable();
SqlHelper.FillDataTable(
SQL_SEL_TAKEFUNDS,
dt,
new SqlParameter("@0", userID),
new SqlParameter("@1", beginTime),
new SqlParameter("@2", endTime)
);
return dt;
} /// <summary>
/// 取款明细记录数查询
/// </summary>
/// <param name="userID">用户编号</param>
/// <param name="beginTime">开始时间</param>
/// <param name="endTime">结束时间</param>
/// <returns>总行数</returns>
public int GetTakeFundsConut(string userID, string beginTime, string endTime)
{
return (int) SqlHelper.ExecuteScalar(
SQL_SEL_TAKEFUNDS_COUNT,
new SqlParameter("@0", userID),
new SqlParameter("@1", beginTime),
new SqlParameter("@2", endTime)
);
}
}
}
当数据库 里面有1条数据的时候!SqlHelp 填充 DataTable , 返回的 DataTable 会是 NULL !
而且用 COUNT 方法,得到的记录行数也是 0 条!但是 我用 SQL2000的事件探查器 到的SQL在 查询分析器里面 可以查出一条数据!
而且 当有1条以上的时候 都能正常显示!这是为什么啊?下面是源代码:using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.SqlClient;namespace EnterpriseSms.DAL
{
public class TakeFunds
{
/// <summary>
/// 查询取款明细
/// </summary>
readonly public static string SQL_SEL_TAKEFUNDS = "SELECT SYS_user.UserID,UserName,CardNo, DeptName, KindName,Take_Funds,Balance,Take_Date, UseTimes,Sps_TakeFunds.OpeName FROM Sys_User INNER JOIN Sps_UserInfo ON Sys_User.UserID = Sps_UserInfo.UserID INNER JOIN Sps_CardKind ON Sps_UserInfo.KindID = Sps_CardKind.KindID INNER JOIN Sys_Depart ON Sys_User.DeptID = Sys_Depart.DeptID INNER JOIN Sps_TakeFunds ON Sys_User.UserID = Sps_TakeFunds.UserID WHERE Sys_User.UserID = @1 AND Sps_TakeFunds.Take_Date >= @1 AND Sps_TakeFunds.Take_Date <= @2 order by Take_Date DESC ";
/// <summary>
/// 查询取款明细总行数
/// </summary>
readonly public static string SQL_SEL_TAKEFUNDS_COUNT = "SELECT COUNT(*) FROM Sys_User INNER JOIN Sps_UserInfo ON Sys_User.UserID = Sps_UserInfo.UserID INNER JOIN Sps_CardKind ON Sps_UserInfo.KindID = Sps_CardKind.KindID INNER JOIN Sys_Depart ON Sys_User.DeptID = Sys_Depart.DeptID INNER JOIN Sps_TakeFunds ON Sys_User.UserID = Sps_TakeFunds.UserID WHERE Sys_User.UserID = @1 AND Sps_TakeFunds.Take_Date >= @1 AND Sps_TakeFunds.Take_Date <= @2 ";
DataTable dt;
/// <summary>
/// 取款明细查询
/// </summary>
/// <param name="userID">用户编号</param>
/// <param name="beginTime">开始时间</param>
/// <param name="endTime">结束时间</param>
/// <returns>取款明细</returns>
public DataTable GetTakeFundsALL(string userID, string beginTime, string endTime)
{
dt = new DataTable();
SqlHelper.FillDataTable(
SQL_SEL_TAKEFUNDS,
dt,
new SqlParameter("@0", userID),
new SqlParameter("@1", beginTime),
new SqlParameter("@2", endTime)
);
return dt;
} /// <summary>
/// 取款明细记录数查询
/// </summary>
/// <param name="userID">用户编号</param>
/// <param name="beginTime">开始时间</param>
/// <param name="endTime">结束时间</param>
/// <returns>总行数</returns>
public int GetTakeFundsConut(string userID, string beginTime, string endTime)
{
return (int) SqlHelper.ExecuteScalar(
SQL_SEL_TAKEFUNDS_COUNT,
new SqlParameter("@0", userID),
new SqlParameter("@1", beginTime),
new SqlParameter("@2", endTime)
);
}
}
}
解决方案 »
- C# 读取Excel文件问题
- 打印出了神马问题
- 问个比较菜的问题,新手请见谅。
- 怎么用c#开发IE插件?那位高手能给指点以下.谢谢...;
- 关于dllimport的问题
- 异步回调服务器端在一个时间内只能接受一个客户端连接??(请说下我这样想对不对?不对能给与指证,请把相关经验或例子告诉与我学习下好么?分
- .NET Framework Compact的一个问题
- 请问大家方法的 隐藏 和 重写有什么区别啊 我怎么看怎么没有 只知道重写的时候用的多些 谢谢大家啊
- c#里面有没有Popup控件?
- 如何获得Access数据库中各个表的名称?
- 关于vista IE与windows IE的问题
- 想随机生成四个位置不相等的数字
设置过了哦 直接把 查询条件 去掉,然后让数据库里存在一条记录的时候,就显示不出来!
非要1条以上的记录才显示!真是太奇怪了!
SQL2000的事件探查器 直接得到的 执行的 SQL, 在 查询分析器里面 可以查出一条数据!
看看能不能显示。
如果能显示,就敢确定是联合语句的错误。
如果不显示而查询分析器显示就是你的代码问题了。
Sys_User.UserID = @1 改为Sys_User.UserID = @0 看看