当前位置: 首页 > 面试题库 >

如何创建具有多个参数的SqlParameterCollection?

施兴言
2023-03-14
问题内容

我正在尝试创建一个SqlParameterCollection,但是SqlParametersp.Add()方法中添加一些错误。

请帮助我如何添加参数以及如何将其传递给在其中声明aSqlConnection和的另一个函数SqlCommand

SqlParameterCollection sp = null;                    
sp.Add(new SqlParameter("@CmpyCode", SqlDbType.NVarChar)).Value = CV.Global.CMPYCODE;
sp.Add(new SqlParameter("@Code", SqlDbType.NVarChar)).Value = codeName;
sp.Add(new SqlParameter("@DisplayCode", SqlDbType.NVarChar)).Value = codeName + "-";
sp.Add(new SqlParameter("@TotalDigit", SqlDbType.Int)).Value = CV.Global.PARAMTOTALDIGIT;
insertData("<Sp Name>", sp);

我的另一个功能是insertData(…)

internal static int insertData(string spName, SqlParameterCollection sp)
{
        int retObj = 0;

        using (SqlConnection con = new SqlConnection(CV.Global.CONSTRING))
        {
            try
            {
                con.Open();
                SqlCommand cmd = new SqlCommand(spName, con);
                cmd.CommandType = CommandType.StoredProcedure;

                if (sp.Count > 0)
                {
                    foreach (SqlParameter param in sp)
                        cmd.Parameters.Add(param);
                }

                retObj = cmd.ExecuteNonQuery();
            }
            catch (Exception ev) 
            { 
                Util.Log(ev); 
                throw; 
            }
            finally
            {
                try
                {
                    con.Close();
                }
                catch (Exception ev) { Util.Log(ev); throw; }
            }
        }
        return retObj;
    }

我正在尝试创建一个SqlParameterCollection并将其传递给insertData函数。但是,当我sp.Add()在第一个函数中调用方法时,它将引发错误。

错误是

你调用的对象是空的


问题答案:

如果不SqlParameterCollection调用其构造函数(新),则不能使用任何变量(例如,参考对象),但是不能使用新变量SqlParameterCollection直接对其进行初始化。它没有公共构造函数,只能从existant的属性中检索SqlCommand

 SqlCommand cmd = new SqlCommand(commandText, connection);
 SqlParameterCollection sp = cmd.Parameters;

我建议将您的InsertData方法更改为接受a,List<SqlParameter>并让其处理将参数添加到SqlCommand执行命令文本的

List<SqlParameter> sp = new List<SqlParameter>()
{
    new SqlParameter() {ParameterName = "@CmpyCode", SqlDbType = SqlDbType.NVarChar, Value= CV.Global.CMPYCODE},
    new SqlParameter() {ParameterName = "@Code", SqlDbType = SqlDbType.NVarChar, Value = codeName},
    new SqlParameter() {ParameterName = "@DisplayCode", SqlDbType = SqlDbType.NVarChar, Value = codeName + "-"},
    new SqlParameter() {ParameterName = "@TotalDigit", SqlDbType = SqlDbType.Int, Value = CV.Global.PARAMTOTALDIGIT}
};
insertData(CV.Sps.SP_INSERT_PARAM_TABLE, sp);

insertData简单地接收SqlParameter的可选列表,并将它们添加到内部SqlCommand参数集合(如果需要)

internal static int insertData(string spName, List<SqlParameter> sp = null)
{
    ....
    if(sp != null)
        cmd.Parameters.AddRange(sp.ToArray());
    ....
}


 类似资料:
  • 我的问题是--如何创建自定义列表视图,而不仅仅是重复一个自定义视图,而是像在Instagram或其他应用程序中,列表包括其他视图,这看起来就像滚动视图和列表视图android其他视图一样,但Roman Guy说“在滚动视图中的列表视图是一种非常糟糕的方式”,我同意这一点,不要相信谷歌使用这种方式... 使用ListView或Recolyer View实现此功能的最佳方法是什么

  • 问题内容: 我有一个源输入 input.txt 我想将这些输入馈入程序,如下所示: 所以我尝试使用 xargs ,但是没有运气。 它给 但我想要 任何的想法? 问题答案: 到目前为止给出的解决方案都无法正确处理包含空格的文件名。如果文件名包含“或”,有些甚至会失败。如果输入文件是由用户生成的,则应该准备好使用令人惊讶的文件名。 GNU Parallel 很好地处理了这些文件名,并为您(至少)提供了

  • 问题内容: 我想在Android中创建带有多列的表格。我看到的大多数示例都是2列。(我是Java和Android的新手。)我需要3-4列,并且应该能够在表中动态添加行。谁能给我提供示例代码。(我在WIN 7中使用Eclipse) 问题答案: 我假设您正在谈论的是TableLayout视图,而不是数据库中的表? 如果是这样,这是一个具有三列三行的表的XML示例。 每个 元素在表中创建一行,并且该元素

  • 我正在创建一个我想经常重用的AnyLogic代理。在许多AnyLogic代理和组件中,有一些空间可以输入代码,如“on receive”、“Action”或“function body”。在构建模型时,这些将被编译到代理中。普通程序员是如何做到这一点的? 例如,假设我有这个代理(显然是伪代码): 客户端可能会使用它如下: 这可能吗?

  • 我看到过许多开发人员发布的问题(Android Studio将2.AAR合并为一个或其他),但我还没有看到一个明确的答复,使我能够创建一个包含一个或多个AAR或jar的AAR(我可以使用jar,因为我不需要共享任何资源;只需要共享类)。以下是我的图书馆项目的应用程序分级: 我读过关于传递依赖的文章,但我找不到一个可以帮助解决我的情况的示例实现。

  • 我需要构建一个API,其中大多数路由都以一个公共URL部分为前缀,该部分也有一个参数。 在我的具体案例中,我的路线需要如下所示: < code >/accounts/:account/resource 1/:some param < code >/accounts/:account/resource 2/:some param/whatever < code >/accounts/:account