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。
更新
我设法解决了这个问题。问题出在SqlDatabase sqlDB;
上它保存了一个旧的连接字符串,我只需要一个来更新构造函数,如下所示:
public static SqlDatabase SqlDB(string connectionString)
{
if (sqlDB == null || sqlDB.ConnectionString != connectionString)
{
sqlDB = CreateConnection(connectionString);
}
return sqlDB;
}
它就像一个符咒。感谢任何帮助我的人。