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

时间:2014-03-26 13:45:40

标签: c#

我尝试使用此代码..

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

显示异常关键字'SELECT'附近的语法不正确。 关键字“table”附近的语法不正确。

帮我解决一下。

5 个答案:

答案 0 :(得分:1)

试试这个

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

你想用这个:

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

答案 3 :(得分:0)

试试这个..

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
        }

答案 4 :(得分:0)

谓词被称为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

另外,你真的不应该对参数进行连接,而是在命令对象中使用占位符和参数。