当我在SSMS执行以下查询我得到预期的结果,即“1”问题与SqlCommand的参数
SELECT TSID
FROM tblTimesheets
WHERE TSUser = 'PJW' AND TSDate = '2012-01-18';
然而,当SqlCommand的是在我的应用程序中的代码生成的的ExecuteScalar失败(它只是导致该方法退出而没有错误消息)。
public int GetID(string paramUser, DateTime paramDate)
{
string strSql = "SELECT TSID " +
"FROM tblTimesheets " +
"WHERE TSUser = @TSUser AND TSDate = @TSDate;";
string strConnection = BuildConnectionString();
SqlConnection linkToDB = new SqlConnection(strConnection);
linkToDB.Open();
SqlCommand sqlCom = new SqlCommand(strSql, linkToDB);
sqlCom.Parameters.Add("@TSUser", SqlDbType.Text);
sqlCom.Parameters.Add("@TSDate", SqlDbType.Date);
sqlCom.Parameters["@TSUser"].Value = paramUser;
sqlCom.Parameters["@TSDate"].Value = paramDate;
int intResult = (Int32)sqlCom.ExecuteScalar();
linkToDB.Close();
return intResult;
}
我已经通过代码加强,可以确认上述参数PJW并根据需要2012-01-18,但返回的ExecuteScalar任何数据,我知道应该有基于我在SSMS可比查询。
请协助。
你可以运行SQL事件探查器,并找到该命令击中数据库?抓住声明,并尝试在SSMS中手动运行 - 如果你有确切的SQL敲击db,应该更容易发现。 – AdaTheDev
什么是SQL Profiler显示在服务器上执行? – Richard
我知道这是微不足道的,但你确定连接字符串指向同一个数据库吗?你是否使用同一个数据库用户进行连接(也许你使用域帐户通过SSMS连接,而你的代码使用的是具有较少特权的指定帐户)? – Strillo