我有这样一个存储过程:从DATABSE读取错误的值,而使用SqlDataReader的
TBarcode Paid Status DelDate
-------------------- ----- ----------- -----------------------
57173621345 1 0 NULL while i am checking this value using vb.net code like
此:
Dim dr As SqlDataReader
Dim payd As Integer
dr = cmdcarvalidation.ExecuteReader While dr.Read
If dr("Paid") Is DBNull.Value Then payd = 0 Else
payd = dr("Paid") If payd = 1 Then MsgBox("Payment Done") Exit Sub End If End If End While
ALTER procedure [dbo].[carcallvalidation]
@carid nvarchar(100)=null
as begin SET NOCOUNT ON; select t.TBarcode, t.Paid,t.Status,t.DelDate from Transaction_tbl t where [email protected] declare @transid integer=null
select @transid= t1.transactID from Transaction_tbl t1 where [email protected]
if(select count(k.transactid) from KHanger_tbl k where [email protected])>0
begin
return 1 end end
在执行这个我走出把这样
但payd值取-1 ...但在数据库中我得到这个值为1.then我如何得到-1值..
首先,我想请从奇妙的代码显示了一些优势自动更正VS并编写代码,因为VB.NET期望写入条件(每行一条语句)。关于你的问题,似乎你错误地使用了DBNull.Value,据推测,“Paid”列是整数类型,其“空白记录值”不为空(但为-1)。这可能是你看到的行为的原因。无论如何,它必须处理你的数据库和值存储在那里的方式。如果连接字符串是正确的,SQLDataReader只是传递那里的内容。 – varocarbas
所以我必须改变.. ?? – user2674855
如果(不完全确定)我的假设是正确的,请将“DBNull.Value”替换为“= -1”。 – varocarbas