![](/img/trans.png)
[英]SQL Query slow in .NET application but instantaneous in SQL Server Management Studio
[英]SQL query works in SQL Server Management Studio but not from ASP.Net application
我已經在數據庫中創建了一個視圖以獲得所需的結果。 查詢如下,
Select *
from SignInEmployeeDetails
where EmployeeID = 1
and CONVERT(DATE, LateComingDate) >= CONVERT(DATE, '04/02/2015')
我嘗試在SQL Server Management Studio中運行它,並且執行良好。
但是,當我在ASP.Net應用程序中包含此查詢時,除調試和查看查詢外,其他結果均與上述相同。 我的ASP.Net代碼如下,
Protected Sub BindSignInDetails()
Dim con As New SqlConnection(ConfigurationManager.ConnectionStrings("ConnectionStringName").ToString())
Dim comm As New SqlCommand(
"Select * from SignInEmployeeDetails where EmployeeID = " +
EmployeeID.ToString() +
" and CONVERT(DATE, LateComingDate) >= CONVERT(DATE, '" +
txtLateComingDate.Text.ToString() + "')", con)
con.Open()
Dim dr As SqlDataReader = comm.ExecuteReader()
If dr.Read() Then
txtFirstTimeIn.Text = dr("FirstTimeIn").ToString()
txtLateTimeDuration.Text = dr("LateTimeDuration").ToString()
End If
dr.Close()
con.Close()
End Sub
可能是什么問題? 有人可以幫我嗎?
編輯:
我已經更新了代碼,以包括如下參數化查詢,
cmd.Connection = con
cmd.CommandType = CommandType.Text
'representing type of command
cmd.CommandText = "Select * from SignInEmployeeDetails where EmployeeID = @EmployeeID and LateComingDate = @LateComingDate"
'adding parameters with value
cmd.Parameters.AddWithValue("@EmployeeID", EmployeeID.ToString())
cmd.Parameters.AddWithValue("@LateComingDate", txtLateComingDate.Text.ToString())
con.Open()
Dim dr As SqlDataReader = cmd.ExecuteReader()
If dr.Read() Then
txtFirstTimeIn.Text = dr("FirstTimeIn").ToString()
txtLateTimeDuration.Text = dr("LateTimeDuration").ToString()
End If
dr.Close()
con.Close()
但是我仍然沒有任何結果。 有什么問題
問題可能是全球化或您可以說日期格式。 您可以在web.config文件或單個文件中進行設置。 以下是示例
M/d/yyyy
(例如3/14/2012) dd/MM/yyyy
(例如14/03/2012) 在web.config中
<globalization requestEncoding="UTF-8" responseEncoding="UTF-8" uiCulture="en-GB" culture="en-GB" />
盡管有此代碼:
If dr.Read() Then
txtFirstTimeIn.Text = dr("FirstTimeIn").ToString()
txtLateTimeDuration.Text = dr("LateTimeDuration").ToString()
End If
使用此代碼:
if (dr.HasRows)
{
while (dr.Read())
{
txtFirstTimeIn.Text = dr["FirstTimeIn"].ToString();
txtLateTimeDuration.Text = dr["LateTimeDuration"].ToString();
}
}
沒什么,只是您的日期時間格式問題。 默認情況下,SQL Server使用mm/dd/yyyy
格式。
您的電腦的日期時間格式似乎是dd/mm/yyyy
,您只需對其進行更改然后再試一次。
您可以按上述方法嘗試。 但是我通過此設置解決了。
我認為您的查詢沒有問題。 檢查數據庫結果中的確切日期。 並且請確保您不在SQL Management Studio中使用本地數據庫和服務器數據庫。 這會使您對結果感到困惑。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.