Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# SqlParameterCollection仅接受非空的SqlParameter类型对象,而不接受IDbDataParameter[]对象_C#_.net - Fatal编程技术网

C# SqlParameterCollection仅接受非空的SqlParameter类型对象,而不接受IDbDataParameter[]对象

C# SqlParameterCollection仅接受非空的SqlParameter类型对象,而不接受IDbDataParameter[]对象,c#,.net,C#,.net,我有一种将数据插入数据库的方法: 更新前 public DataSet Get(WorkEntry t, string callingPage, string operation) { // Start the Insert Update Method IDbDataParameter[] param = null; DataSet returnValue = null; try { param = CreateParams(t, c

我有一种将数据插入数据库的方法: 更新前

public DataSet Get(WorkEntry t, string callingPage, string operation)
{ 
    // Start the Insert Update Method
    IDbDataParameter[] param = null;

    DataSet returnValue = null;

    try
    {
        param = CreateParams(t, callingPage, operation);

        param[0].Value = t.AutoID;
        param[1].Value = t.OperatorName;
        param[2].Value = t.Date;
        param[3].Value = t.StartDate;
        param[4].Value = t.EndDate;

        SqlConnection sqlConnection = new SqlConnection(ConfigurationManager.AppSettings["ConnectionString"].ToString());
        sqlConnection.Open();
        SqlCommand command = sqlConnection.CreateCommand();
        command.CommandType = System.Data.CommandType.StoredProcedure;
        command.CommandText = "spWorkEntry";
        command.Parameters.Add(param);

        da_G = new SqlDataAdapter(command);
        cmdB_G = new SqlCommandBuilder(da_G);
        da_G.Fill(returnValue);

        return returnValue;
    }
    catch (Exception ex)
    {
        throw ex;
    }
    finally
    {
        param = null;
        command.Parameters.Clear();
    }
}// End the Insert Update Method
 // Get-----------------------------------------------------------------------------------------
        public DataSet Get(WorkEntry t, string callingPage, string operation)
        { // Start the Insert Update Method
            SqlParameter[] param = null;
            DataSet returnValue = null;
            try
            {
                param = (SqlParameter[])CreateParams(t, callingPage, operation);

                param[0].Value = t.AutoID;
                param[1].Value = "sdf";
                param[2].Value = t.Date;
                param[3].Value = t.StartDate;
                param[4].Value = t.EndDate;


                SqlConnection sqlConnection = new SqlConnection(ConfigurationManager.AppSettings["ConnectionString"].ToString());
                sqlConnection.Open();
                SqlCommand command = sqlConnection.CreateCommand();
                command.CommandType = System.Data.CommandType.StoredProcedure;
                command.CommandText = "spWorkEntry";
                command.Parameters.Add(param);

                da_G = new SqlDataAdapter(command);
                cmdB_G = new SqlCommandBuilder(da_G);
                da_G.Fill(returnValue);

                return returnValue;

            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                param = null;
                command.Parameters.Clear();

            }
        }// End the Insert Update Method
        // Get End -----------------------------------------------------------------------------------------
----------------------------------- 更新后

public DataSet Get(WorkEntry t, string callingPage, string operation)
{ 
    // Start the Insert Update Method
    IDbDataParameter[] param = null;

    DataSet returnValue = null;

    try
    {
        param = CreateParams(t, callingPage, operation);

        param[0].Value = t.AutoID;
        param[1].Value = t.OperatorName;
        param[2].Value = t.Date;
        param[3].Value = t.StartDate;
        param[4].Value = t.EndDate;

        SqlConnection sqlConnection = new SqlConnection(ConfigurationManager.AppSettings["ConnectionString"].ToString());
        sqlConnection.Open();
        SqlCommand command = sqlConnection.CreateCommand();
        command.CommandType = System.Data.CommandType.StoredProcedure;
        command.CommandText = "spWorkEntry";
        command.Parameters.Add(param);

        da_G = new SqlDataAdapter(command);
        cmdB_G = new SqlCommandBuilder(da_G);
        da_G.Fill(returnValue);

        return returnValue;
    }
    catch (Exception ex)
    {
        throw ex;
    }
    finally
    {
        param = null;
        command.Parameters.Clear();
    }
}// End the Insert Update Method
 // Get-----------------------------------------------------------------------------------------
        public DataSet Get(WorkEntry t, string callingPage, string operation)
        { // Start the Insert Update Method
            SqlParameter[] param = null;
            DataSet returnValue = null;
            try
            {
                param = (SqlParameter[])CreateParams(t, callingPage, operation);

                param[0].Value = t.AutoID;
                param[1].Value = "sdf";
                param[2].Value = t.Date;
                param[3].Value = t.StartDate;
                param[4].Value = t.EndDate;


                SqlConnection sqlConnection = new SqlConnection(ConfigurationManager.AppSettings["ConnectionString"].ToString());
                sqlConnection.Open();
                SqlCommand command = sqlConnection.CreateCommand();
                command.CommandType = System.Data.CommandType.StoredProcedure;
                command.CommandText = "spWorkEntry";
                command.Parameters.Add(param);

                da_G = new SqlDataAdapter(command);
                cmdB_G = new SqlCommandBuilder(da_G);
                da_G.Fill(returnValue);

                return returnValue;

            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                param = null;
                command.Parameters.Clear();

            }
        }// End the Insert Update Method
        // Get End -----------------------------------------------------------------------------------------
此行上发生错误:

command.Parameters.Add(param); 
Param是
IDbDataParameter[]
的数组&数组中的值如下所示:

param[0].Value = 123;
param[1].Value = "asdf";
param[2].Value = "sdfs";
param[3].Value = "sdfsdf";
param[4].Value = "sdfsdf";

然后错误也会发生,因为param应该不可为null。

没有将数组作为参数的
Add()
重载。这种编译的唯一原因是因为存在一个重载,它接受一个
对象
。quick将显示一个
AddRange
方法,该方法将接受
SqlParameter
数组。因此,您应该将数组类型设置为
SqlParameter[]
,而不是
IDBDataParameter[]
,或者在有其他代码使用它并依赖该接口时强制转换它

更改了你告诉我的代码,然后也出现了相同的错误,请检查更新的代码question@HardikParmar,
AddRange()
,而不是
Add()
。当类型可以接受数组时,这是.Net中的常见模式-查找
AddRange
方法。