" sqlexception找不到存储过程" - C#在没有参数的

时间:2015-06-29 08:02:22

标签: c# sql-server stored-procedures

现在我有这个方法来执行存储过程:

public static DataTable ExecuteProcedureNoParams(string connectionStringName, string procedureName)
    {
        using (DbCommand sprocCmd = SqlDB(connectionStringName).GetStoredProcCommand(procedureName))
        {
            DataTable dt = new DataTable();
            using (IDataReader sprocReader = SqlDB(connectionStringName).ExecuteReader(sprocCmd))
            {
                dt.Load(sprocReader);
                // DisplayRowValues(sprocReader);
            }

            return dt;

        }
    }

private static SqlDatabase sqlDB;

    public static SqlDatabase SqlDB(string connectionString)
    {
        if (sqlDB == null)
        {
            sqlDB = CreateConnection(connectionString);
        }
        return sqlDB;
    }

    private static SqlDatabase CreateConnection(string connectionString)
    {
        DatabaseProviderFactory factory = new DatabaseProviderFactory();

        if (string.IsNullOrWhiteSpace(connectionString))
        {
            // Create the default Database object from the factory.
            // The actual concrete type is determined by the configuration settings.
            return factory.CreateDefault() as SqlDatabase;
        }
        else
        {
            // Create a Database object from the factory using the connection string name.
            return factory.Create(connectionString) as SqlDatabase;
        }

    }

现在,我得到的错误是找不到我的商店程序(" sqlexception无法找到存储过程")。 我测试了Web配置中的连接字符串,它也正常工作。

在IDataReader调用中失败。

可以请任何人帮我解决这个问题吗?

P.S。 - 我试图创建一个执行存储过程的方法,而不给它任何参数并将其作为DataTable检索。

1 个答案:

答案 0 :(得分:1)

<强>更新

我设法解决了这个问题。 问题出在SqlDatabase sqlDB; 它保存了一个旧的连接字符串,我只需要更新构造函数,如下所示:

 public static SqlDatabase SqlDB(string connectionString)
    {
        if (sqlDB == null || sqlDB.ConnectionString != connectionString)
        {
            sqlDB = CreateConnection(connectionString);
        }
        return sqlDB;
    }

它就像一个魅力。 感谢任何帮助过我的人。