Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在Visual Studio 2019 c-sharp中检索SQL Server 2019表列列表的ExecuteScalar方法的ASCII排序不正确_C#_Sql Server_Ssis_Columnsorting_Executescalar - Fatal编程技术网

C# 在Visual Studio 2019 c-sharp中检索SQL Server 2019表列列表的ExecuteScalar方法的ASCII排序不正确

C# 在Visual Studio 2019 c-sharp中检索SQL Server 2019表列列表的ExecuteScalar方法的ASCII排序不正确,c#,sql-server,ssis,columnsorting,executescalar,C#,Sql Server,Ssis,Columnsorting,Executescalar,我的SQL Server数据库中有一个表,其结构如下: CREATE TABLE [file].[NumeTestINV]( [Category] [nvarchar](255) NULL, [Class] [nvarchar](255) NULL, [Company] [nvarchar](255) NULL, [Division] [nvarchar](255) NULL, [Jan] [float] NULL, [Feb] [float] N

我的SQL Server数据库中有一个表,其结构如下:

CREATE TABLE [file].[NumeTestINV](
    [Category] [nvarchar](255) NULL,
    [Class] [nvarchar](255) NULL,
    [Company] [nvarchar](255) NULL,
    [Division] [nvarchar](255) NULL,
    [Jan] [float] NULL,
    [Feb] [float] NULL,
    [Mar] [float] NULL,
    [Apr] [float] NULL,
    [May] [float] NULL,
    [Jun] [float] NULL,
    [Jul] [float] NULL,
    [Aug] [float] NULL,
    [Sep] [float] NULL,
    [Oct] [float] NULL,
    [Nov] [float] NULL,
    [Dec] [float] NULL
) ON [PRIMARY]
我试图在VisualStudio2019 SSIS脚本任务中通过C代码检索其列列表。我有以下c-sharp代码片段

//Get Matching Column List from SQL Server
string SQLColumnList = "";
SqlCommand cmd = myADONETConnection.CreateCommand();
cmd.CommandText = SQLQueryToGetMatchingColumn;
SQLColumnList = (string)cmd.ExecuteScalar();
MessageBox.Show(" Matching Columns: " + SQLColumnList);
但是,问题是输出的列列表的ASCII排序不正确。我不知道为什么我的SQLColumnList没有按正确的SQL表列顺序显示,而是按如下方式显示

"[Apr],[Aug],[Category],[Class],[Company],[Dec],[Division],[Feb],[Jan],[Jul],[Jun],[Mar],[May],[Nov],[Oct],[Sep]"
我期望得到以下结果:

"[Category],[Class],[Company],[Division],[Jan],[Feb],[Mar],[Apr],[May],[Jun],[Jul],[Aug],[Sep],[Oct],[Nov],[Dec]"
以下是SQLQueryToGetMatchingColumn的代码,我的源代码是一个Excel文件,其列列表与我的物理SQL表的顺序相同:

SQLQueryToGetMatchingColumn = "select STUFF((Select  ',['+Column_Name+']' from Information_schema.Columns where Table_Name='" +
                            TableName + "' and Table_SChema='" + SchemaName + "'" +
                            "and Column_Name in (" + @ExcelHeaderColumn + ") for xml path('')),1,1,'') AS ColumnList";
以下是SQLQueryToGetMatchingColumn的输出:

"select STUFF((Select  ',['+Column_Name+']' from Information_schema.Columns where Table_Name='NumeTestINV' and Table_SChema='file'and Column_Name in ('Category','Class','Company','Division','Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec') for xml path('')),1,1,'') AS ColumnList"
CommandText输出如下所示:

"select STUFF((Select  ',['+Column_Name+']' from Information_schema.Columns where Table_Name='NumeTestINV' and Table_SChema='file'and Column_Name in ('Category','Class','Company','Division','Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec') for xml path('')),1,1,'') AS ColumnList"

我希望这是我的代码片段中的一个小的代码更改,并且我不必完全更改检索SQL列列表的方法。

如果希望列按顺序排列,请尝试以下操作:

select string_agg( quotename(name), ', ') within group (order by columnproperty(c.object_id, c.name, 'ordinal') ) columnList
from sys.columns c
where c.object_id = object_id('[file].[NumeTestINV]')

或者使用旧的XML关联

select STUFF((Select  ','+ quotename(Column_Name) from Information_schema.Columns where Table_Name='NumeTestINV' and Table_SChema='file'and Column_Name in ('Category','Class','Company','Division','Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec') order by ordinal_position for xml path('')),1,1,'') AS ColumnList

如果希望列按顺序排列,请尝试以下操作:

select string_agg( quotename(name), ', ') within group (order by columnproperty(c.object_id, c.name, 'ordinal') ) columnList
from sys.columns c
where c.object_id = object_id('[file].[NumeTestINV]')

或者使用旧的XML关联

select STUFF((Select  ','+ quotename(Column_Name) from Information_schema.Columns where Table_Name='NumeTestINV' and Table_SChema='file'and Column_Name in ('Category','Class','Company','Division','Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec') order by ordinal_position for xml path('')),1,1,'') AS ColumnList

SQLQueryToGetMatchingColumn的代码是什么?CommandText是什么?SQL中的顺序在你的脑海中是一种幻觉,除非你使用的顺序足够完整。没有顺序,SQL可以自由地以任何顺序返回行。您好,Charlieface,SQLQueryToGetMatchingColumn=select stufflelect',['+Column_Name+']'from Information_schema.Columns,其中Table_Name='+TableName+'和Table_schema='+SchemaName+'+和Column_Name in+@ExcelHeaderColumn+中的列作为ColumnList,用于xml路径1,1;Hi jdwend,CommandText=select stufflector',['+Column_Name+']”来自信息模式。列中的表名为'numetestini',表名为'file',列名为'Category','Class','Company','Division','Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'用于xml路径,1,1,作为ColumnList,SQLQueryToGetMatchingColumn的代码是什么?CommandText是什么?SQL中的顺序在您的脑海中是一种幻觉,除非您使用的顺序足够完整。没有顺序,SQL可以自由地以任何顺序返回行。您好,Charlieface,SQLQueryToGetMatchingColumn=select stufflelect',['+Column_Name+']'from Information_schema.Columns,其中Table_Name='+TableName+'和Table_schema='+SchemaName+'+和Column_Name in+@ExcelHeaderColumn+中的列作为ColumnList,用于xml路径1,1;Hi jdwend,CommandText=select stufflector',['+Column_Name+']”来自信息模式。列中的表名为'numetestini',表名为'file',列名为'Category','Class','Company','Division','Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'用于xml路径,1,1,如ColumnListDavid,这正是我要找的!最后,我只是简单地将您建议的“order by ordinal_position”添加到我的SQLQueryToGetMatchingColumn定义中。David,这正是我想要的!最后,我只是简单地将您建议的“order by ordinal_position”添加到我的SQLQueryToGetMatchingColumn定义中。