C#程序不执行存储过程

rue*_*edi 3 c# sql-server ado.net stored-procedures

我想从 C# 在 Azure SQL-Server 上运行我的存储过程,但它不起作用,我不知道如何找出原因。该存储过程有两个输入参数并根据这些信息插入一个表。所以我可以在表中看到是否有新条目(SP 是否有效)。

在 SQL-Server 中使用我的 SP 作为

exec Commentary.Add_Information @ID = 34926, @year = '2020'  
Run Code Online (Sandbox Code Playgroud)

工作得很好。但是从 c# 执行它不会在表中创建一个条目

public void CreateBasicInformation()
{
    SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder();
    builder.DataSource = "myServer.database.windows.net";
    builder.UserID = "admin";
    builder.Password = "myPass";
    builder.InitialCatalog = "myDB";

    try
    {
        SqlConnection cn = new SqlConnection(builder.ConnectionString);
        cn.Open();
        SqlCommand cmd = new SqlCommand("Add_Information", cn);
        cmd.CommandType = CommandType.StoredProcedure;
        cmd.Parameters.AddWithValue("@ID", "34926");
        cmd.Parameters.AddWithValue("@year", "2020");
        cn.Close();
    }
    catch (SqlException sqlEx)
    {
        Console.WriteLine(sqlEx.Message);
    }
    catch (Exception ex)
    {
        Console.WriteLine(ex.Message);
    }
}
Run Code Online (Sandbox Code Playgroud)

我已经尝试捕捉错误,但没有。我最后得到的是

程序“[9480] test_SP.exe”已退出,代码为 0 (0x0)。

代码中是否有错误,或者有什么方法可以找出 C# 和 SP 无法协同工作的原因?

Sal*_*ari 7

您实际上并没有执行您的命令,您需要添加以下行来执行它:

cmd.ExecuteNonQuery();
cn.Close();
Run Code Online (Sandbox Code Playgroud)

还强烈建议使用Using statement当今的:

using 语句的目的是提供一种更简单的方法来指定程序何时需要非托管资源,何时不再需要它。