簡體   English   中英

SQL查詢可在SQL Server Management Studio中使用,但不適用於ASP.Net應用程序

[英]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文件或單個文件中進行設置。 以下是示例

  • zh-CNM/d/yyyy (例如3/14/2012)
  • zh-CNdd/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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM