C# 如何检查数据库中是否存在输入的表?
我试过用这个代码C# 如何检查数据库中是否存在输入的表?,c#,C#,我试过用这个代码 string tabExist = "IF EXIST ( SELECT [name] FROM sys.table WHERE [name]=" + combCustomerName.Text + "" + ")"; SqlCommand tabExistCmd = new SqlCommand(tabExist, con); tabExistCmd.ExecuteNonQuery(); 它在关键字“SELECT”附近显示异常错误语法。 关键
string tabExist = "IF EXIST ( SELECT [name] FROM sys.table WHERE [name]=" + combCustomerName.Text + "" + ")";
SqlCommand tabExistCmd = new SqlCommand(tabExist, con);
tabExistCmd.ExecuteNonQuery();
它在关键字“SELECT”附近显示异常错误语法。
关键字“table”附近的语法不正确
请帮我解决这个问题。您可能只需要写下名称,并在查询中使用参数,而不是明文连接 您要使用此选项:
IF OBJECT_ID(N'tablenamehere') IS NOT NULL [whatever else you want to do here]
试试这个
string tabExist = "IF EXIST ( SELECT * FROM sys.Tables WHERE TABLE_NAME =" + combCustomerName.Text +")";
SqlCommand tabExistCmd = new SqlCommand(tabExist, con);
tabExistCmd.ExecuteNonQuery();
试试这个
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
此外,您确实不应该对参数进行串联,而应该在命令对象中使用占位符和参数。您是否试图在此处返回布尔值?或者测试是否存在,然后在一个查询中执行其他操作?如果表存在,我希望打印为表存在