用于初始化Parameters.AddWithValue的泛型函数 [英] generic function to initialize Parameters.AddWithValue

查看:68
本文介绍了用于初始化Parameters.AddWithValue的泛型函数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

您好。我写了一个函数来获取任何存储过程的参数并以动态方式初始化命令参数。

Hi. I Wrote a function which get parameters for any Stored Procedure and initialize command parameters in a dynamic manner.

public void ExecProcedur<T>(String cmdText,string procName, SqlParameter paramtr, T paramvalu)
{
    SqlCommand cmd=new SqlCommand();
    cmd.Connection=Sqlc;
    cmd.CommandText=cmdText;
    cmd.CommandType=System.Data.CommandType.StoredProcedure;
    cmd.Parameters.AddWithValue(paramtr,paramvalu); //error
    try{
        OpenConnection();
       // and ....





paramvalu可以是int字符串(如果paramtr是列表,甚至是列表)。我不知道如何解决这个问题。提前谢谢。



"paramvalu" can be int string (or even a list if "paramtr" be a list). i don't know how solve this. thanks in advance.

推荐答案

尝试这种通用方法。



Try this generic method.

using System.Collections.Generic;
using System;
using System.Data;
using System.Data.SqlClient;


class Program
{


    static void Main(string[] args)
    {

        List<parametermapping> mappings = new List<parametermapping>();
        mappings.Add(new ParameterMapping() { ParameterName = "@ID", Value = 1 });
        mappings.Add(new ParameterMapping() { ParameterName = "@Name", Value = "karthik" });
        mappings.Add(new ParameterMapping() { ParameterName = "@Age", Value = 26 });
        mappings.Add(new ParameterMapping() { ParameterName = "@Address", Value = "Bangalore" });

        ExecuteSp(mappings, "yourstoredprodedureName");


    }

    protected static void AddSqlParameterToCollection(string sqlparametername, object value, SqlParameterCollection parameterCollection)
    {
        SqlParameter objSqlParameter = new SqlParameter();
        objSqlParameter.ParameterName = sqlparametername;
        objSqlParameter.Value = value;
        parameterCollection.Add(objSqlParameter);
    }
    protected static void ExecuteSp(List<parametermapping> mappings, string spName)
    {
        SqlConnection con = new SqlConnection();
        con.ConnectionString = "your conection string";
        SqlCommand objCommand = new SqlCommand();
        SqlParameterCollection objParamColl;
        objParamColl = objCommand.Parameters;
        objCommand.CommandType = CommandType.StoredProcedure;

        try
        {
            if (mappings != null)
                foreach (ParameterMapping map in mappings)
                    AddSqlParameterToCollection(map.ParameterName, map.Value, objParamColl);

            objCommand.ExecuteNonQuery(); // for insert/delete/update

        }
        catch (Exception ex)
        {
            throw ex;
        }
        finally
        {

        }
    }
}

public class ParameterMapping
{
    public string ParameterName { get; set; }
    public object Value { get; set; }
}


这篇关于用于初始化Parameters.AddWithValue的泛型函数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆