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

学校项目:将冒泡排序后的数组写回数据库的实现疑问

解决排序后数组写回数据库的问题

嘿,我明白你现在的困扰——已经把名字数组用冒泡排序搞定了,但不知道怎么把排序后的结果同步回数据库对吧?别担心,我来一步步帮你解决这个问题。

首先先提个小细节:你现有代码里重复定义了Length变量(两次Dim Length As Integer),这会导致编译错误,得先把其中一个删掉,比如排序部分的那个可以直接用之前定义好的Length。

接下来是核心的写回步骤,思路很简单:既然你已经有了排序后的arrName数组,只需要把数组里的每个值对应放回DataTable的每一行,然后用数据集的TableAdapter把修改提交到数据库就行。

修改后的完整代码:

Dim dt As DataTable = Me.Patient_ListingDataSet.Tables(0)
'------ Creating Name Array ------'
listName.DataSource = Me.PatientListingBindingSource
listName.DisplayMember = "pName"
Dim Length As Integer = Me.listName.Items.Count - 1
Dim i = 0
ReDim arrName(Length)
For Each row As DataRow In dt.Rows
    arrName(i) = $"{(row("pName"))}"
    i += 1
Next
'----- Bubble sorting Names (Z - A) -----' 
Dim swapped As Boolean = True
Dim bubbleTempName As String
While swapped = True
    swapped = False
    ' 这里直接用之前定义的Length,不用重新定义
    For Pass = 1 To Length
        For i = 0 To Length - 1
            If arrName(i) < arrName(i + 1) Then
                bubbleTempName = arrName(i)
                arrName(i) = arrName(i + 1)
                arrName(i + 1) = bubbleTempName
                swapped = True
            End If
        Next i
    Next Pass
End While

' ========== 新增:把排序后的数组写回DataTable ==========
For i = 0 To dt.Rows.Count - 1
    ' 把arrName里的每个值赋值给对应行的pName列
    dt.Rows(i)("pName") = arrName(i)
Next

' ========== 提交修改到数据库 ==========
Try
    ' 假设你的TableAdapter是Patient_ListingTableAdapter,根据实际情况替换
    Me.Patient_ListingTableAdapter.Update(Me.Patient_ListingDataSet)
    ' 刷新BindingSource,让界面显示最新的排序结果
    Me.PatientListingBindingSource.ResetBindings(False)
    MessageBox.Show("排序已成功保存到数据库!")
Catch ex As Exception
    MessageBox.Show("保存失败:" & ex.Message)
End Try

关键步骤解释:

  • 更新DataTable:通过循环把arrName里的每个排序后名字,依次赋值给dt(DataTable)每一行的pName字段,这样DataTable就和排序后的数组同步了。
  • 提交到数据库:使用TableAdapter.Update()方法,把DataTable的修改提交到数据库——这里要注意替换成你实际项目里的TableAdapter名称(比如你的数据集是Patient_ListingDataSet,对应的TableAdapter通常是Patient_ListingTableAdapter)。
  • 刷新界面:调用BindingSource.ResetBindings(False)让界面上的控件(比如你的listName)更新显示排序后的结果。

另外提个小建议:虽然你是学校项目要求用冒泡排序,但实际开发里如果要对数据库数据排序,更高效的方式是直接在查询数据库的时候用ORDER BY pName DESC(Z-A排序),这样不用把数据读到数组里再排序,但既然是项目要求,那就按你的方式来就好😉

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:43:20