如何在C#程序中执行存储过程

13 浏览
0 Comments

如何在C#程序中执行存储过程

我想从一个C#程序中执行这个存储过程。\n我在一个SqlServer查询窗口中编写了以下存储过程,并将其保存为stored1:\n

use master 
go
create procedure dbo.test as
DECLARE @command as varchar(1000), @i int
SET @i = 0
WHILE @i < 5
BEGIN
Print 'I VALUE ' +CONVERT(varchar(20),@i)
EXEC(@command)
SET @i = @i + 1
END

\n编辑:\n

using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.SqlClient;
namespace AutomationApp
{
    class Program
    {
        public void RunStoredProc()
        {
            SqlConnection conn = null;
            SqlDataReader rdr  = null;
            Console.WriteLine("\nTop 10 Most Expensive Products:\n");
            try
            {
                conn = new SqlConnection("Server=(local);DataBase=master;Integrated Security=SSPI");
                conn.Open();
                SqlCommand cmd = new SqlCommand("dbo.test", conn);
                cmd.CommandType = CommandType.StoredProcedure;
                rdr = cmd.ExecuteReader();
                /*while (rdr.Read())
                {
                    Console.WriteLine(
                        "Product: {0,-25} Price: ${1,6:####.00}",
                        rdr["TenMostExpensiveProducts"],
                        rdr["UnitPrice"]);
                }*/
            }
            finally
            {
                if (conn != null)
                {
                    conn.Close();
                }
                if (rdr != null)
                {
                    rdr.Close();
                }
            }
        }
        static void Main(string[] args)
        {
            Console.WriteLine("Hello World");
            Program p= new Program();
            p.RunStoredProc();      
            Console.Read();
        }
    }
}

\n这会显示异常找不到存储过程dbo.test。我需要提供路径吗?如果是,存储过程应该存储在哪个位置?

0
0 Comments

在C#程序中执行存储过程的方法是通过使用SqlCommand类和SqlConnection类来实现的。存储过程是在数据库中预先定义好的一组SQL语句,可以通过执行存储过程来实现特定的功能。

以上的代码片段展示了如何在C#程序中调用存储过程。首先,我们创建一个SqlCommand对象并指定要执行的存储过程的名称。然后,我们设置SqlCommand对象的CommandType属性为StoredProcedure,以指示要执行的是一个存储过程。接下来,我们可以通过调用Parameters集合的AddWithValue方法来添加存储过程的参数。在这个例子中,我们将参数的值设置为txtValue.Text的值。然后,我们打开数据库连接,并调用ExecuteNonQuery方法来执行存储过程。执行结果将返回一个整数值,表示受影响的行数。最后,我们关闭数据库连接。

通过以上的代码,我们可以在C#程序中轻松地执行存储过程。这种方法适用于需要执行存储过程并获取执行结果的情况。使用存储过程可以提高数据库操作的效率和安全性,减少重复的代码编写工作。在实际开发中,我们可以根据具体的需求来调用不同的存储过程,并传递相应的参数。

,通过使用SqlCommand类和SqlConnection类,我们可以在C#程序中执行存储过程。以上的代码片段展示了如何调用存储过程,并获取执行结果。这种方法可以方便地执行数据库操作,并提高开发效率和代码的重用性。

0
0 Comments

如何在C#程序中执行存储过程

在C#程序中执行存储过程的原因是为了能够调用数据库中的存储过程,并获得返回的结果。下面是一种在C#程序中执行存储过程的方法:

using (SqlConnection conn = new SqlConnection("Server=(local);DataBase=Northwind;Integrated Security=SSPI")) {
    conn.Open();
    // 1. 创建一个命令对象,指定要调用的存储过程
    SqlCommand cmd  = new SqlCommand("CustOrderHist", conn);
    // 2. 设置命令对象的类型为存储过程
    cmd.CommandType = CommandType.StoredProcedure;
    // 3. 添加参数到命令对象,这些参数将传递给存储过程
    cmd.Parameters.Add(new SqlParameter("", custId));
    // 执行命令
    using (SqlDataReader rdr = cmd.ExecuteReader()) {
        // 遍历结果,将每个结果打印到控制台
        while (rdr.Read())
        {
            Console.WriteLine("Product: {0,-35} Total: {1,2}",rdr["ProductName"],rdr["Total"]);
        }
    }
}

上述代码中,使用了`SqlConnection`、`SqlCommand`和`SqlDataReader`来执行存储过程。首先,使用`SqlConnection`创建一个连接到数据库的实例,并指定数据库的连接字符串。然后,创建一个`SqlCommand`对象,指定要调用的存储过程的名称,并将其类型设置为存储过程。接下来,可以通过`Parameters`属性向存储过程传递参数。最后,使用`ExecuteReader`方法执行命令,并通过`SqlDataReader`遍历结果。

另外,还有一些有关ADO.NET和C#的链接可以参考,这些链接提供了更多关于在C#程序中执行存储过程的信息:

- [http://www.csharp-station.com/Tutorials/AdoDotNet/Lesson07.aspx](http://www.csharp-station.com/Tutorials/AdoDotNet/Lesson07.aspx)

- [http://www.c-sharpcorner.com/UploadFile/dclark/InsOutsinCS11302005072332AM/InsOutsinCS.aspx](http://www.c-sharpcorner.com/UploadFile/dclark/InsOutsinCS11302005072332AM/InsOutsinCS.aspx)

- [http://www.codeproject.com/KB/cs/simplecodeasp.aspx](http://www.codeproject.com/KB/cs/simplecodeasp.aspx)

- [http://msdn.microsoft.com/en-us/library/ms171921(VS.80).aspx](http://msdn.microsoft.com/en-us/library/ms171921(VS.80).aspx)

在编写代码时,建议使用`using`关键字。将`SqlCommand`放入`using`语句块中可以帮助清理资源。

`SqlCommand`类的定义为:`public sealed class SqlCommand : System.Data.Common.DbCommand, ICloneable, IDisposable`。将其放入`using`语句块中将有助于清理资源。

0
0 Comments

如何在C#程序中执行存储过程

在C#程序中执行存储过程是一个常见的需求。下面的代码展示了如何在C#程序中执行存储过程:

using (var conn = new SqlConnection(connectionString))
using (var command = new SqlCommand("ProcedureName", conn) { 
                           CommandType = CommandType.StoredProcedure }) {
   conn.Open();
   command.ExecuteNonQuery();
}

这段代码中,我们使用了`SqlConnection`和`SqlCommand`类来与数据库进行连接和执行存储过程。首先,我们创建了一个`SqlConnection`对象,并传入数据库连接字符串作为参数。然后,我们创建了一个`SqlCommand`对象,并将存储过程的名称作为参数传入。我们还将`CommandType`属性设置为`CommandType.StoredProcedure`,以指示该命令是一个存储过程。

接下来,我们打开数据库连接,并调用`ExecuteNonQuery`方法来执行存储过程。这个方法会返回受影响的行数,但在执行存储过程时,通常我们不关心返回值,所以可以忽略它。

在代码中,我们使用了`using`语句来确保在使用完`SqlConnection`和`SqlCommand`对象后,它们会被正确地释放和关闭。这是一种良好的编程实践,可以避免资源泄露和内存泄漏。

此外,代码中还提到了如何处理存储过程的参数。如果存储过程需要参数,我们只需要将参数添加到`SqlCommand`对象的`Parameters`集合中,参数的名称和类型应与存储过程定义的参数一致。

总结起来,通过以上代码,我们可以在C#程序中执行存储过程。我们只需要创建一个`SqlConnection`对象和一个`SqlCommand`对象,并使用`ExecuteNonQuery`方法来执行存储过程。如果存储过程需要参数,我们可以使用`Parameters`集合来传递参数值。

希望这篇文章能帮助你理解如何在C#程序中执行存储过程。如果你有任何问题或疑问,请随时提问。

0