C# 使用Dapper从C调用存储过程时出现问题#
我对C#、T-SQL和Dapper完全陌生,并且尝试执行一个存储过程,但是我得到了 System.Data.SqlClient.SqlException:围绕“Josh”的语法不正确 我的存储过程很简单:C# 使用Dapper从C调用存储过程时出现问题#,c#,sql-server,dapper,C#,Sql Server,Dapper,我对C#、T-SQL和Dapper完全陌生,并且尝试执行一个存储过程,但是我得到了 System.Data.SqlClient.SqlException:围绕“Josh”的语法不正确 我的存储过程很简单: CREATE PROCEDURE [compName\Josh].[josh_test_insert] @ssn FLOAT, @gpa FLOAT AS BEGIN SET NOCOUNT ON; INSERT INTO [compName\Josh].j
CREATE PROCEDURE [compName\Josh].[josh_test_insert]
@ssn FLOAT,
@gpa FLOAT
AS
BEGIN
SET NOCOUNT ON;
INSERT INTO [compName\Josh].josh_testing
VALUES (@ssn, @gpa);
END
GO
其中josh_测试有两个领域:SSN和GPA
C#代码是
public void InsertPerson(浮动ssn、浮动gpa)
{
使用(IDbConnection connection=new System.Data.SqlClient.SqlConnection(Helper.CnnVal(“SampleDB”))
{
列表应用程序=新列表();
Add(new_app{ssn=ssn,gpa=gpa});
执行(“compName\\Josh.Josh\u test\u insert@ssn,@gpa”,apps);
}
}
有人知道我在这里遗漏了什么吗?就像在Management Studio中一样,只需避开sp的名称:
public void InsertPerson(float ssn, float gpa)
{
using (IDbConnection connection = new System.Data.SqlClient.SqlConnection(Helper.CnnVal("SampleDB")))
{
connection.Execute("EXEC [compName\\Josh].[josh_test_insert] @ssn, @gpa", new { ssn = ssn, gpa = gpa });
}
}
并在没有无用的
列表的情况下传递参数。除了正确转义名称之外,可能还需要设置命令类型,如;。
public void InsertPerson(float ssn, float gpa)
{
using (IDbConnection connection = new System.Data.SqlClient.SqlConnection(Helper.CnnVal("SampleDB")))
{
connection.Execute("EXEC [compName\\Josh].[josh_test_insert] @ssn, @gpa", new { ssn = ssn, gpa = gpa });
}
}