| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2107 人关注过本帖
标题:用SqlCommand能返回一定义变量re1的值吗?
只看楼主 加入收藏
梦幻倩影
Rank: 5Rank: 5
等 级:职业侠客
威 望:8
帖 子:162
专家分:352
注 册:2016-8-19
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:4 
用SqlCommand能返回一定义变量re1的值吗?
用SqlCommand能返回一定义变量re1的值吗?代码如下,提示不能用return:

新增和更新都没问题,但就是想返回一个值,到底是新增的,还是更新的

        objConnection = New SqlConnection(sqlstr)
        ' 打开连接
        If objConnection.State <> ConnectionState.Open Then
            objConnection.Open()
        End If
        Dim sql As String
        sql = "declare @re1 varchar(20)" + vbCrLf
        sql += "if not exists (select * from dbo.idpass where 姓名='" + TextBox1.Text + "')" + vbCrLf
        sql += "begin" + vbCrLf
        sql += "if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[idpass]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)" + vbCrLf
        sql += "CREATE TABLE [dbo].[idpass] (" + vbCrLf
        sql += "[姓名] [char] (10) COLLATE Chinese_PRC_CI_AS NOT NULL ," + vbCrLf
        sql += "[密码] [char] (10) COLLATE Chinese_PRC_CI_AS NULL ," + vbCrLf
        sql += "[权限] [char] (40) COLLATE Chinese_PRC_CI_AS NULL ) ON [PRIMARY]" + vbCrLf + vbCrLf
        sql += "Insert into idpass(姓名,密码,权限) values('" + TextBox1.Text + "','" + TextBox2.Text + "',' ') " + vbCrLf
        sql += "set @re1='新增操作人员成功' " + vbCrLf
        sql += "end" + vbCrLf
        sql += "else" + vbCrLf
        sql += "begin" + vbCrLf
        sql += "update idpass set 密码 ='" + Trim(TextBox2.Text) + "' where 姓名= '" + Trim(TextBox1.Text) + "'"
        sql += "set @re1='操作人员密码修改成功' " + vbCrLf
        sql += "end" + vbCrLf
        sql += "return @re1"
        MsgBox(sql)
        Dim cmd As SqlCommand = New SqlCommand(sql, objConnection)
2016-09-23 16:50
不说也罢
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:39
帖 子:1481
专家分:4989
注 册:2007-10-7
收藏
得分:20 
楼主为什么不把存储过程直接写在服务器端?
然后
Dim cmd As SqlCommand = New SqlCommand(sql, objConnection)
cmd = New SqlCommand("存储过程名", objConnection)   
= CommandType.StoredProcedure
'下面根据存储过程,传递所需参数的值
cmd.Parameters.Add(New SqlParameter("@姓名", SqlDbType.varchar,20))
cmd.Parameters("@姓名").Value=TextBox1.Text
'.......
cmd.Parameters.Add(New SqlParameter("@re1", SqlDbType.varchar,20))
cmd.Parameters("@re1").Direction = ParameterDirection.ReturnValue
cmd.ExecuteNonQuery()
MsgBox(CMD.Parameters("@re1").Value)'返回值


===================================================
讨厌C#的行尾的小尾巴;和一对大括号{ }
===================================================
2016-09-23 17:19
梦幻倩影
Rank: 5Rank: 5
等 级:职业侠客
威 望:8
帖 子:162
专家分:352
注 册:2016-8-19
收藏
得分:0 
还是说只能用函数,或过程
2016-09-23 17:50
梦幻倩影
Rank: 5Rank: 5
等 级:职业侠客
威 望:8
帖 子:162
专家分:352
注 册:2016-8-19
收藏
得分:0 
存储过程不熟, 中如何通过代码实现 新建、修改 SQL存储过程?而不用在SQL服务器中去 写和执行 代码
2016-09-23 17:54
不说也罢
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:39
帖 子:1481
专家分:4989
注 册:2007-10-7
收藏
得分:0 
楼主的代码中,与服务器建立的数据查询中,属性是Text类型,这种类型时,sqlcommand的上下文中是不能使用带有返回值的return语句的
想要使用带有返回值的,属性必须为StoredProcedure,也就是调用存储过程。
如果楼主不知晓存储过程,那需要恶补下。
如果楼主一定要用Text类型,可以将顶楼的代码分段执行,根据insert或update代码执行成功与否,进行判断是更新还是新增。

===================================================
讨厌C#的行尾的小尾巴;和一对大括号{ }
===================================================
2016-09-23 19:00
快速回复:用SqlCommand能返回一定义变量re1的值吗?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017838 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved