sql服务器-“;sqlexception找不到存储过程“-C#在不带参数的SqlServer中执行存储过程

本文关键字:存储过程 参数 SqlServer 执行 -C# 服务器 sqlexception sql 找不到 | 更新日期: 2023-09-27 18:00:11

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

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。

sql服务器-“;sqlexception找不到存储过程“-C#在不带参数的SqlServer中执行存储过程

更新

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

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

它就像一个符咒。感谢任何帮助我的人。