如何检查输入的表在数据库中是否存在
本文关键字:数据库 存在 是否 输入 何检查 检查 | 更新日期: 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
。
另外,您确实不应该对参数进行连接,而应该将占位符和参数与命令对象一起使用。