【问题标题】:Check If View Exists检查视图是否存在
【发布时间】:2014-06-08 19:00:45
【问题描述】:

我想通过我的 windows 窗体以编程方式检查视图是否存在,如果存在,则删除它。我知道如何在 SQL Server 中执行此操作,但之前从未在 C# 中尝试过。我正在使用这种语法,但不能完全弄清楚它的 exat 语法(或者它是否正确)。

using (var command1 = connection.CreateCommand())
{
  command1.CommandText = "If Object_ID('ServerName.dbo.ViewName', 'V') IS NOT NULL DROP VIEW 'ServerName.dbo.ViewName'
}

【问题讨论】:

    标签: c# sql-view sql-delete


    【解决方案1】:

    您为什么不查询sys.views 目录视图。代码如下:sn-p。

    bool exists;
    var cmd = new OdbcCommand(
      "select case when exists((select * from sys.views where name ='" + 
      viewName + "')) then 1 else 0 end");
    exists = (int)cmd.ExecuteScalar() == 1;
    

    【讨论】:

    • 此语法在遇到 (int)cmd.ExecuteScalar() == 1; 时给我一个“无效的对象名称 SYS.Views”错误。行
    【解决方案2】:

    如果从 C# 中作为命令执行,为什么 sql 命令会有所不同?

    以下应该有效:

    using (var command1 = connection.CreateCommand())
    {
      command1.CommandText = "IF EXISTS(select * from INFORMATION_SCHEMA.VIEWS where TABLE_SCHEMA = 'dbo' and TABLE_NAME = 'ViewName') DROP VIEW dbo.ViewName";
      //todo: execute command, etc...
    }
    

    【讨论】:

      【解决方案3】:

      只需要执行命令

      using (var sqlconnection = new SqlConnection())
      {
          using (var command = sqlconnection.CreateCommand())
          {
               command.CommandText = "If Object_ID('ServerName.dbo.ViewName', 'V') IS NOT NULL DROP VIEW 'ServerName.dbo.ViewName'";
               command.ExecuteNonQuery();
           }
       }
      

      【讨论】:

        猜你喜欢
        • 2020-03-02
        • 2023-03-23
        • 1970-01-01
        • 2011-07-12
        • 2021-09-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多