在VB.NET中调用存储过程,获取返回值时遇到问题,高分紧急求助!!

sg163 2007-11-28 09:37:44
存储过程:
create or replace procedure login
(v_personcode in t_otms_user.personcode%type,v_password in t_otms_user.password%type,returnvalue out boolean)
as
num number(1);
begin
select count(*) into num from t_otms_user
where t_otms_user.personcode = v_personcode and t_otms_user.password = v_password;
if num = 0 then
returnvalue := false;
dbms_output.put_line(num);
else
returnvalue := true;
dbms_output.put_line(num);
end if;
end login;


VB.NET调用语句:
Dim con As OleDbConnection = New OleDbConnection("Provider=MSDAORA.1;Password=otms;User ID=otms;Data Source=orcl")
con.Open()

Dim cmd As OleDbCommand = New OleDbCommand("login", con)
cmd.CommandType = CommandType.StoredProcedure

cmd.Parameters.Add("v_personcode", SqlDbType.Int).Value = TextBox1.Text
cmd.Parameters.Add("v_password", SqlDbType.Int).Value = TextBox2.Text

cmd.Parameters.Add("returnvalue", SqlDbType.Int)
cmd.Parameters("returnvalue").Direction = ParameterDirection.Output

Dim valueend As Boolean
valueend = cmd.Parameters("returnvalue").Value

If valueend = True Then
Dim MainFrm As New MainFrm
MainFrm.Show()
Me.Hide()
Else
MsgBox("用户名或密码错误,请重试。", MsgBoxStyle.Exclamation, "错误信息")
End If

con.Close()

现在问题是我不管怎么输用户名和密码,返回的值都是TRUE,请问各位高手哪里出问题了?
...全文
211 14 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
TomatoZhang 2008-01-28
  • 打赏
  • 举报
回复
向各位大虾学习,并帮lz顶了
Terran5 2008-01-28
  • 打赏
  • 举报
回复
LZ首先是没有执行存储过程,如果出现了异常,那么你就要检查
cmd.Parameters.Add("v_personcode", SqlDbType.Int).Value = TextBox1.Text
cmd.Parameters.Add("v_password", SqlDbType.Int).Value = TextBox2.Text
你的数据类型是否和数据库匹配。
shepherd_cw 2008-01-27
  • 打赏
  • 举报
回复


少了一句在“valueend = cmd.Parameters("returnvalue").Value ”
上加cmd.ExecuteNonQuery() 试试
wb80222 2008-01-25
  • 打赏
  • 举报
回复
使用完参数要删除。 cmd.Parameters.clear() ,要么会产生很多参数,导致异常。
pfcszp 2008-01-25
  • 打赏
  • 举报
回复
我们也在用ORA的数据库但是我还闹不清学习下
wdzr_826 2008-01-24
  • 打赏
  • 举报
回复
在SQL分析器里走存储过程,如果能走通的话。
程序里时不时参数没给全,或是类型问题。
足球中国 2008-01-24
  • 打赏
  • 举报
回复
类型库引用的问题.删掉一些东西.比如一些类或控件之类的再重新试.
应该能解决问题.
wb80222 2008-01-24
  • 打赏
  • 举报
回复
别忘了使用完参数一定要清除
wb80222 2008-01-16
  • 打赏
  • 举报
回复
看看这段代码,或许对你有帮助:
Dim pam As New OleDb.OleDbParameter
.................
OleDbConnection1.Open()
OleDbCommand1.Connection = OleDbConnection1
OleDbCommand1.CommandType = CommandType.StoredProcedure
OleDbCommand1.CommandText = "product_id"
pam.Direction = ParameterDirection.Output
pam.DbType = DbType.String
pam.Size = 10
OleDbCommand1.Parameters.Add(pam)
OleDbCommand1.ExecuteNonQuery()
TextBox1.Text = pam.Value
.................

检查一下数据类型。
sg163 2007-11-28
  • 打赏
  • 举报
回复
确实是少了一句

现在我加了cmd.ExecuteNonQuery() ,执行到这步的时候出现了错误了.

"未处理的“System.Data.OleDb.OleDbException”类型的异常出现在 system.data.dll 中。"
boblaw 2007-11-28
  • 打赏
  • 举报
回复
暈LZ,使用command不用執行有啥用?cmd.ExecuteNonQuery
honey52570 2007-11-28
  • 打赏
  • 举报
回复
确实是少了一句
shadowno 2007-11-28
  • 打赏
  • 举报
回复
没太看懂,觉得是不是类型转换有问题,returnvalue 存储过程出来可能为null,

cmd.Parameters.Add("v_personcode", SqlDbType.Int).Value = TextBox1.Text ....数据库、存储过程定义的是int?
cmd.Parameters.Add("v_password", SqlDbType.Int).Value = TextBox2.Text ....数据库、存储过程定义的是int?
cjhxajh 2007-11-28
  • 打赏
  • 举报
回复
Dim con As OleDbConnection = New OleDbConnection("Provider=MSDAORA.1;Password=otms;User ID=otms;Data Source=orcl")
con.Open()

Dim cmd As OleDbCommand = New OleDbCommand("login", con)
cmd.CommandType = CommandType.StoredProcedure

cmd.Parameters.Add("v_personcode", SqlDbType.Int).Value = TextBox1.Text
cmd.Parameters.Add("v_password", SqlDbType.Int).Value = TextBox2.Text

cmd.Parameters.Add("returnvalue", SqlDbType.Int)
cmd.Parameters("returnvalue").Direction = ParameterDirection.Output

cmd.ExecuteNonQuery() '没执行存储过程
Dim valueend As Boolean
valueend = cmd.Parameters("returnvalue").Value

If valueend = True Then
Dim MainFrm As New MainFrm
MainFrm.Show()
Me.Hide()
Else
MsgBox("用户名或密码错误,请重试。", MsgBoxStyle.Exclamation, "错误信息")
End If

con.Close()
内容概要:本文详细介绍了一个基于C++语言开发的疫苗接种和儿童体检系统的设计与实现全过程,涵盖项目背景、目标意义、架构设计、核心功能模块、数据库实现、API接口规范、前后端代码实现及部署应用等多个方面。系统采用分层架构与模块化设计,实现了儿童信息管理、疫苗接种记录、体检数据录入、多用户权限控制、数据统计分析、异常预警、安全加密与日志审计等核心功能,并通过MySQL数据库进行数据持久化,结合Qt实现图形化界面,支持高并发、数据脱敏、多平台对接与自动化部署。项目强调数据安全、隐私保护与系统可扩展性,适用于社区医疗、疾控心、学校及医院等场景。; 适合人群:具备C++编程基础,熟悉数据库操作和基本软件工程流程的开发人员、计算机及相关专业学生、医疗信息化项目开发者,以及希望了解完整医疗管理系统开发流程的技术人员。; 使用场景及目标:①学习如何使用C++构建完整的医疗信息管理系统;②掌握数据库设计、前后端交互、权限控制、多线程处理和GUI开发等关键技术;③应用于社区卫生服务、学校健康管理、疾控数据统计等实际业务场景,提升儿童健康管理水平;④作为课程设计、毕业设计或实际项目的参考模板。; 阅读建议:建议读者结合文档的代码示例与数据库脚本,搭建本地开发环境进行实践操作,重点关注系统架构设计、模块解耦、安全机制与前后端交互逻辑,深入理解各功能模块的实现原理,并尝试在此基础上进行功能扩展,如接入移动端或增加AI分析模块。

16,722

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧