标题:存储过程的调用【结贴了,没有得到答案】
只看楼主
wuhongyao3
Rank: 1
等 级:新手上路
帖 子:202
专家分:0
注 册:2006-4-18
 问题点数:0 回复次数:8 
存储过程的调用【结贴了,没有得到答案】
我数据库中有这样一个存储过程
但是,在C#中改怎么调用这个存储过程呢
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO
ALTER procedure [dbo].[CategoryInsert]
    @CategoryName nvarchar(50),
    @Active  bit
as
begin
    declare @Record int
    set @Record = 0;
    select @Record=count(*) from Category where CategoryName=@CategoryName
    if @Record>0
        RAISERROR( 'xxx已经存在!',16,1 )
    else
        begin
            insert into Category(CategoryName,Active)values(@CategoryName,@Active)
            return @@identity
        end
end

我需要向这个存储过程传进来参数,因为里边要用到这些参数,加入数据库中
应该在一个类中怎么写代码,
期待,
在线等。。
实现的功能,就是可以不可以添加成功。。

[[italic] 本帖最后由 wuhongyao3 于 2008-1-18 16:46 编辑 [/italic]]
搜索更多相关主题的帖子: 数据库 Record CategoryName set Active 
2008-01-18 12:07
doughty
Rank: 1
等 级:新手上路
帖 子:372
专家分:0
注 册:2007-10-18
得分:0 
大概这么写啦,,,,你自已看看吧
 /// <summary>
        /// 连接数据库返回一个数据集对象
        /// </summary>
        /// <param name="proc">存储过程名</param>
        /// <param name="table">表名</param>
        /// <returns></returns>
        public DataSet runSQLDataSet(string proc, string table)
        {
            this._proc = proc;
            try
            {
                cn = new SqlConnection(conn_str);
                cmd = new SqlCommand();
                = proc;
                cmd.Connection = cn;
                = CommandType.StoredProcedure;//使用存储过程
                if (_FromCity.Equals("") && _ToCity.Equals(""))
                {
                    cmd.Parameters.Add("@code", SqlDbType.Char, 10).Value = _code;//("@code数据传参
                }
                else
                {
                    cmd.Parameters.Add("@fromcity", SqlDbType.VarChar, 50).Value = _FromCity;
                    cmd.Parameters.Add("@tocity", SqlDbType.VarChar, 50).Value = _ToCity;
                  if(_middle!=null){
                  cmd.Parameters.Add("@shinn", SqlDbType.VarChar, 50).Value = _middle;
                  }
                }
                cn.Open();
                cmd.ExecuteNonQuery();
                objDataset = new DataSet();

                objData = new SqlDataAdapter(cmd);
                objData.Fill(objDataset, table);


            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
            finally { cn.Close(); }
            return objDataset;
        }
2008-01-18 12:20
wuhongyao3
Rank: 1
等 级:新手上路
帖 子:202
专家分:0
注 册:2006-4-18
得分:0 
if (_FromCity.Equals("") && _ToCity.Equals(""))
                {
                    cmd.Parameters.Add("@code", SqlDbType.Char, 10).Value = _code;//("@code数据传参
                }
                else
                {
                    cmd.Parameters.Add("@fromcity", SqlDbType.VarChar, 50).Value = _FromCity;
                    cmd.Parameters.Add("@tocity", SqlDbType.VarChar, 50).Value = _ToCity;
                  if(_middle!=null){
                  cmd.Parameters.Add("@shinn", SqlDbType.VarChar, 50).Value = _middle;
                  }
                }


我需要向里边传写参数
我是不是不用判断
直接
cmd.paramenters.add.....
加上参数,运行就行了。。。
去吃饭了,回来说了。

2008-01-18 12:24
doughty
Rank: 1
等 级:新手上路
帖 子:372
专家分:0
注 册:2007-10-18
得分:0 
这要看你的需求了,,,我这个只不过是个参考啊,,,直接ADD就行
2008-01-18 12:33
wuhongyao3
Rank: 1
等 级:新手上路
帖 子:202
专家分:0
注 册:2006-4-18
得分:0 
那我还有其他的存储过程
参数都不一样  和这个
是不是在一个类中,定义几个方法
然后每个方法调用固定存储过程呢?

2008-01-18 13:03
wuhongyao3
Rank: 1
等 级:新手上路
帖 子:202
专家分:0
注 册:2006-4-18
得分:0 
还有就是我那个存储过程
最后一句是  return @@identity
是返回一个 自增类型的数值
那我获得这个值是怎么获得
string ss=cmd.eExecuteNonQuery();
这样吗?

2008-01-18 13:16
wuhongyao3
Rank: 1
等 级:新手上路
帖 子:202
专家分:0
注 册:2006-4-18
得分:0 
Public Class DataBase
    Dim ConnectStr As String
    Dim Cmd As SqlCommand
    Dim Conn As SqlConnection
    Public Sub New()
        ConnectStr = "Data Source=(local);Initial Catalog=ScanPage"
    End Sub

    Public Function RunCategoryInsertSP(ByVal CategoryName As String, ByVal Active As Boolean) As String
        Try
            Dim ss As String = "Data Source=(local);Initial Catalog=ScanPage"
            Conn = New SqlConnection(ss)
            Cmd = New SqlCommand()
            Cmd.Connection = Conn
            'Dim SQL As String = "select * from Category"
             = CommandType.StoredProcedure
             = "CategoryInsert"
            Cmd.Parameters.Add("@CategoryName", SqlDbType.VarChar)
            Cmd.Parameters("@CategoryName").Value = CategoryName
            Cmd.Parameters.Add("@Active", SqlDbType.Bit).Value = Active
            Conn.Open()
            Cmd.ExecuteNonQuery()
        Catch ex As Exception

        Finally
            'Conn.Close()
        End Try

    End Function
End Class

这是我写的一个类和一个方法,是调用CategoryInsert方法的
从一个窗体中单击,按钮,NEW 一个DATABASE,然后调用这个方法
但是数据库里边没有反应。。。
什么原因。。。。

2008-01-18 13:41
wuhongyao3
Rank: 1
等 级:新手上路
帖 子:202
专家分:0
注 册:2006-4-18
得分:0 
上边的问题已经解决了, 原来链接字符串写错了

但是
那我还有其他的存储过程
参数都不一样  和这个
是不是在一个类中,定义几个方法
然后每个方法调用固定存储过程呢?

还有就是我那个存储过程
最后一句是  return @@identity
是返回一个 自增类型的数值
那我获得这个值是怎么获得
string ss=cmd.eExecuteNonQuery();
这样吗?

2008-01-18 14:00
wuhongyao3
Rank: 1
等 级:新手上路
帖 子:202
专家分:0
注 册:2006-4-18
得分:0 
算了,已经解决了,按我自己的方法。。。
结帖了。。。。。。。

2008-01-18 16:45



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-197890-1-1.html




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

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