如何检查输入的表在数据库中是否存在

本文关键字:数据库 存在 是否 输入 何检查 检查 | 更新日期: 2023-09-27 17:53:46

我试过这个代码…

string tabExist = "IF EXIST ( SELECT [name] FROM sys.table WHERE [name]=" + combCustomerName.Text + "" + ")";
        SqlCommand tabExistCmd = new SqlCommand(tabExist, con);
        tabExistCmd.ExecuteNonQuery();

在关键字'SELECT'附近显示异常语法错误。关键字'table'附近语法错误。

帮我解决这个问题

如何检查输入的表在数据库中是否存在

试试这个

string tabExist = "IF EXIST ( SELECT * FROM sys.Tables WHERE TABLE_NAME =" + combCustomerName.Text +")";
    SqlCommand tabExistCmd = new SqlCommand(tabExist, con);
    tabExistCmd.ExecuteNonQuery();

您可能只需要写name,并且在您的查询中使用参数,而不是使用文本连接。

你想用这个:

IF OBJECT_ID(N'tablenamehere') IS NOT NULL [whatever else you want to do here]

试试这个…

string tabExist = "IF EXIST ( SELECT count(*) FROM sys.Tables WHERE TABLE_NAME =" + combCustomerName.Text +")";
        SqlCommand tabExistCmd = new SqlCommand(tabExist, con);
        if((int)tabExistCmd.ExecuteScalar()>0)
        {
          //Table Exist
        }
        else
        {
          //Table does not exist
        }

谓词称为EXISTS,您测试的表/视图称为sys.tables,最后需要引用名称,因此请尝试:

string tabExist = "IF EXISTS ( SELECT [name] FROM sys.tables WHERE [name] = '" + combCustomerName.Text + "')";

你的查询也是不完整的,因为它说如果条件成立你想做某事,但你从来没有说要做什么。一个有效的查询应该使用这样的形式:

IF EXISTS ( SELECT [name] FROM sys.tables WHERE [name]='Orders') SELECT 'TRUE' AS Status

如果表存在,则返回字符串值TRUE

另外,您确实不应该对参数进行连接,而应该将占位符和参数与命令对象一起使用。