C# 命令?您是否调试过该命令以查看tableName实际上是什么?执行此操作并返回报告表的名称以及作为tableName传递的内容。如果只需要列,请添加一个WHERE 1=0。您显然不需要任何行,那么为什么要获取它们呢?添加了我的答案,您可以尝试一下吗?我认为

C# 命令?您是否调试过该命令以查看tableName实际上是什么?执行此操作并返回报告表的名称以及作为tableName传递的内容。如果只需要列,请添加一个WHERE 1=0。您显然不需要任何行,那么为什么要获取它们呢?添加了我的答案,您可以尝试一下吗?我认为,c#,asp.net,sql-server,C#,Asp.net,Sql Server,命令?您是否调试过该命令以查看tableName实际上是什么?执行此操作并返回报告表的名称以及作为tableName传递的内容。如果只需要列,请添加一个WHERE 1=0。您显然不需要任何行,那么为什么要获取它们呢?添加了我的答案,您可以尝试一下吗?我认为查询中没有错误。你能发布函数详细信息吗,这是GetSqlStringCommand?这与从“+tableName中选择*相同,为什么你认为这会有帮助?@vasily.sib-但它更清晰,我添加了代码来检查tableName是否为空,我非常怀疑是



命令?您是否调试过该命令以查看
tableName
实际上是什么?执行此操作并返回报告表的名称以及作为
tableName
传递的内容。如果只需要列,请添加一个WHERE 1=0。您显然不需要任何行,那么为什么要获取它们呢?添加了我的答案,您可以尝试一下吗?我认为查询中没有错误。你能发布函数详细信息吗,这是GetSqlStringCommand?这与从“+tableName中选择*相同,为什么你认为这会有帮助?@vasily.sib-但它更清晰,我添加了代码来检查tableName是否为空,我非常怀疑
是否更清晰。检查是否为空是没有意义的<代码>“某些字符串”+string.Empty
“某些字符串”+null
$“某些字符串{null}”
将产生相同的结果string@vasily.sib-您是正确的,但如果您发送“select*from(空字符串中无值)”,则sql会给出错误,根据OP在中给出的错误,这也是问题的原因question@vasily.sib-根据此
靠近“FROM”的语法不正确。
如果没有给出表值或表值包含错误输入,则可能会导致错误。这与
“SELECT*FROM”+tableName
相同,您认为这有什么帮助?@vasily.sib-但是它更清晰,我添加了代码来检查tableName是否为空,我非常怀疑
是否更清晰。检查是否为空是没有意义的<代码>“某些字符串”+string.Empty
“某些字符串”+null
$“某些字符串{null}”
将产生相同的结果string@vasily.sib-您是正确的,但如果您发送“select*from(空字符串中无值)”,则sql会给出错误,根据OP在中给出的错误,这也是问题的原因question@vasily.sib-根据此
靠近“FROM”的语法不正确。
如果没有给出表值,可能会导致错误,或者表值包含错误输入
public List<string> GetTableColumns(string tableName)
{
    List<string> colCollection = new List<string>();

    IDataReader reader = null;

    using (var cmd = MyDB.GetSqlStringCommand("SELECT * FROM " + tableName))
    {
        using (reader = MyDB.ExecuteReader(cmd))
        {
            foreach (DataRow r in reader.GetSchemaTable().Rows)
            {
                colCollection.Add(r["ColumnName"].ToString());
            }

            reader.Close();
        }
    }

    return colCollection;
}
 public List<string> GetTableColumns(string tableName)
 {
   if(!String.IsNullOrWhiteSpace(tableName))
   {
    string query = string.Format( "SELECT * FROM  [{0}]",tableName);
    // or use string interpolation
    string query = $"SELECT * FROM [{tableName}]";
    //rest of the code execute reader  
    //return collection of string   
   }
   return new List<string>();
  }
public List<string> GetTableColumns(string tableName)
{
    if (tableName == null)
        throw new ArgumentNullException(nameof(tableName));
    if (string.IsNullOrWhitespace(tableName))
        throw new ArgumentException("Table name can't be empty!", nameof(tableName));

    List<string> colCollection = new List<string>();

    using (var cmd = MyDB.GetSqlStringCommand($"SELECT * FROM {tableName}"))
    using (var reader = MyDB.ExecuteReader(cmd))
        foreach (DataRow r in reader.GetSchemaTable().Rows)
            colCollection.Add(r["ColumnName"].ToString());

    return colCollection;
}