zoukankan      html  css  js  c++  java
  • 存储过程在C#中的使用

    存储过程在C#中的使用(1
    前面有篇文章已经介绍了如何在sqlserver2000中创建存储过程,
    那么在这里我们就来具体
    看看在C#中如何使用. 
    先看看创建输入参数的存储过程如何在C#中使用. 
    创建一个简单的插入存储过程,代码如下: 
    create procedure TestProcedure 
    @id 
    int
    @uname varchar(
    20),@upass varchar(20
    as 
    insert into [user] values(@id,@uname,@upass) 
    GO 
    然后在C#中使用,来看看,界面上有三个文本框以供用户输入数据
    ,textBox1,textBox2,textBox3 
    using (SqlConnection conn = new SqlConnection(connstring)) 

      conn.Open(); 
      SqlCommand command 
    = new SqlCommand(); 
      command.CommandText 
    = "TestProcedure";//指定存储过程名 
      command.Connection = conn; 
      command.CommandType
    =CommandType.StoredProcedure;
    /
    /
    指定类型为存储过程 
      SqlParameter sp = new SqlParameter(); 

      sp.ParameterName 
    = "@id"
      sp.SqlDbType 
    = SqlDbType.Int; 
      sp.Value 
    = int.Parse(this.textBox1.Text); 
      command.Parameters.Add(sp); 

      sp 
    = new SqlParameter(); 
      sp.ParameterName 
    = "@uname"
      sp.SqlDbType 
    = SqlDbType.VarChar; 
      sp.Value 
    = this.textBox2.Text; 
      command.Parameters.Add(sp); 

      sp 
    = new SqlParameter(); 
      sp.ParameterName 
    = "@upass"
      sp.SqlDbType 
    = SqlDbType.VarChar; 
      sp.Value 
    = this.textBox3.Text; 
      command.Parameters.Add(sp); 
      command.ExecuteNonQuery(); 

      conn.Close(); 
    }
     


     
    http://www.cnblogs.com/qinfei/archive/2005/11/03/268240.html

    存储过程在C#中的使用(2)
    //构建 SqlCommand 对象(用来返回一个结果集,而不是一个整数值),
    参数为数据库连接、存储过程名、存储过程参数。

            public static SqlCommand BuildQueryCommand(SqlConnection connection, 
    string storedProcName, IDataParameter[] parameters)
            
    {
                SqlCommand command 
    = new SqlCommand(storedProcName, connection);
                command.CommandType 
    = CommandType.StoredProcedure;
                
    foreach (SqlParameter parameter in parameters)
                
    {
                    command.Parameters.Add(parameter);
                }

                
    return command;
            }


            
    //执行存储过程,返回结果集
            public static DataSet RunProcedure(string storedProcName, 
    IDataParameter[]
     parameters, 
    string tableName)
            
    {
                SqlConnection connection 
    = new SqlConnection
    (connectionString);
                DataSet dataSet 
    = new DataSet();
                connection.Open();
                SqlDataAdapter sqlDA 
    = new SqlDataAdapter();
                sqlDA.SelectCommand 
    = BuildQueryCommand(connection, 
    storedProcName, 
    parameters);
                sqlDA.Fill(dataSet, tableName);
                connection.Close();
                
    return dataSet;

            }




    //IDataParameter[]使用 
    从表面上看,IDataParameter[]的实例就是一个IDataParameter的数组。
    而IDataParameter实际上是不能直接实例化的,所以这种数组其实很不常见,
    仅仅会出现在函数的入口参数里面。且多以params的形式出现。这样做的好处
    是令这个函数可以对付所有的数据库。
     
            IDataParameter[]简单的说来,就是可以包含任何数据库参数的数组,
    这些参数可以是SqlParameter或者OleDbParameter,但是,IDataParameter[]
    不可以直接从SqlParameter[]转换过来。


            下面是三种创建IDataParameter[]的方法:
    一、直接构造:
    IDataParameter[] parameters 
    = new IDataParameter[]{ sqlparameter1, sqlparameter2, new SqlParameter() }
    二、通过ArrayList转换。
    ArrayList paramlist 
    = new ArrayList()
    paramlist.Add( sqlparameter1 );
    .
    .
    IDataParameter param 
    = (IDataParameter[]) paramlist.ToArray
    typeof( IDataParameter ) );
    三、通过其他Parameter类型的数组创建。
    SqlParameter[] _param 
    = new SqlParameter[]. }

    IDataParameter[] param 
    = new IDataParameter[ _param.Length ];
    _param.CopyTo( param, 
    0 );



  • 相关阅读:
    解决 Mac launchpad 启动台 Gitter 图标无法删除的问题
    React 与 React-Native 使用同一个 meteor 后台
    解决 React-Native mac 运行报错 error Failed to build iOS project. We ran "xcodebuild" command but it exited with error code 65. To debug build logs further, consider building your app with Xcode.app, by ope
    一行命令更新所有 npm 依赖包
    swift学习笔记
    IOS语言总结
    focusSNS学习笔记
    别小看锤子,老罗真的很认真
    windowsphone开发页面跳转到另一个dll中的页面
    【令人振奋】【转】微软潘正磊谈DevOps、Visual Studio 2013新功能、.NET未来
  • 原文地址:https://www.cnblogs.com/zpq521/p/1241491.html
Copyright © 2011-2022 走看看