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