Sql server 从数组中选择列名

Sql server 从数组中选择列名,sql-server,vb.net,Sql Server,Vb.net,我创建了一个字符串数组,用于存储sql server dataTable的选定列名。我想向datagridview显示所选列的记录。我已经创建了一个临时表“dtTable”,由从数组中选择的列名组成。然后,我尝试使用sql“Select”从“dtTable”获取列名,并从主表[参数值]获取记录。请注意,两个表中的列名相同。但主表中的列数更多。datagridview正确显示dtTable列名,但不显示任何记录。我想我的sql命令文本有问题。这是我的密码: ParamName10是存储选定列名的字

我创建了一个字符串数组,用于存储sql server dataTable的选定列名。我想向datagridview显示所选列的记录。我已经创建了一个临时表“dtTable”,由从数组中选择的列名组成。然后,我尝试使用sql“Select”从“dtTable”获取列名,并从主表[参数值]获取记录。请注意,两个表中的列名相同。但主表中的列数更多。datagridview正确显示dtTable列名,但不显示任何记录。我想我的sql命令文本有问题。这是我的密码:

ParamName10是存储选定列名的字符串数组 Dim dtTable作为新数据表 Dim SqlDataAdapter2作为新的SqlDataAdapter 将dr设置为SqlDataReader 对于i=0到9 dtTable.Columns.AddParamNamei,GetTypeString 下一个 Dim connStr As String=Data Source=LocalDB\MSSQLSLOCALDB;AttachDbFilename=|数据目录|\Main Data.mdf;综合安全=真实;连接超时=60 Dim conn作为新的SqlConnectionconnStr 使用conn 康涅狄格州公开赛 SqlDataAdapter2.SelectCommand=cmd1 使用cmd1 cmd1.CommandText=从信息\u SCHEMA.COLUMNS中选择列\u名称 其中TABLE_NAME=N'dtTable' 来自[参数值] 其中[记录ID]>@ParamRowCount 和 [项目ID]=@ProjectID 按[记录ID]ASC订购 cmd1.Connection=conn cmd1.1参数。AddWithValue@ParamRowCount,参数行计数 cmd1.1参数。AddWithValue@ProjectID,投射 dr=cmd1.ExecuteReader 如果dr.HasRows=True,则 dtTable.Loaddr 如果结束 Me.dataGrid.DataSource=dtTable 终端使用 终端使用 克洛斯博士
不要使用你的查询对我来说毫无意义。您正在从名为Parameter Values的表中进行选择,但唯一包含的列是来自名为dtTable的表的数据库元数据的子查询。理论上,子查询应该返回多行,这应该会产生一个错误——只有当该表包含一个不寻常的列时,它才会工作。因此,我建议您重新开始并讨论您的目标。我只想获得用户选择的那些列的行。因此,我将这些选定的列名放入一个数组,并希望从主数据表中获取这些列的行。请告诉我,sql命令文本是什么?您应该构建一个动态TSQL语句,并将其传递到sql Server。动态部分是列的名称。当一些读者读到这篇文章时,他们已经感到了巨大的挑战,因为您将很难防止人们以某种方式传入SQL Server注入攻击。请看一下sp_execute SQL是如何工作的,这就是我要使用的。