1. 程式人生 > >[C#] 檢索資料庫並用DataGridView 控制元件顯示資料.

[C#] 檢索資料庫並用DataGridView 控制元件顯示資料.

練習點:

資料庫讀取資料並儲存在一個集合中.

使用DataGridView來顯示資料.

1  Form1 用於使用者登入驗證


Form1 Code

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace DataGridViewTest2
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            string username = txtUsername.Text;
            string password = txtPassword.Text;

            DBConnect dbc = new DBConnect();

            int s = dbc.UserLogin(username, password);

            if (1 == s)
            {
                MessageBox.Show("Incorrect Username");
            }
            if (2 == s)
            {
                MessageBox.Show("Incorrect Password");
            }
            if(0 == s)
            {
                Form2 form2 = new Form2(this);
                //this.Hide();
                form2.ShowDialog();
            }

        }
    }
}

2. Form2, 用記顯示資料, 它只有一個DataGridView控制元件


Form2 Code

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Collections;

namespace DataGridViewTest2
{
    public partial class Form2 : Form
    {
        Form1 form1;
        public Form2(Form1 form1)
        {
            InitializeComponent();
            this.form1 = form1;
        }

       
        private void Form2_Load(object sender, EventArgs e)
        {
            DBConnect dbc = new DBConnect();
            ArrayList UserList = new ArrayList();

            UserList = dbc.ExportData();
            UserList.Reverse();
            
            //DataGridView設定
            DataTable DataTable1 = new DataTable();
            DataTable1.Columns.AddRange(new DataColumn[] { new DataColumn("ID"), new DataColumn("Name"), new DataColumn("Sex"), new DataColumn("Age"), new DataColumn("Address") });

            foreach (User users in UserList)
            {
                
                DataTable1.Rows.Add(users.Id, users.Username, users.Sex==0?"男":"女" , users.Age, users.Address);
            }
           

            dataGridView1.DataSource = DataTable1;
        }

        

    }
}

3. BDConnect.cs, 資料庫連結, 用於驗證和提取資料

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;
using System.Collections;

namespace DataGridViewTest2
{
    class DBConnect
    {
        string username, password;

        public int UserLogin(string username, string password)
        {
            this.username = username;
            this.password = password;

            //下面這段文字的作用已經在其它博文中解釋!  
            string dataDir = AppDomain.CurrentDomain.BaseDirectory;
            if (dataDir.EndsWith(@"\bin\Debug\")
                || dataDir.EndsWith(@"\bin\Release\"))
            {
                dataDir = System.IO.Directory.GetParent(dataDir).Parent.Parent.FullName;
                AppDomain.CurrentDomain.SetData("DataDirectory", dataDir);
            }  


            using(SqlConnection conn = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\UserInfo.mdf;Integrated Security=True;User Instance=True"))
            {
                conn.Open();

                using(SqlCommand cmd = conn.CreateCommand())
                {
                    cmd.CommandText = "SELECT * FROM UserLogin WHERE username='"+username + "'";

                    using(SqlDataReader reader = cmd.ExecuteReader())
                    {
                        if(!reader.Read())
                        {
                            return 1;//沒有此使用者
                        }
                        else
                        {
                            string dbpassword = reader.GetString(reader.GetOrdinal("password"));
                            if(dbpassword != password)
                            {
                                return 2;//使用者密碼不對
                            }
                            else
                            {
                                return 0;
                            }
                        }
                    }
                }
            }
        }


        public ArrayList ExportData()
        {
            ArrayList UserList = new ArrayList();

            //下面這段文字的作用已經在其它博文中解釋!  
            string dataDir = AppDomain.CurrentDomain.BaseDirectory;
            if (dataDir.EndsWith(@"\bin\Debug\")
                || dataDir.EndsWith(@"\bin\Release\"))
            {
                dataDir = System.IO.Directory.GetParent(dataDir).Parent.Parent.FullName;
                AppDomain.CurrentDomain.SetData("DataDirectory", dataDir);
            }  


            using (SqlConnection conn = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\UserInfo.mdf;Integrated Security=True;User Instance=True"))
            {
                conn.Open();

                using (SqlCommand cmd = conn.CreateCommand())
                {
                    cmd.CommandText = "SELECT * FROM UserInfo";

                    using (SqlDataReader reader = cmd.ExecuteReader())
                    {
                        while (reader.Read())
                        {
                            User users = new User();
                            users.Id = (int)reader[0];
                            users.Username = (string)reader[1];
                            users.Sex = (int)reader[2];
                            users.Age = (int)reader[3];
                            users.Address = (string)reader[4];

                            UserList.Add(users);
                        }
                    }

                }

            }

            return UserList;
        }
    }
}

4. Users.cs, 用於儲存資料
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace DataGridViewTest2
{
    class User
    {
        private int id, sex, age;
        private string username, address;

        public int Id
        {
            get { return id; }
            set { id = value; }
        }

        public int Sex
        {
            get { return sex; }
            set { sex = value; }
        }

        public int Age
        {
            get { return age; }
            set { age = value; }
        }

        public string Username
        {
            get { return username; }
            set { username = value; }
        }

        public string Address
        {
            get { return address; }
            set { address = value; }
        }
    }
}

5. 資料庫 的兩個表

UserLogin


UserInfo



6. 登入成功後顯示的結果如下:


update:

從資料庫裡提取資訊的程式碼有所更新, 使用 SqlDataAdapter來查詢資料,並將資料填充到DataTable裡反回給DataGridView裡顯示.

public DataTable ExportData()  
        {  
            DataTable UserTable = new DataTable(); 
            using (SqlConnection conn = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\UserInfo.mdf;Integrated Security=True;User Instance=True"))  
            {  
                using (SqlCommand cmd = conn.CreateCommand())  
                {  
                    cmd.CommandText = "SELECT * FROM UserInfo";  
                    using (SqlDataAdapter adapter = new SqlDataAdapter(cmd))  
                    {  
                          SqlDataAdapter.Fill(UserTable)
                     }  
                }  
            }  
            return UserTable;  
        }  
    }  
}


相關推薦

[C#] 檢索資料庫並用DataGridView 控制元件顯示資料.

練習點: 資料庫讀取資料並儲存在一個集合中. 使用DataGridView來顯示資料. 1  Form1 用於使用者登入驗證 Form1 Code using System; using System.Collections.Generic; using System

c#資料庫操作DataGridView控制元件的使用,ADO.NET

適合初學者,0基礎; 題目: 利用DataGridView控制元件和ADO.NET完成資料的顯示,刪除,修改等; 最終執行的效果如圖所示: 步驟: 1.首先同樣步驟:開啟vs2010,File->new->project->windows Form App

基於C#的WinForm中DataGridView控制元件操作彙總

基於C#的WinForm中DataGridView控制元件操作彙總 一、單元格內容的操作  *****// 取得當前單元格內容         Console.WriteLine(DataGridView1.CurrentCell.Value); // 取

C# winform窗體使用WebBrowser控制元件顯示百度地圖

個人微信公眾號:“免費桌面小應用”。有新程式會微信推送通知。謝謝大家掃描關注。突然想試試winfrom窗體呼叫html頁面並顯示頁面內容。就拿展示地圖來試試。先上效果圖:下面是專案建立的過程:一、開啟vs---新建專案專案選擇windows窗體專案。名字隨便取。二、右鍵專案-

C#中DataGridView控制元件資料繫結

最近公司有個專案需要用c#來顯示資料庫的內容,作為一個只會c\c++的程式設計師,起初我心裡還是有些沒底的。然後就上網蒐集了一些關於DataGridView控制元件的資料,為免遺忘,特此記錄。 1 什麼是DataGridView DataGridVi

ASP.NET中 C#訪問資料庫用三種方式顯示資料

第一種方式:使用DataReader從資料庫中每次提取一條資料,用迴圈遍歷表                下面是我寫的一個例子:  &nbs

困擾已久——DataGridView控制元件填充資料時自動新增列

    機房重構慢慢的走到了盡頭,最近正在進行最後的潤色中,今天解決了一個困擾許久但是非常簡單的問題。我們在查詢上機和充值記錄時,用到了DataGridView控制元件。我們在VB版的機房收費系統中也

C#如何根據時間控制元件顯示資料庫中對應資訊(下)

選定時間範圍,顯示資訊 下篇的需求是選擇一個時間段之間的資料    程式碼如下: <1>Entity using System; using System.Collections.Generic; using System.

C#如何根據時間控制元件顯示資料庫中對應資訊(上)

前言 聽說有的朋友們機房合作時只用了兩天就把程式碼編寫完成了,但我實際編碼時卻經常被卡住,還是技術不到家啊,重構時用到的複用性強的還可以,以前沒做過的可就懵逼了。所以,我又要開始一波總結了。 這裡分為兩部分:根據一個時間控制元件顯示資訊在這篇。根據兩個時間控制元件顯示資訊請

c# DataGridView控制元件使用

DataGridView 動態新增新行:   DataGridView控制元件在實際應用中非常實用,特別需要表格顯示資料時。可以靜態繫結資料來源,這樣就自動為DataGridView控制元件新增相應的行。假如需要動態為DataGridView控制元

C# DataGridView控制元件用法介紹

DataGridView控制元件在實際應用中非常實用,特別需要表格顯示資料時。可以靜態繫結資料來源,這樣就自動為DataGridView控制元件新增相應的行。假如需要動態為DataGridView控制元件新增新行,方法有很多種,下面簡單介紹如何為DataGridView控制元件動態新增新行的兩種方法

C# Winform datagridview控制元件加序列號

//增加序列號 //該事件需要在datagridview 控制元件事件裡點出來,直接寫裡面的程式碼即可。 private void dataGridView1_RowPostPaint(object sender, DataGridViewRowPostPaintEventArgs e)

C# winfrom Datagridview控制元件下拉選單

拖拽一個datagridview放在介面,編輯列把下來選單那列ColumnType設定成DataGridViewComboBoxColumn 然後在資料一欄的Items可以寫下來選單的內容也可以後臺程式碼寫 下面是後臺程式碼實現功能 private void dgUserAuthData_Edi

C# Winform中自定義篩選及自帶統計行的Datagridview控制元件

網上分享有很多種自制DGV控制元件,都有不小的缺陷。 沒辦法,按需求自己定製了一個。 一、過濾方面類似於Excel的篩選功能。支援右鍵選單篩選,同時也支援在文字框輸入文字按焦點列進行篩選;  二、統計行我採用的是雙Datagridview方案。在構建控制元件時加入一個Dock為Bottom的子Datagr

C#程式設計學習(05):使用webbroswer控制元件顯示地圖並標註點位座標

  控制元件準備:新建windows窗體應用程式,新增一個標記按鈕(btn_tagPos)、標籤控制元件(經度和緯度,實時經緯度顯示)、編輯框控制元件(記錄輸入的經度和緯度值)、webbroswer控制元件(webbroswer1)和計時器控制元件(timer1) 實現程式碼:

C#:DataGridView控制元件的使用。繪製行號。新增右鍵選單

1.簡單使用 using System; using System.Collections.Generic; using System.Windows.Forms; namespace WindowsFormsApp17 { public partial class Form1 : F

C# DataGridView控制元件與ListView控制元件的對比學習(二):ListView控制元件學習

一、定義:     表示Windows列表檢視控制元件,一般用來呈現資料,是一種輕量級的呈現資料的方法。 二、重要的屬性:     1、第一個非常重要的屬性是View:獲取或設定項在控制元件中的顯示方式,包括Details、LargeIcon、List、SmallI

C#中使用DateTimePicker控制元件顯示和修改日期時間

    在Winform程式有一個DateTimePicker控制元件,這個控制元件是用來顯示和修改日期時間的,但預設只顯示日期和修改日期。若要顯示和修改時間,則要自定義設定,方法如下:     在Winform程式新增一個DateTimePicker控制元件,命名為dtpT

DataGridView控制元件中設定資料顯示格式

實現效果:    知識運用:   DataGridViewCellStyle類的Format屬性  //獲取或設定應用於DataGridView單元格的文字內容的格式字串   public string Format {  get;set;  }  // 通過設定控制元件的列的De

關於C#WinForm的datagridview控制元件的使用經驗及技巧收集(持續更新)

怎麼讓DataGridView顯示行號? 方法1: 在Winform窗體中選中datagridview控制元件,在其“RowPostPaint”觸發事件屬性中雙擊自動生成事件函式或者在右側的下拉框中選