简体   繁体   English

使用Dapper从C#调用存储过程时遇到问题

[英]Trouble using Dapper to call stored procedure from C#

I am completely new to C#, T-SQL, and Dapper and was trying to execute a stored procedure, but I am getting 我对C#,T-SQL和Dapper完全陌生,并试图执行存储过程,但是我越来越

System.Data.SqlClient.SqlException: Incorrect syntax around 'Josh' System.Data.SqlClient.SqlException:“ Josh”周围的语法不正确

My stored procedure is simply: 我的存储过程很简单:

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

Where josh_testing has two fields of SSN and GPA. 其中josh_testing具有SSN和GPA两个字段。

The C# code is C#代码是

public void InsertPerson(float ssn, float gpa)
{
    using (IDbConnection connection = new System.Data.SqlClient.SqlConnection(Helper.CnnVal("SampleDB")))
    {
        List<new_app> apps = new List<new_app>();
        apps.Add(new new_app { ssn = ssn, gpa = gpa });
        connection.Execute("compName\\Josh.josh_test_insert @ssn, @gpa",apps);
    }
}

Anyone know what I'm missing here? 有人知道我在这里想念的吗?

Just escape the name of the sp as you would do in Management Studio: 就像在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 });
    }
}

And pass the parameters without useless List<> s. 并传递没有无用的List<>的参数。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM