You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在C#中根据用户输入搜索数据库中名称完全匹配的数据表?

在C#中根据输入查找数据库中完全匹配的数据表

可以通过查询数据库的系统信息视图来实现,以下是针对常见数据库的具体实现方式:

SQL Server 实现示例

利用INFORMATION_SCHEMA.TABLES系统视图查询表名,通过参数化查询避免注入风险:

using System.Data.SqlClient;

public bool DoesTableExistSqlServer(string connectionString, string tableName)
{
    const string query = @"
        SELECT COUNT(*) 
        FROM INFORMATION_SCHEMA.TABLES 
        WHERE TABLE_NAME = @TableName 
        AND TABLE_TYPE = 'BASE TABLE'"; // 仅查找用户表,排除视图等

    using (var connection = new SqlConnection(connectionString))
    {
        using (var command = new SqlCommand(query, connection))
        {
            command.Parameters.AddWithValue("@TableName", tableName);
            connection.Open();
            int count = (int)command.ExecuteScalar();
            return count > 0;
        }
    }
}

MySQL 实现示例

同样查询INFORMATION_SCHEMA.TABLES,需要指定目标数据库名:

using MySql.Data.MySqlClient;

public bool DoesTableExistMySql(string connectionString, string tableName)
{
    const string query = @"
        SELECT COUNT(*) 
        FROM INFORMATION_SCHEMA.TABLES 
        WHERE TABLE_SCHEMA = DATABASE() 
        AND TABLE_NAME = @TableName";

    using (var connection = new MySqlConnection(connectionString))
    {
        using (var command = new MySqlCommand(query, connection))
        {
            command.Parameters.AddWithValue("@TableName", tableName);
            connection.Open();
            long count = (long)command.ExecuteScalar();
            return count > 0;
        }
    }
}

注意事项

  • SQL注入防护:必须使用参数化查询,绝对不能直接拼接用户输入到SQL语句中。
  • 大小写敏感性:不同数据库的表名大小写规则不同,比如SQL Server默认不区分,MySQL在Linux环境下默认区分,若需要严格匹配需对应调整数据库设置或查询逻辑。
  • 权限要求:执行查询的数据库账号需要有读取INFORMATION_SCHEMA的权限。

内容的提问来源于stack exchange,提问作者Danielplayz21

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 09:20:30