




已閱讀5頁,還剩30頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
基于C#窗體的數(shù)據(jù)庫應(yīng)用系統(tǒng) 開發(fā)基礎(chǔ)與方法,(4課時(shí)),內(nèi) 容,簡易成績管理系統(tǒng)介紹及需求分析 可枚舉類型與集合 綁定及作用 數(shù)據(jù)集及作用 適配器及作用 ADO.NET應(yīng)用系統(tǒng)體系結(jié)構(gòu) LINQ, LINQ to SQL, Entity Framework 系統(tǒng)框架實(shí)現(xiàn)(實(shí)例),1 簡易成績管理系統(tǒng)介紹及需求分析,本需求分析方法、步驟適用管理信息系統(tǒng),1.調(diào)研系統(tǒng)應(yīng)用環(huán)境 模擬成績管理; 課程如1年級(jí)1學(xué)期語文標(biāo)識(shí),一門課程可分多個(gè)教學(xué)班級(jí),每個(gè)班級(jí)有唯一的一個(gè)任課老師; 局域網(wǎng)內(nèi)運(yùn)行。,2.獲取成績管理業(yè)務(wù)工作的工人可能成為未來系統(tǒng)的參與者(一個(gè)系統(tǒng)用戶可以執(zhí)行多個(gè)參與者的操作)及工作內(nèi)容 1)成績管理員: 課程管理、教學(xué)班安排、學(xué)生管理、老師管理、成績修改、打印成績表等 2)任課教師: 班級(jí)成績登記、打印成績登記表等 3)學(xué)生: 查詢本人成績等,3.從參與者獲取處理數(shù)據(jù)資料 1)成績管理員: 課程信息、班級(jí)信息、老師信息、學(xué)生信息、成績信息等 2)任課教師: 相關(guān)班級(jí)成績信息等 3)學(xué)生: 本人成績信息等 作為教學(xué)案例,簡化系統(tǒng): 1)老師指任課老師和管理員,用角色區(qū)分,并作為系統(tǒng)用戶。 2)成績登記過程分兩步:錄入-暫存(*);提交。因此,成績信息包括暫存成績和確定成績。 3)學(xué)生不作為系統(tǒng)用戶。,4. 數(shù)據(jù)庫,說明: 設(shè)計(jì)表TempResult的目的是為了網(wǎng)格錄入中學(xué)生名稱列顯示的方便,另外對(duì)于更復(fù)雜的成績管理系統(tǒng)設(shè)計(jì)此表可提高編程方便性和運(yùn)行效率 在Teach表中增加state是為了控制成績錄入過程,2.1 可枚舉類型,實(shí)現(xiàn)了接口IEnumerable或泛型接口IEnumerable的類型是可枚舉類型 如果一個(gè)類定義了GetEnumerator()方法,其對(duì)象可作為foreach in和LINQ中的from in表達(dá)式,public interface IEnumerable IEnumerator GetEnumerator(); public interface IEnumerable: IEnumerable IEnumerator GetEnumerator(); ,public interface IEnumerator object Current get; bool MoveNext(); void Reset(); public interface IDisposable void Dispose(); public interface IEnumerator:IEnumerator, IDisposable T Current get; ,枚舉器實(shí)現(xiàn)接口IEnumerator或泛型接口IEnumerator,2.2 集合,僅提供枚舉功能的低級(jí)集合接口,如IEnumerable和IEnumerable; 提供大小、枚舉和同步操作的集合接口ICollection和提供大小、枚舉、添加元素和移除元素等操作的泛型集合接口ICollection; 提供可按照索引訪問元素的高級(jí)集合接口,如IList和IList; 提供專用功能的字典集合接口,如IDictionary和IDictionary等; 提供通用功能的集合類,如ArrayList和List; 提供專用功能的集合類,如Hashtable、Queue、Stack、Dictionary、Queue和Stack等。,3 綁定及作用,數(shù)據(jù)綁定,即建立控件屬性與對(duì)象屬性(或?qū)ο罅斜碇挟?dāng)前對(duì)象屬性)之間關(guān)系,以實(shí)現(xiàn)數(shù)據(jù)同步。,(M),(V),(C),ReadValue,WriteValue,控件屬性,Binding類對(duì)象,對(duì)象屬性或 對(duì)象列表IList當(dāng)前對(duì)象屬性get,set,綁定例子,BindingSamples/BasicBinding: /定義參與綁定的(數(shù)據(jù)源:如Form)對(duì)象屬性: Title private string title; public string Title get return title; set title = value; private void Form1_Load(object sender, EventArgs e) /將控件的Text屬性綁定到對(duì)象的Title屬性 Binding textBinding = new Binding(“Text“, this, “Title“,false); textBox1.DataBindings.Add(textBinding); ,BindingSource類對(duì)象,BindingSource 組件有多種用途。 它在 Windows 窗體控件與數(shù)據(jù)源之間提供流通管理CurrencyManager、更改通知和其他服務(wù),簡化了窗體上的控件到數(shù)據(jù)源的綁定。通過它的 DataSource 屬性將 BindingSource 組件關(guān)聯(lián)到數(shù)據(jù)源。,BindingSamples/ListBinding: private BindingSource bs; private void Form1_Load(object sender, EventArgs e) /設(shè)計(jì)時(shí)bs的DataSource成員為typeof(Person),即為類型信息 bs=new BindingSource(ponents); List list = new List(); list.Add(new Person(“12345“, “LY“, true); list.Add(new Person(“67890“, “ZHI“, false); bs.DataSource = list; idTextBox.DataBindings.Add(new Binding(“Text“, bs, “ID“, true); nameTextBox.DataBindings.Add(new Binding(“Text“, bs, “Name“, true); sexCheckBox.DataBindings.Add(new Binding(“CheckState“, bs, “Sex“, true); ,4 數(shù)據(jù)集及作用,System.Data 命名空間提供ADO.NET 體系結(jié)構(gòu)中內(nèi)存數(shù)據(jù)庫訪問功能的類。 DataSet對(duì)象,簡單說是一個(gè)輕量級(jí)的內(nèi)存數(shù)據(jù)庫。 DataSet主要相關(guān)類型DataTable、DataRow、DataColumn、DataRelation 及對(duì)應(yīng)的集合類(*Collection),Constraint及子類(UniqueConstraint 、ForeignKeyConstraint)和ConstraintCollection,等等。 類型化數(shù)據(jù)集與非類型化數(shù)據(jù)集。 作用:象數(shù)據(jù)庫一樣臨時(shí)保存結(jié)構(gòu)化數(shù)據(jù),提供插入、刪除、修改數(shù)據(jù)等功能;緩沖數(shù)據(jù)庫中的數(shù)據(jù),為快速高效更新數(shù)據(jù)庫數(shù)據(jù)提供基礎(chǔ)。,數(shù)據(jù)集對(duì)象與控件綁定的對(duì)象關(guān)系圖,DataSet對(duì)象綁定,ReslutManReslutMan: public static void DisplayStudent() SqlDataAdapter ad = new SqlDataAdapter(“SELECT * FROM Student“, ResultDb.GetConnection(); DataSet ds = new DataSet(); ad.Fill(ds, “Student“); BindingSource bs = new BindingSource(); bs.DataSource = ds; bs.DataMember=“Student“; dataGridView1.DataSource = bs; /或直接 dataGridView1.DataSource = ds; dataGridView1.DataMember=“Student“; ,5 適配器及作用,使用 System.Data.SqlClient、System.Data.Odbc、System.Data.OleDb或 System.Data.OracleClient 命名空間,可訪問要與 DataSet 結(jié)合使用的數(shù)據(jù)源。每個(gè) .NET Framework 數(shù)據(jù)提供程序都有相應(yīng)的 DataAdapter 適配器是數(shù)據(jù)源即數(shù)據(jù)庫和 DataSet 之間的橋梁。,不通過適配器訪問數(shù)據(jù)庫使用的對(duì)象關(guān)系圖,Connection對(duì)象,ReslutManReslutMan: class ResultDb public static readonly string ConnectionString; public static SqlConnection GetConnection() return new SqlConnection(ConnectionString); static ResultDb() ConnectionString = “Data Source=.;Initial Catalog=ResultDb;Integrated Security=True;“; ,Command對(duì)象-ExecuteNonQuery(),ReslutManReslutMan: public void Insert(string name, string pwd, int role) SqlCommand cmd = ResultDb.GetConnection().CreateCommand(); cmd.CommandText = “INSERT INTO User (idu,name,pwd,role) VALUES (idu,name,pwd,role)“; cmd.CommandType = CommandType.Text; cmd.Parameters.Add(new SqlParameter(“idu“, idu); cmd.Parameters.AddWithValue(“name“, name); cmd.Parameters.AddWithValue(“pwd“, pwd); cmd.Parameters.AddWithValue(“role“, role); cmd.Connection.Open(); cmd.ExecuteNonQuery(); cmd.Connection.Close(); ,Command對(duì)象-ExecuteReader(),ReslutManReslutMan: public static User Select(Guid idu) User other = null; SqlCommand cmd = ResultDb.GetConnection().CreateCommand(); cmd.CommandText = “SELECT * FROM User WHERE idu=idu“; cmd.CommandType = CommandType.Text; cmd.Parameters.Add(new SqlParameter(“idu“, idu); cmd.Connection.Open(); SqlDataReader reader= cmd.ExecuteReader(); if (reader.Read() other = new User(); other.idu = (Guid)reader“idu”;/可以使用整型下標(biāo) = reader“name“.ToString(); other.pwd = reader“pwd“.ToString(); other.role = (int)reader“role“; cmd.Connection.Close(); return other; ,Command對(duì)象-ExecuteScalar(),ReslutManReslutMan: public static int GetCount() SqlCommand cmd = ResultDb.GetConnection().CreateCommand(); cmd.CommandText = “SELECT Count(*) FROM User“; cmd.CommandType = CommandType.Text; cmd.Connection.Open(); object cn = cmd.ExecuteScalar(); cmd.Connection.Close(); return (int)cn; ,Command對(duì)象-存儲(chǔ)過程調(diào)用,ReslutManReslutMan: public static void CreateTeachTempResult() SqlCommand cmd = ResultDb.GetConnection().CreateCommand(); cmd.CommandText = “CreateTeachTempResult“; cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.AddWithValue(“idtc“, idtc); cmd.Connection.Open(); cmd.ExecuteNonQuery(); cmd.Connection.Close(); ,通過適配器訪問數(shù)據(jù)庫使用的對(duì)象關(guān)系圖,SqlDataAdapter-Fill與DataSet對(duì)象,ReslutManReslutMan: public static void DisplayStudent() SqlDataAdapter ad = new SqlDataAdapter( “SELECT * FROM Student“, ResultDb.GetConnection(); DataSet ds = new DataSet(); ad.Fill(ds, “Student“); dataGridView1.DataSource = ds; dataGridView1.DataMember = “Student“; ,6 ADO.NET應(yīng)用系統(tǒng)的體系結(jié)構(gòu),SqlDataAdapter對(duì)象-Update ReslutManReslutMan/Form2.cs,: SqlCommand selectCMD = ResultDb.GetConnection().CreateCommand(); selectCMD.CommandText=“SELECT idst,name FROM Student“; selectCMD.CommandType = CommandType.Text; /產(chǎn)生SqlDataAdapter對(duì)象并設(shè)置SelectCommand成員 sda = new SqlDataAdapter(selectCMD); /讀取數(shù)據(jù)庫表數(shù)據(jù)并填充到數(shù)據(jù)集表 sda.Fill(dataSet1, “Student“); /*使用關(guān)聯(lián)的sda.SelectCommand對(duì)象自動(dòng)產(chǎn)生InsertCommand, UpdateCommand,DeleteCommand*/ SqlCommandBuilder scb = new SqlCommandBuilder(sda); /查看生成的SQL語句和參數(shù) SqlCommand cmd = scb.GetUpdateCommand(true); String s = cmd.CommandText + Environment.NewLine; foreach (SqlParameter p in cmd.Parameters) s += “Name=“ + p.ParameterName + “,Type=“ + p.SqlDbType.ToString() + Environment.NewLine; /MessageBox.Show(s); /綁定 dgvStudent.DataSource = dataSet1; dgvStudent.DataMember = “Student“;,應(yīng)該通過VS提供的工具自動(dòng)生成類型化數(shù)據(jù)集和適配器,7.1 LINQ (Language Integreted Query),傳統(tǒng)上,針對(duì)數(shù)據(jù)的查詢都是以簡單的字符串表示,而沒有編譯時(shí)類型檢查或 IntelliSense 支持。此外,還必須針對(duì)以下各種數(shù)據(jù)源學(xué)習(xí)不同的查詢語言:SQL 數(shù)據(jù)庫、XML 文檔、各種 Web 服務(wù)等。 在 Visual Studio 2008以后,可以在C# 下為各種數(shù)據(jù)源編寫 LINQ 查詢:SQL Server 數(shù)據(jù)庫、XML 文檔、ADO.NET 數(shù)據(jù)集以及支持 IEnumerable 或泛型 IEnumerable)接口的任意對(duì)象集合。 所有 LINQ 查詢操作都由以下三個(gè)不同的操作組成: 1)獲取數(shù)據(jù)源 2)創(chuàng)建查詢 3)執(zhí)行查詢,LINQ例子,更多例子見ReslutMan/LINQSample,/ The Three Parts of a LINQ Query: / 1. Data source. int numbers = new int 0, 1, 2, 3, 4, 5, 6 ; / 2. Query creation. / numQuery is an IEnumerable var numQuery = from num in numbers where (num % 2) = 0 select num; / 3. Query execution. foreach (int num in numQuery) Console.Write(“0 “, num); ,7.2 LINQ to SQL,LINQ to SQL 是LINQ的一個(gè)組件,提供了用于將關(guān)系數(shù)據(jù)作為對(duì)象管理的運(yùn)行時(shí)基礎(chǔ)結(jié)構(gòu)。 在 LINQ to SQL 中,關(guān)系數(shù)據(jù)庫的數(shù)據(jù)模型映射到編程語言表示的對(duì)象關(guān)系模型(ORM)。 TO: 當(dāng)應(yīng)用程序運(yùn)行時(shí),LINQ to SQL 將對(duì)象模型中的語言集成查詢轉(zhuǎn)換為 SQL,然后將它們發(fā)送到數(shù)據(jù)庫進(jìn)行執(zhí)行。 FROM: 當(dāng)數(shù)據(jù)庫返回結(jié)果時(shí),LINQ to SQL 將它們轉(zhuǎn)換編程語言處理的對(duì)象。 在項(xiàng)目中添加LINQ to SQL類項(xiàng),即可產(chǎn)生與特定數(shù)據(jù)庫相關(guān)的一系列類。查看擴(kuò)展名為dbml及相關(guān)文件。,LINQ to SQL例子, 見ReslutMan/LINQtoSQL,ResultDatabaseDataContext db = new ResultDatabaseDataContext(); private void Form1_Load(object sender, EventArgs e) teachBindingSource.DataSource = from t in d
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 公司聚餐自助餐活動(dòng)方案
- 公司桶裝水活動(dòng)方案
- 公司研討活動(dòng)方案
- 公司禮儀禮節(jié)活動(dòng)方案
- 公司活力秀活動(dòng)方案
- 公司組織趣聞活動(dòng)方案
- 公司新年節(jié)目策劃方案
- 公司演唱會(huì)年會(huì)策劃方案
- 公司月會(huì)具體活動(dòng)方案
- 公司新春活動(dòng)策劃方案
- 國家安全教育的筆記
- GB/T 33592-2017分布式電源并網(wǎng)運(yùn)行控制規(guī)范
- 答案二語習(xí)得
- 黃金的冶煉工藝流程
- 注塑成型工藝流程圖
- 美術(shù)學(xué)院 本科培養(yǎng)方案 - 清華大學(xué) - Tsinghua University
- 項(xiàng)目延期申請表(樣本)
- 《中國腦卒中護(hù)理指導(dǎo)規(guī)范(2021年版)》課件
- 入團(tuán)志愿書(2016版本)(可編輯打印標(biāo)準(zhǔn)A4) (1)
- 三基訓(xùn)練習(xí)題集-風(fēng)濕免疫科(題目及答案)
- 無損檢測射線常見缺陷圖集
評(píng)論
0/150
提交評(píng)論