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 文件或单个文件中设置它。以下是示例

  • en-USM/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 服务器使用 mm/dd/yyyy 格式。

你电脑的日期时间格式好像是dd/mm/yyyy,你改一下再试试

你可以按照上面的方法试试。但是我通过这个设置解决了。

我认为你的查询没有问题。检查数据库结果以获取确切日期。并确保您没有在 sql management studio 中使用本地数据库和服务器数据库。这会让你在知道结果时感到困惑。