问答

如何从sql动态转移到vb

 来源    2019-03-03    2  

我想得到一个动态的结果集,根据我找到的元素.以下是我的查询示例:

declare @til DateTime = dateadd(MINUTE, -0, getdate())
declare @fra datetime = DATEADD(MINUTE, -350, @til)

declare @title nvarchar(max) = 'test title'
DECLARE @cols AS NVARCHAR(MAX),
@query  AS NVARCHAR(MAX);

create table errors (collection_id bigint, nr smallint, position smallint, stamp datetime)
create table t (collection_id bigint, collection_name nvarchar(max), nr smallint, [status] smallint, stamp datetime)

select @cols = STUFF((SELECT distinct ',' + QUOTENAME(errors.position)
                      from t t
                        left join errors on errors.collection_id = t.collection_id and errors.nr = t.nr
                        where t.Status = 4 and errors.Stamp > @fra and t.collection_name = ''' + @title + ''' and errors.collection_id is not null
                      FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)') , 1, 1, '');

select @cols

set @query = 'declare @til DateTime = dateadd(MINUTE, -0, getdate())
            declare @fra datetime = DATEADD(MINUTE, -350, @til)

            ;with cte as (select t.collection_name, errors.position, count(errors.Tryksag_Nedtagsfejl_Id) antal
            from t
            left join errors on errors.collection_id = s.collection_id and errors.nr = t.nr
            where t.Status = 4 and errors.Stamp > @fra and and t.collection_name = ''' + @title + '''
            group by t.collection_name, errors.position)

                SELECT collection_name, ' + @cols + ' from
                cte
            pivot
            (
                 sum(antal)
                for position in (' + @cols + ')
            ) p '

execute(@query)

到目前为止,我已经提出了一个查询,我可以在SSMS上运行,并提供我想要的输出.这将是这样的:

如何在vb.net中为我提供这个结果集?当我只是将它作为一个查询运行它不会给我结果(假设它没有看到执行的结果集)

添加了VB代码

Dim var_til As Short = 0
            Dim var_fra As Short = -60
            Dim Linie As String = "Red"
            Dim tx = "Test title"
            Dim Stt2 = "declare @til DateTime = dateadd(MINUTE, " & var_til & ", getdate()) " _
                & "declare @fra datetime = DATEADD(MINUTE, " & var_fra & " , @til) " _
                & "DECLARE @cols AS NVARCHAR(MAX), @query  AS NVARCHAR(MAX) " _
                & "declare @linie as nvarchar(max) = '" & Linie & "' " _
                & "declare @title as nvarchar(max) = '" & tx & "' " _
                & "select @cols = STUFF((SELECT distinct ',' + QUOTENAME(errors.position) " _
                & "from t " _
                & "left join errors on errors.collection_id = t.collection_id And errors.nr = t.nr " _
                & "where t.Status = 4 And errors.Stamp > @fra And t.collection_name = ''' + @title + ''' and errors.collection_id is not null " _
                & "FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)') , 1, 1, '') " _
                & " " _
                & "set @query = ';with cte as (select t.collection_name, errors.position, count(errors.Tryksag_Nedtagsfejl_Id) antal " _
                & "from t " _
                & "left join errors on errors.collection_id = s.collection_id And errors.nr = t.nr " _
                & "where t.Status = 4 And errors.Stamp > @fra And And t.collection_name = ''' + @title + ''' " _
                & "group by t.collection_name, errors.position) " _
                & "SELECT collection_name, ' + @cols + ' from " _
                & "cte " _
                & "pivot " _
                & "( " _
                & "sum(antal) " _
                & "for position in (' + @cols + ') " _
                & ") p ' " _
                & "execute(@query) "

            Dim sqlConnection2 As New SqlConnection("Data Source=CONDOR-TI;Initial Catalog=Condor_db;Integrated Security=True")
            Dim cmd2 As New SqlCommand
            Dim reader2 As SqlDataReader
            cmd2.CommandText = Stt2
            cmd2.CommandType = CommandType.Text
            cmd2.Connection = sqlConnection2
            sqlConnection2.Open()
            reader2 = cmd2.ExecuteReader()
            While reader2.Read
                Console.Write(reader2(0))
            End While
            Console.WriteLine()
            sqlConnection2.Close()
            reader2.Close()

我认为最好创建一个存储过程来执行这个SQL命令,并使用以下代码从VB.Net执行它:

Dim sqlConnection1 As New SqlConnection("Your Connection String")
Dim cmd As New SqlCommand
Dim reader As SqlDataReader

cmd.CommandText = "StoredProcedureName"
cmd.CommandType = CommandType.StoredProcedure
cmd.Connection = sqlConnection1

sqlConnection1.Open()

reader = cmd.ExecuteReader()
' Data is accessible through the DataReader object here.

sqlConnection1.Close()

参考

> How to: Execute a Stored Procedure that Returns Rows

sql – 创建一个动态选择案例(vb)
问答我希望我的一个案例是一个动态字符串,因为在我的表中这些值部分改变,除了开头代码"2061" 所以我如何使我的代码执行类似于我在查询时查找的内容 "--喜欢'2061%' ...
1
mysql – 我的SQL动态查询执行并获取存储过程中的变量
问答我在My sql Stored过程中生成一个动态查询.我想把这个查询的结果变成一个out参数.这该怎么做 ? CREATE PROCEDURE 'searchInvoice' ( OUT numOfR ...
1
sql-server – 确定SQL故障转移群集中的活动节点
问答有谁知道如何从T-SQL以编程方式确定SQL主动 – 被动故障转移群集的活动节点? @@ SERVERNAME仅返回虚拟服务器名称,这两个节点的名称相同. 我不打算根据数据作出任何决定 – 我相信故障 ...
2
sql动态累积和 – SQL Server
问答我有一张这样的桌子 +------+--------+ | ID | Salary | +------+--------+ | 1 | 100 | | 2 | 40 | | 3 | 30 | | 4 ...
1
javascript – 从动态htmlTable获取vb.net中的数据
问答我有一个html表,我在服务器级别运行.但是,我无法访问正在填充的数据. 我正在使用javascript填充表,但我需要使用vb.net访问数据. 我正在使用jquery通过使用.html方法将信息提 ...
1
T-SQL动态枢轴
问答好的,我有一张看起来像这样的桌子 ItemID | ColumnName | Value 1 | name | Peter 1 | phone | 12345678 1 | email | peter ...
1
从select sql动态列名
问答我从我的数据库输出以下数据 Observation 1 aug -2015 Improvement suggestion 1 dec -2015 Observation 1 dec -2015 Acc ...
2
Transact SQL – 动态构建列名
问答这个对我来说很棘手-- 我在Microsoft SQL Server 2008上工作,我有一个包含人名的表.人名可能会随着时间的推移而改变,因此也有历史信息. 例: PID Sequence Name ...
1
Linq To Sql – 动态OrderBy – 案例何时
问答我正在使用Linq来实现sql和Linq动态OrderBy. 我知道linq dynamic可以像 – orderby("column_name")那样进行简单的排序. 但它是否支 ...
5
当变量包含单引号时,SQL动态查询字符串中断
问答我有一个SQL查询字符串,如下所示: DECLARE @sql varchar(max) SET @sql = ' INSERT INTO ' + @tempTable1 + ' SELECT 0 a ...
1
在SQL Server Reporting Services(VB.Net)中查找上一个日历月的第一个和最后一天
问答我正在MS SQL Server Reporting Services中创建一个报表,并且需要将默认的开始和结束日期报告参数设置为上一个日历月的第一个和最后一个日期,并且需要帮助. 该报告是在本月的第 ...
1
在SQL中等效于VB AndAlso?
问答有没有相当于VB的AndAlso / OrElse和C#的&& / ||在SQL(SQL Server 2005)中.我正在运行类似于以下的选择查询: SELECT a,b,c,d F ...
1
sql – 动态链接服务器查询
问答是否可以为链接服务器构建动态查询(如果是这样的话)? 例如: @linkedServer varchar(50) @var1 varchar(10) @var2 varchar(10) select ...
1
sql – 动态数据库架构
问答推荐的为动态逻辑数据库模式提供存储的架构是什么? 澄清:当系统需要为模型提供存储时,其模式可能会被生产中的用户扩展或更改,那么什么是一些好的技术,数据库模型或存储引擎将允许这样做? 几个可能性说明: ...
1
SQL动态ORDER BY使用别名
问答使用SQL Server,我可以使用别名来命令正常的SELECT查询: SELECT u.FirstName + ' ' + u.LastName as PhysicianName, COUNT(r. ...
1
sql-server – T-SQL动态SQL和临时表
问答看起来#通过EXECUTE字符串方法使用动态SQL创建的#temptables具有不同的作用域,不能在同一个存储过程中被"固定"SQL引用. 但是,我可以引用一个动态SQL语句在子 ...
1
sql – 动态数据透视表结果到临时表
问答虽然我能够找到如何在这些论坛中转移这些数据,但我还是找不到将结果推送到临时表的方法,以便我可以将它用于其他查询.代码如下.有没有办法让这个输出填充临时表? SET @cols = STUFF((SEL ...
1
T-SQL“动态”加入
问答给定以下带有单个char(1)列的SQL Server表: Value ------ '1' '2' '3' 如何在T-SQL中获得以下结果? Result ------ '1+2+3' '1+3+2 ...
1
sql – 动态pivot null为0
问答我有一个存储过程,它从一个表中获取数据,运行我的动态数据透视存储过程,然后输出到页面中.问题是,有大量的空条目.当我在页面上处理这些数据时,我需要为每个TerminalID添加每个燃料数量.当它遇到空 ...
1