[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
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”觸發事件屬性中雙擊自動生成事件函式或者在右側的下拉框中選