首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

Visual C# 使用 ListView 顯示資料庫記錄完整指南(二)

     編輯:關於C語言

前言

承接上篇文章,本文將詳細說明如何將資料庫查詢結果繫結至 ListView 控制項,包含資料遍歷、列表項目建立、欄位對應與完整程式碼實作。

一、資料遍歷與 ListView 繫結核心邏輯

1. 使用 DataReader 遍歷資料

while (reader.Read())
{
    ListViewItem item = new ListViewItem();
    item.SubItems.Clear();
    
    // 設定第一欄 (主項目)
    item.SubItems[0].Text = reader["name"].ToString();
    
    // 新增後續欄位 (子項目)
    item.SubItems.Add(reader["HomePhone"].ToString());
    item.SubItems.Add(reader["WorkPhone"].ToString());
    item.SubItems.Add(reader["MobilePhone"].ToString());
    item.SubItems.Add(reader["City"].ToString());
    item.SubItems.Add(reader["Address"].ToString());
    item.SubItems.Add(reader["Email"].ToString());
    
    // 加入 ListView
    lv.Items.Add(item);
}

關鍵點:ListViewItem 的第一欄使用 SubItems[0] 設定,後續欄位使用 SubItems.Add() 新增。

2. 關閉資源

reader.Close();           // 關閉 DataReader
this.connConnection.Close(); // 關閉資料庫連線

二、完整程式碼:list.cs

using System;
using System.Windows.Forms;
using System.Drawing;
using System.Data;
using System.Data.OleDb;

class MainForm : Form
{
    // 資料庫連線字串
    private static string strConnect = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + 
                                       Application.StartupPath + "\\MY.MDB";
    
    private OleDbConnection connConnection = new OleDbConnection(strConnect);
    private ListView lv;

    public MainForm()
    {
        // 表單初始化
        this.Left = 0;
        this.Top = 0;
        this.Text = "在 ListView 中顯示資料庫內容!";
        
        // ListView 初始化
        lv = new ListView();
        lv.Left = 0;
        lv.Top = 0;
        lv.Width = 700;
        lv.Height = this.ClientRectangle.Height;
        lv.GridLines = true;           // 顯示分隔線
        lv.FullRowSelect = true;       // 整列選取
        lv.View = View.Details;        // 詳細檢視模式
        lv.Scrollable = true;          // 自動捲軸
        lv.MultiSelect = false;        // 單選模式
        lv.HeaderStyle = ColumnHeaderStyle.Nonclickable; // 標題不可點擊

        // 建立欄位標題 (對應資料庫欄位)
        lv.Columns.Add("姓名", 60, HorizontalAlignment.Right);
        lv.Columns.Add("住宅電話", 100, HorizontalAlignment.Left);
        lv.Columns.Add("辦公電話", 100, HorizontalAlignment.Left);
        lv.Columns.Add("移動電話", 100, HorizontalAlignment.Left);
        lv.Columns.Add("居住地點", 100, HorizontalAlignment.Left);
        lv.Columns.Add("工作單位", 100, HorizontalAlignment.Left);
        lv.Columns.Add("電子郵件", 100, HorizontalAlignment.Left);
        lv.Visible = true;

        // 查詢資料並填入 ListView
        OleDbDataReader reader;
        string strCommand = "SELECT * FROM Persons";
        
        this.connConnection.Open();
        OleDbCommand cmd = new OleDbCommand(strCommand, connConnection);
        reader = cmd.ExecuteReader();

        while (reader.Read())
        {
            ListViewItem item = new ListViewItem();
            item.SubItems.Clear();
            item.SubItems[0].Text = reader["name"].ToString();
            item.SubItems.Add(reader["HomePhone"].ToString());
            item.SubItems.Add(reader["WorkPhone"].ToString());
            item.SubItems.Add(reader["MobilePhone"].ToString());
            item.SubItems.Add(reader["City"].ToString());
            item.SubItems.Add(reader["Address"].ToString());
            item.SubItems.Add(reader["Email"].ToString());
            lv.Items.Add(item);
        }

        reader.Close();
        this.Controls.Add(lv);
        
        // 表單關閉時關閉資料庫連線
        this.Closed += new EventHandler(this_Closed);
    }

    protected void this_Closed(object sender, EventArgs e)
    {
        this.connConnection.Close();
    }

    public static void Main()
    {
        Application.Run(new MainForm());
    }
}

三、執行前準備與結果

  1. 同目錄下建立 Access 2000 資料庫 MY.MDB
  2. 建立 Persons 資料表,欄位包含:name, HomePhone, WorkPhone, MobilePhone, City, Address, Email
  3. 編譯執行後畫面:

ListView 顯示資料記錄

四、關鍵技術總結

技術點說明
View.Details啟用多欄詳細檢視模式
FullRowSelect點選時反白整列,提升使用體驗
GridLines顯示列分隔線,資料對齊更清晰
SubItems 索引[0] 為主項目,[1] 起為子項目
事件關閉連線在 Form.Closed 事件中釋放連線資源
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved