Issue with SqlCommand Parameters
当我在SSMS中执行以下查询时,会得到预期的结果,即"1"
1 2 3 | SELECT TSID FROM tblTimesheets WHERE TSUser = 'PJW' AND TSDate = '2012-01-18'; |
但是,当我的应用程序中的代码生成sqlcommand时,executescalar会失败(它只会导致方法退出,不显示错误消息)。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | 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,但ExecuteEscalar返回任何数据,我知道这些数据应该存在于SSMS中的类似查询中。
请协助。
你说
除此之外,请按照其他人的建议尝试并查看使用SQL事件探查器生成的SQL,然后在SSMS中运行该SQL以比较结果。
当参数为db-type
1 2 | sqlCom.Parameters.Add("@TSDate", SqlDbType.Date); sqlCom.Parameters["@TSDate"].Value = paramDate.Date; |
如果这不起作用,请告诉我,我将删除我的答案。
1 2 3 | SELECT TSID FROM tblTimesheets WHERE TSUser = 'PJW' AND TSDate = '2012-01-18'; |
这里,u r传递精确的日期作为参数
在将参数传入要传递的存储过程时"日期时间参数日期"
日期时间变量
可能需要解析为存储过程支持的确切日期格式例如,您需要将参数日期变量格式设置为"yyyy-mm-dd"
我不确定……试试看。如果有帮助或没有帮助,请回复!
根据列的类型,尝试以下任一操作,而不是
SqlDbType.VarChar SqlDbType.NVarChar SqlDbType.NText SqlDbType.NChar SqlDbType.Char