You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VB.NET WinForms应用连接Jira获取工单数据技术求助

VB.NET 连接Jira并导出工单到SQL的实现示例

一、Jira 初始化与连接

确认你安装的是Atlassian.SDK NuGet包,以下是模块内的基础连接代码:

Imports Atlassian.Jira

Module JiraHelper
    Private jiraInstance As Jira

    ' 初始化Jira连接(推荐用API Token,Jira云版需在账号安全设置生成)
    Public Sub InitializeJira(jiraUrl As String, username As String, apiToken As String)
        jiraInstance = Jira.CreateRestClient(jiraUrl, username, apiToken)
    End Sub
End Module

二、获取所有工单数据

通过JQL查询获取工单,同时处理分页避免数据截断:

' 按条件获取工单(可自定义JQL过滤规则)
Public Function GetAllJiraIssues() As List(Of Issue)
    Dim issues As New List(Of Issue)
    ' 示例JQL:查询未关闭/未解决的工单,可根据需求修改
    Dim jqlQuery As String = "status != Closed AND status != Resolved"
    Dim searchResult = jiraInstance.Issues.QueryJql(jqlQuery)

    ' 遍历所有分页结果
    Do
        issues.AddRange(searchResult)
        searchResult = searchResult.NextPage()
    Loop While searchResult IsNot Nothing AndAlso searchResult.Any()

    Return issues
End Function

三、将工单数据写入SQL数据库

假设你已创建JiraIssues表,以下是批量写入的示例代码:

Imports System.Data.SqlClient

Module SqlHelper
    ' 批量写入SQL数据库
    Public Sub SaveIssuesToSql(issues As List(Of Issue), connectionString As String)
        Using conn As New SqlConnection(connectionString)
            conn.Open()
            Dim insertSql As String = "INSERT INTO JiraIssues (IssueKey, Summary, Description, CreatedDate, Status) 
                                       VALUES (@IssueKey, @Summary, @Description, @CreatedDate, @Status)"

            For Each issue In issues
                Using cmd As New SqlCommand(insertSql, conn)
                    cmd.Parameters.AddWithValue("@IssueKey", issue.Key)
                    cmd.Parameters.AddWithValue("@Summary", issue.Summary)
                    ' 处理空描述的情况
                    cmd.Parameters.AddWithValue("@Description", If(issue.Description IsNot Nothing, issue.Description, DBNull.Value))
                    cmd.Parameters.AddWithValue("@CreatedDate", issue.CreatedDate)
                    cmd.Parameters.AddWithValue("@Status", issue.Status.Name)

                    cmd.ExecuteNonQuery()
                End Using
            Next
        End Using
    End Sub
End Module

四、WinForms窗体中调用整合

在按钮点击事件里串联所有逻辑:

Private Sub btnExport_Click(sender As Object, e As EventArgs) Handles btnExport.Click
    ' 替换为你的实际配置
    Dim jiraUrl As String = "https://your-jira-domain.atlassian.net"
    Dim username As String = "your-email@example.com"
    Dim apiToken As String = "your-generated-api-token"
    Dim sqlConnStr As String = "Data Source=YOUR_SERVER;Initial Catalog=YOUR_DB;Integrated Security=True;"

    Try
        JiraHelper.InitializeJira(jiraUrl, username, apiToken)
        Dim allIssues = JiraHelper.GetAllJiraIssues()
        SqlHelper.SaveIssuesToSql(allIssues, sqlConnStr)

        MessageBox.Show("导出完成!")
    Catch ex As Exception
        MessageBox.Show($"出错:{ex.Message}")
    End Try
End Sub

关键注意事项

  • 权限验证:确保Jira账号有目标项目的读取权限,API Token需正确生成并匹配账号。
  • JQL优化:避免无限制查询所有工单,添加项目、时间范围等过滤条件提升效率。
  • 异常扩展:实际使用中需补充网络、SQL连接等场景的异常捕获,增强程序稳定性。
  • 字段扩展:Jira的Issue对象包含经办人、优先级、自定义字段等属性,可按需提取映射到SQL表。

内容的提问来源于stack exchange,提问作者LordRofticus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 16:15:13