[英]How to read the date that is return from a stored procedure which have no parameter using asp.net?
ALTER PROCEDURE [dbo].[usp_currentDate]
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for procedure here
SELECT CONVERT(VARCHAR(10), GETDATE(), 101)
END
這是我的存儲過程代碼。 我得到了正確的日期,但是我無法讀取asp.net中的值。
public DateTime getCurrentDate()
{
try
{
DateTime dt;
SqlDataReader reader;
SqlConnection objSqlConn = new SqlConnection(ConnString);
SqlCommand cmd = new SqlCommand();
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "usp_currentDate";
cmd.Connection = objSqlConn;
objSqlConn.Open();
me(1);
reader = cmd.ExecuteReader();
dt = reader.GetDateTime(1);
return dt;
}
catch (Exception ex)
{
throw ex;
}
}
但它不起作用。 引發異常
沒有數據時讀取嘗試無效
我必須進行哪些更改?
嘗試使用ExecuteScalar
這樣的方法來獲取單行/單列值:
public DateTime getCurrentDate()
{
try
{
DateTime dt;
// set up connection and command in *using* blocks
using (SqlConnection objSqlConn = new SqlConnection(ConnString))
using (SqlCommand cmd = new SqlCommand("dbo.usp_currentDate", objSqlConn))
{
cmd.CommandType = CommandType.StoredProcedure;
objSqlConn.Open();
// since the query returns exactly one row, one column -> use ExecuteScalar
object result = cmd.ExecuteScalar();
// if something was returned .....
if (result != null)
{
// try to convert to DateTime
if (DateTime.TryParse(result.ToString(), out dt)
{
return dt;
}
}
// return default value, if no data was read or could not be converted
return DateTime.MinValue;
}
}
catch (Exception ex)
{
throw;
}
}
除了說明為什么要使用GETDATE
作為字符返回本地時間之外,如果不使用Read
方法將光標移到數據的第一行,就無法讀取數據讀取器。
從文件;
SqlDataReader
的默認位置在第一條記錄之前。 因此,您必須調用Read
才能開始訪問任何數據。
string s;
reader = cmd.ExecuteReader();
if(reader.Read())
s = reader.GetString(0);
更好的方法是使用ExecuteScalar
方法,因為您返回的是一行和一列,例如:
string s = (string)cmd.ExecuteScalar();
記住, CONVERT(VARCHAR(10), GETDATE(), 101)
返回varchar
,它最好在CLR端與string
一起使用 ,這就是為什么不能將此值分配給DateTime
變量的原因。
還可以使用using
語句來處理數據庫連接和命令。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.