c# - 如果表存在,则返回 bool 值的 SQL Server 存储过程,c# 实现

标签 c# sql-server stored-procedures

我创建了一个存储过程,它接受一个参数,一个表的名称,如果它存在于数据库中则返回 1,否则返回 0。在 SQL Server Management Studio 测试中,我的存储过程完全按照我希望的方式工作,但是我无法获取该值以用于我的 C# 程序。

我的选项似乎是 ExecuteScalar()ExecuteNonQuery()ExecuteReader(),它们似乎都不适合该任务,我什至不能让他们检索我的存储过程的结果。

我已经尝试用 cmd.Parameters.AddWithValuecmd.Parameters.Add 再次分配我的参数,但无济于事。

最佳答案

假设您有一个这样的存储过程,它选择 0(表不存在)或 1(表存在)

CREATE PROCEDURE dbo.DoesTableExist (@TableName NVARCHAR(100))
AS 
BEGIN
    IF EXISTS (SELECT * FROM sys.tables WHERE Name = @TableName)
        SELECT 1
    ELSE
        SELECT 0  
END

然后您可以编写此 C# 代码来获取值 - 使用 .ExecuteScalar() 因为您只需要单行、单列:

// set up connection and command
using (SqlConnection conn = new SqlConnection("your-connection-string-here"))
using (SqlCommand cmd = new SqlCommand("dbo.DoesTableExist", conn))
{
    // define command to be stored procedure
    cmd.CommandType = CommandType.StoredProcedure;

    // add parameter
    cmd.Parameters.Add("@TableName", SqlDbType.NVarChar, 100).Value = "your-table-name-here";

    // open connection, execute command, close connection
    conn.Open();
    int result = (int)cmd.ExecuteScalar();
    conn.Close();
}

现在 result 将包含 0(如果表不存在)或 1(如果存在)。

关于c# - 如果表存在,则返回 bool 值的 SQL Server 存储过程,c# 实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17819610/

相关文章:

sql-server - SQL Server 是否缓存 View 的执行计划?

sql-server - 我的日志文件太大

sql - 如何为这个 SQL 查询创建单一的 where 条件?

oracle - 如何在oracle 10g 中为存储过程创建错误日志?

stored-procedures - 存储过程的 SQL Server 堆栈跟踪

c# - 使用事件目录 API DirectoryEntry 进行身份验证

c# - 统一获取对象的位置,最多小数点后三位

mysql - 尽管数据看似合适,但插入时为 "String or binary data would be truncated"

c# - 如何在c#中保存和加载textBox字体?

c# - 开始使用 ASP.NET