为什么我会收到错误消息-未为类型'dbnull'和类型'Integer'定义运算符'+'? [英] why do i get an error message of - operator ' +' is not defined for type 'dbnull' and type 'Integer'???

查看:172
本文介绍了为什么我会收到错误消息-未为类型'dbnull'和类型'Integer'定义运算符'+'?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

导入System.Data.SqlClient
导入System.Configuration
导入System.Data
导入System.IO
局部类购物车
   继承System.Web.UI.Page

Imports System.Data.SqlClient
Imports System.Configuration
Imports System.Data
Imports System.IO
Partial Class Cart
    Inherits System.Web.UI.Page

  昏暗的新SqlConnection(ConfigurationManager.ConnectionStrings("PizzaOnTheGo1ConnectionString").ConnectionString)
   昏暗为新的SqlDataAdapter
   将Dim ds作为新数据集
   昏暗的SQL作为字符串

    Dim con As New SqlConnection(ConfigurationManager.ConnectionStrings("PizzaOnTheGo1ConnectionString").ConnectionString)
    Dim da As New SqlDataAdapter
    Dim ds As New DataSet
    Dim sql As String

受保护的子btnCheckOut_Click(ByVal发送者作为对象,ByVal e作为System.EventArgs)处理btnCheckOut.Click
      试试

Protected Sub btnCheckOut_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnCheckOut.Click
        Try

      异常捕获

        Catch ex As Exception

      结束尝试
      如果con.State = ConnectionState.Closed然后
           con.Open()

        End Try
        If con.State = ConnectionState.Closed Then
            con.Open()

      如果结束

        End If

      昏暗的用户As String = Session.Item("New")
       Dim DatTim As String = DateTime.Now.ToString
      昏暗的CartItem作为CartItem
      昏暗的CartEntry作为DictionaryEntry
     
       sql =从Ordertb中选择max(ID)"
       da =新的SqlDataAdapter(sql,con)
       da.SelectCommand.ExecuteNonQuery()
       da.Fill(ds,0)
       'MsgBox(ds.Tables(0).Rows(0).Item(0).ToString)
       Dim orderid As Integer =(ds.Tables(0).Rows(0).Item(0))+ 1
       con.Close()

        Dim user As String = Session.Item("New")
        Dim DatTim As String = DateTime.Now.ToString
        Dim CartItem As CartItem
        Dim CartEntry As DictionaryEntry
      
        sql = "select max(ID) from Ordertb"
        da = New SqlDataAdapter(sql, con)
        da.SelectCommand.ExecuteNonQuery()
        da.Fill(ds, 0)
        ' MsgBox(ds.Tables(0).Rows(0).Item(0).ToString)
        Dim orderid As Integer = (ds.Tables(0).Rows(0).Item(0)) + 1
        con.Close()

       Dim orderno As String = orderid.ToString
       con.Open()
      对于每个购物车中的条目
           CartItem = CType(CartEntry.Value,CartItem)
          昏暗n作为字符串= CartItem.Product.ImageUnqName
           Dim q As String = CartItem.Quantity
           'Dim dt As String = DatTim.ToString
           MsgBox(orderno + user + DatTim + n + q)
           Dim query As String =插入Ordertb([ID],[UserName],[DateTime],[ProductName],[Quantity])值('" orderno&"','"用户&"'," & DatTim& " ','" & n& " ','" & q& " ')"
          昏暗的cmd作为新的SqlCommand(query,con)
           cmd.ExecuteNonQuery()
      下一个
       con.Close()
       Session.Abandon()
       lblMessage.Text =您的订单请求已成功下达!!"
       lblOrder.Text =您的OrderId为" +订单号

        Dim orderno As String = orderid.ToString
        con.Open()
        For Each CartEntry In Cart
            CartItem = CType(CartEntry.Value, CartItem)
            Dim n As String = CartItem.Product.ImageUnqName
            Dim q As String = CartItem.Quantity
            'Dim dt As String = DatTim.ToString
            MsgBox(orderno + user + DatTim + n + q)
            Dim query As String = "insert into Ordertb ([ID],[UserName],[DateTime],[ProductName],[Quantity]) values(' " & orderno & " ',' " & user & " ',' " & DatTim & " ',' " & n & " ',' " & q & " ')"
            Dim cmd As New SqlCommand(query, con)
            cmd.ExecuteNonQuery()
        Next
        con.Close()
        Session.Abandon()
        lblMessage.Text = "Your Request for order is placed successfully!!"
        lblOrder.Text = "Your OrderId is " + orderno


   结束


    End Sub

推荐答案

您应始终指出发生错误的代码行.另外,该行中变量的值,因为它告诉您问题出在哪里.

You should always indicate the line of code where the error occurs.   Also, the value of the variables in that line, as that tells you what the problem is.

在多个地方使用"+"代替&"混合类型会导致此错误.

There are several places where you use '+' instead of '&' with mixed types which can cause this error.

但是此行:
  Dim orderid As Integer =(ds.Tables(0).Rows(0).Item(0))+ 1

However this line:
  Dim orderid As Integer = (ds.Tables(0).Rows(0).Item(0)) + 1

问题.如果表为空,则应将ID初始化为任意值,而不要尝试计算它.

is most likely the problem if you haven't checked first that there is a valid order ID returned from the query.  If the table is empty then you should initialise the ID to an arbitrary value instead of trying to calculate it.


这篇关于为什么我会收到错误消息-未为类型'dbnull'和类型'Integer'定义运算符'+'?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆