【问题标题】:how to execute data command that returns a result set in Vb.net SSIS Script Task如何在 Vb.net SSIS 脚本任务中执行返回结果集的数据命令
【发布时间】:2013-08-15 08:37:28
【问题描述】:

发现在vb.net里面可以执行sql查询。下面的脚本运行良好

Public Sub Main()

    ''mail variables

    Dim myHtmlMessage As MailMessage
    Dim mySmtpClient As SmtpClient
    Dim value As NetworkCredential


    ''sql variables
    Dim fireAgain As Boolean = True
    Dim rowsAffected As Integer
    Dim sqlConn As System.Data.SqlClient.SqlConnection
    Dim sqlComm As System.Data.SqlClient.SqlCommand




    Dim cm As ConnectionManager = Dts.Connections("cnn") ''Retrive the reference to the managed Connections

    '' Request an open connection
    sqlConn = cm.AcquireConnection(Dts.Transaction)
    Dts.Events.FireInformation(0, "", "Connection is: " + sqlConn.State.ToString(), "", 0, fireAgain)


    ''Do your work
    sqlComm = New System.Data.SqlClient.SqlCommand("select count(*) from table", sqlConn)
    rowsAffected = sqlComm.ExecuteScalar()

    ''sqlComm.ExecuteNonQuery() if you do not want to return anything 

    ''Inform SSIS you're done your work
    cm.ReleaseConnection(sqlConn)
    Dts.Events.FireInformation(0, "", rowsAffected.ToString() + " rows updated.", "", 0, fireAgain)
    'MsgBox(rowsAffected.ToString())





    myHtmlMessage = New MailMessage("email", "email", "This is a testing from  VB script Task", rowsAffected.ToString)
    mySmtpClient = New SmtpClient("send.company.net")
    mySmtpClient.Port = 585
    value = New NetworkCredential("email", "pwd") ''this is the line added


    mySmtpClient.Credentials = value
    mySmtpClient.EnableSsl = True
    mySmtpClient.Send(myHtmlMessage)
    Dts.TaskResult = ScriptResults.Success


End Sub


我的问题是,如果我想执行返回 Vb.net SSIS 脚本任务中的结果集的数据命令怎么办?在第一个脚本中有一个名为 rowsAffected 的变量,它保存计数。 但是在第二个脚本中,我需要获得包含超过 12 行的结果集。我可以对打击脚本进行哪些修改?是不是需要实现一个字符串数组?

Public Sub Main()

    ''mail variables

    Dim myHtmlMessage As MailMessage
    Dim mySmtpClient As SmtpClient
    Dim value As NetworkCredential


    ''sql variables
    Dim fireAgain As Boolean = True
    Dim rowsAffected As Integer
    Dim sqlConn As System.Data.SqlClient.SqlConnection
    Dim sqlComm As System.Data.SqlClient.SqlCommand




    Dim cm As ConnectionManager = Dts.Connections("cnn") ''Retrive the reference to the managed Connections

    '' Request an open connection
    sqlConn = cm.AcquireConnection(Dts.Transaction)
    Dts.Events.FireInformation(0, "", "Connection is: " + sqlConn.State.ToString(), "", 0, fireAgain)


    ''Do your work
    **sqlComm = New System.Data.SqlClient.SqlCommand("select n.c as [Total_Row_inserted_by this_Load],reverse(substring(reverse(n.[SourceFileName]),1,9)) Filename        from()(SELECT count(*) c, [SourceFileName]  FROM [Testing-DB].[dbo].[AE_Data]  group by [SourceFileName]", sqlConn)**
    **rowsAffected = sqlComm.ExecuteScalar()**

    ''sqlComm.ExecuteNonQuery() if you do not want to return anything 

    ''Inform SSIS you're done your work
    cm.ReleaseConnection(sqlConn)
    Dts.Events.FireInformation(0, "", rowsAffected.ToString() + " rows updated.", "", 0, fireAgain)
    'MsgBox(rowsAffected.ToString())





    myHtmlMessage = New MailMessage("email", "email", "This is a testing from  VB script Task", rowsAffected.ToString)
    mySmtpClient = New SmtpClient("send.company.net")
    mySmtpClient.Port = 585
    value = New NetworkCredential("email", "pwd") ''this is the line added


    mySmtpClient.Credentials = value
    mySmtpClient.EnableSsl = True
    mySmtpClient.Send(myHtmlMessage)
    Dts.TaskResult = ScriptResults.Success


End Sub

【问题讨论】:

    标签: vb.net visual-studio-2010 vb6 ssis smtp


    【解决方案1】:

    将结果存储在字符串数组中。您可以使用此示例代码块代替那些注释代码并相应地调整 sql 语句。您可以将这些结果存储在 DataTable 或多维数组中。

        sqlComm = New System.Data.SqlClient.SqlCommand("select Column1 from table ", sqlConn)
        Dim sqlReader As System.Data.SqlClient.SqlDataReader
        Dim arrList As New ArrayList()
    
        sqlReader = sqlComm.ExecuteReader
        Do While sqlReader.Read
            arrList.Add(sqlReader.GetString(0))
        Loop
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-24
      • 1970-01-01
      • 1970-01-01
      • 2016-12-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多