Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# C程序不执行存储过程_C#_Sql Server_Stored Procedures_Ado.net - Fatal编程技术网

C# C程序不执行存储过程

C# C程序不执行存储过程,c#,sql-server,stored-procedures,ado.net,C#,Sql Server,Stored Procedures,Ado.net,我想从C#在Azure SQL Server上运行我的存储过程,但它不起作用,我不知道如何找出原因。存储过程有两个输入参数,并基于这些参数将信息插入表中。因此,我可以在表中查看是否有新条目(SP是否工作) 将SQL Server中的我的SP用作 exec Commentary.Add_Information @ID = 34926, @year = '2020' 效果绝对不错。但是从c#执行它不会在表中创建条目 public void CreateBasicInformation() {

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

将SQL Server中的我的SP用作

exec Commentary.Add_Information @ID = 34926, @year = '2020'  
效果绝对不错。但是从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);
    }
}
我已经尝试捕捉错误,但没有。最后我得到的只是

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


代码中是否有错误,或者我是否有办法找出C#和SP不在一起工作的原因?

如果您没有实际执行命令,则需要添加以下行:

还强烈建议使用以下工具:

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


您没有执行您的命令:

试一试


您的
ExecuteNonQuery()
ExecuteReader()
,etc命令在哪里?请注意,您应该也在这里使用
,这里使用
。看起来您在exec代码中传递了一个数字,在这里传递了一个字符串cmd.Parameters.AddWithValue(@ID”,“34926”);想你了一会儿:)使用上的好地方,因为接近不足以正确处理对象。这里有一个很好的解释:就是这样。使用不支持捕获异常,这就是我使用它的原因。但我读了更多关于它的内容,并改回使用它。谢谢!
cmd.ExecuteNonQuery();
cn.Close();
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");
        // Execute and get rows affected count. 
       var rowsAffected = cmd.ExecuteNonQuery();
        cn.Close();
    }
    catch (SqlException sqlEx)
    {
        Console.WriteLine(sqlEx.Message);
    }
    catch (Exception ex)
    {
        Console.WriteLine(ex.Message);
    }
}