这是我上一个问题(C# Using Parameters in SqlHelper.DB)的新问题。如果我将 null 作为参数传递并将命令文本设置为无参数存储过程,则它可以正常工作。
SQLHelper.DB 正在执行存储过程,但出现错误:
未处理的异常:System.Data.SqlClient.SqlException:过程或函数“sptest”需要参数“@param1”,但未提供。
这可以通过创建一个新的 .NET 4.7.2 控制台应用程序并安装 Nuget 包 SQLHelper.DB 然后使用下面的代码来重新创建。
控制台应用程序代码:
using Microsoft.Extensions.Configuration;
using SQLHelperDB;
using SQLHelperDB.HelperClasses;
using SQLHelperDB.HelperClasses.Interfaces;
using System.Data;
using System.Data.SqlClient;
namespace ConsoleApp2
{
class Program
{
static void Main(string[] args)
{
TestSql();
}
static void TestSql()
{
IParameter[] p = new IParameter[]
{
new Parameter<string>("@param1", "test1"),
new Parameter<string>("@param2", "test2")
};
IConfigurationRoot Configuration = new ConfigurationBuilder()
.AddInMemoryCollection()
.Build();
SQLHelper helper = new SQLHelper(Configuration, SqlClientFactory.Instance, "your connection string here");
helper.CreateBatch()
.AddQuery("dbo.sptest", CommandType.StoredProcedure, p)
.Execute();
}
}
}
存储过程:
CREATE PROCEDURE [dbo].[sptest]
(@param1 VARCHAR(10),
@param2 VARCHAR(10))
AS
BEGIN
SET NOCOUNT ON;
INSERT INTO dbo.tbltest (field1, field2)
VALUES (@param1, @param2);
END;
桌子:
CREATE TABLE [dbo].[tbltest]
(
[field1] [VARCHAR](10) NULL,
[field2] [VARCHAR](10) NULL
) ON [PRIMARY]