【问题标题】:Operand type clash: date is incompatible with int操作数类型冲突:日期与 int 不兼容
【发布时间】:2016-01-10 14:53:33
【问题描述】:

我对以下代码有困难。我认为它存在于我的 sql 语句中。 我得到错误:

操作数类型冲突:日期与 int 不兼容

    Dim strSql5 As String = "SELECT  * FROM dbo.ontledings where plaasblok = '" & plaasblokparsversoeke & "' and analisedatum  = " & laastedatum.Date
    MsgBox(strSql5)

    Dim dtb5 As New DataTable
    dtb5.Clear()

    Using cnn As New SqlConnection("Data Source=GIDEON-E-LAPTOP\SQLEXPRESS2014;Initial Catalog=SkeduleringDatabasis;Integrated Security=True")
        cnn.Open()
        Using dad5 As New SqlDataAdapter(strSql5, cnn)
            dad5.Fill(dtb5)
        End Using
        cnn.Close()
    End Using


    Dim laasteontleding As Decimal = dtb5.Rows(0)("suiker")

我从以下代码中得到了 laastedatum:

    Dim laastedatum As Date = dtb4.Rows(0)("last")

任何帮助将不胜感激。

问候

【问题讨论】:

  • 你在哪一行得到了错误?
  • 不要使用字符串连接来构建 Sql 查询。这是我在您上一个问题中谈到的问题之一

标签: sql-server vb.net


【解决方案1】:

不要使用 SELECT *,使用 SELECT 字段列表。然后使用 Field(Of T) 获取强类型的日期信息。始终使用 Option Strict On。

从 Microsoft NorthWind 数据库订单表中读取订单数据的示例,注意字段检索。

Public Class Form1
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

        Dim EmployeeId As Integer = 2
        Dim dt As New DataTable

        Using cn As New SqlClient.SqlConnection With {.ConnectionString = My.Settings.ConnectionString}
            Using cmd As New SqlClient.SqlCommand With {.Connection = cn}
                cmd.CommandText =
                    <SQL>
                    SELECT [OrderID]
                          ,[CustomerID]
                          ,[EmployeeID]
                          ,[OrderDate]
                          ,[ShipCountry]
                      FROM [NORTHWND.MDF].[dbo].[Orders]
                      WHERE [EmployeeID] = @EmployeeID
                      ORDER BY CustomerId  
                    </SQL>.Value

                cmd.Parameters.AddWithValue("@EmployeeID", EmployeeId)

                cn.Open()

                dt.Load(cmd.ExecuteReader)

                For Each row As DataRow In dt.Rows
                    Console.WriteLine("id: {1} date: {0}",
                                      row.Field(Of Date)("OrderDate").ToShortDateString,
                                      row.Field(Of String)("CustomerId"))
                Next
            End Using
        End Using
    End Sub
End Class

获取第一次约会

Dim rowOneOrderDate As Date = dt.Rows(0).Field(Of Date)("ORderDate")

【讨论】:

    猜你喜欢
    • 2019-10-31
    • 2016-07-09
    • 1970-01-01
    • 1970-01-01
    • 2021-04-15
    • 1970-01-01
    • 2014-03-01
    • 1970-01-01
    • 2021-09-24
    相关资源
    最近更新 更多