• 存储过程在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 );



  • 相关阅读:
    挖地雷(类似数塔)
    拦截导弹简单版(读入一串整数时getline(cin,s) stringstream is(s);)
    拦截导弹简单版(读入一串整数时getline(cin,s) stringstream is(s);)
    拦截导弹加强版(最长递增/减子序列加强版)
    拦截导弹加强版(最长递增/减子序列加强版)
    最长上升子序列O(nlogn)算法详解
    最长上升子序列O(nlogn)算法详解
    第15届浙江省赛 E LIS
    第15届浙江省赛 E LIS
    C语言--循环结构
  • 原文地址:https://www.cnblogs.com/zpq521/p/1241491.html
Copyright © 2020-2023  润新知