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
相关产品推荐
相关产品推荐

