版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
C#程序設(shè)計(jì)
工程教程計(jì)算機(jī)“十二五〞規(guī)劃教材工程十六C#程序設(shè)計(jì)
工程教程計(jì)算機(jī)“十二五〞規(guī)劃教材工程十六C#程序設(shè)計(jì)工程教程學(xué)習(xí)任務(wù)熟悉LINQ技術(shù)根本語(yǔ)法和使用。能夠通過(guò)LINQtoSQL技術(shù)對(duì)SQLServer數(shù)據(jù)庫(kù)數(shù)據(jù)進(jìn)行增刪改查操作。工程十六LINQ技術(shù)—操作SQLSERVER數(shù)據(jù)庫(kù)的新方法C#程序設(shè)計(jì)工程教程學(xué)習(xí)任務(wù)工程十六LINQ技術(shù)—操作2C#程序設(shè)計(jì)工程教程任務(wù)安排任務(wù)一通過(guò)LINQ技術(shù)查詢數(shù)據(jù)任務(wù)二通過(guò)LINQ技術(shù)添加數(shù)據(jù)
任務(wù)三通過(guò)LINQ技術(shù)刪除數(shù)據(jù)任務(wù)四通過(guò)LINQ技術(shù)修改數(shù)據(jù)工程十六LINQ技術(shù)—操作SQLSERVER數(shù)據(jù)庫(kù)的新方法C#程序設(shè)計(jì)工程教程任務(wù)安排工程十六LINQ技術(shù)—操作3C#程序設(shè)計(jì)工程教程通過(guò)LINQ技術(shù)用戶可以使用統(tǒng)一的方式編寫各種查詢,查詢的對(duì)象包括XML、對(duì)象集合、SQLServer數(shù)據(jù)庫(kù)等等。什么是LINQ技術(shù)LINQ的技術(shù)集成于及以上版本中,主要由LINQtoObjects、LINQtoXML和三局部組成,如以下圖所示。LINQtoObjects主要負(fù)責(zé)對(duì)象的查詢;LINQtoXML主要負(fù)責(zé)XML的查詢;主要負(fù)責(zé)數(shù)據(jù)庫(kù)的查詢,其中包括:①LINQtoSQL②LINQtoDataSet③LINQtoEntitiesC#程序設(shè)計(jì)工程教程通過(guò)LINQ技術(shù)用戶可以使用統(tǒng)一的4C#程序設(shè)計(jì)工程教程任務(wù)一通過(guò)LINQ技術(shù)查詢數(shù)據(jù)庫(kù)任務(wù)說(shuō)明預(yù)備知識(shí)在本任務(wù)中我們來(lái)學(xué)習(xí)LINQ技術(shù)根本語(yǔ)法和如何查詢數(shù)據(jù)庫(kù)數(shù)據(jù)。一、LINQ技術(shù)根本語(yǔ)法LINQ的查詢語(yǔ)法與SQL有些相似,這里我們主要介紹LINQ較之特殊的兩點(diǎn)地方?!惨弧硋ar關(guān)鍵字var關(guān)鍵字用于聲明隱式類型的局部變量,指示編譯器根據(jù)初始化語(yǔ)句右側(cè)的表達(dá)式推斷變量的類型。例如:varage=26;varusername="zhuye";varuserlist=new[]{"a","b","c"};foreach(varuserinuserlist)Console.WriteLine(user);C#程序設(shè)計(jì)工程教程任務(wù)一通過(guò)LINQ技術(shù)查詢數(shù)據(jù)庫(kù)任務(wù)5C#程序設(shè)計(jì)工程教程〔二〕查詢語(yǔ)句格式LINQ查詢語(yǔ)句中,以from開(kāi)始〔from后是這樣的形式:sinstudents〕,以select結(jié)束。語(yǔ)句中可以具有where、orderby、join等子句。例如從Customers表中查詢顧客的CompanyName、Address信息,并以“公司名〞和“地址〞列名出現(xiàn),代碼如下:selectnew{公司名=c.CompanyName,地址};對(duì)應(yīng)的SQL語(yǔ)句為:SELECTCompanyNameAS公司名,AddressAS地址FROMCustomers;C#程序設(shè)計(jì)工程教程〔二〕查詢語(yǔ)句格式LINQ查6C#程序設(shè)計(jì)工程教程二、創(chuàng)立LINQ對(duì)象創(chuàng)立LINQ對(duì)象是訪問(wèn)SQLServer數(shù)據(jù)庫(kù)的第一步,創(chuàng)立LINQ對(duì)象最常用的方法是使用VS提供的對(duì)象關(guān)系設(shè)計(jì)器〔也稱O/R設(shè)計(jì)器〕。它用于實(shí)現(xiàn)對(duì)象/關(guān)系之間的映射,可以為SQLServer每個(gè)表生成一個(gè)實(shí)體類,并在底層有關(guān)聯(lián)的表的實(shí)體類之間生成一個(gè)實(shí)體關(guān)聯(lián),把數(shù)據(jù)庫(kù)中表和表之間的“關(guān)聯(lián)關(guān)系〞徹底轉(zhuǎn)換為對(duì)象與對(duì)象之間的“關(guān)聯(lián)關(guān)系〞。使用對(duì)象關(guān)系設(shè)計(jì)器創(chuàng)立LINQtoSQL類的具體步驟如下:步驟1 選擇當(dāng)前工程,右擊鼠標(biāo),在彈出的快捷菜單中單擊“添加〞→“新建項(xiàng)〞選項(xiàng),如圖16-2所示,然后在彈出的對(duì)話框中選擇“LinqtoSQL類〞,并在“名稱〞框中輸入類文件的名字,單擊“添加〞按鈕完成操作,如圖16-3所示。此時(shí)會(huì)翻開(kāi).dbml文件,同時(shí)翻開(kāi)對(duì)象關(guān)系設(shè)計(jì)器,如圖16-4所示。C#程序設(shè)計(jì)工程教程二、創(chuàng)立LINQ對(duì)象創(chuàng)立LINQ7C#程序設(shè)計(jì)工程教程圖16-2選擇新建項(xiàng)命令圖16-3添加LinqtoSQL類圖16-4.dbml文件界面和對(duì)象關(guān)系設(shè)計(jì)器C#程序設(shè)計(jì)工程教程圖16-2選擇新建項(xiàng)命令圖16-38C#程序設(shè)計(jì)工程教程步驟2 翻開(kāi)“效勞器資源管理器〞,如圖16-5所示右擊“數(shù)據(jù)連接〞項(xiàng),在彈出的快捷菜單中選擇“添加連接〞選項(xiàng),接著在翻開(kāi)的“選擇數(shù)據(jù)源〞對(duì)話框中選擇“MicrosoftSQLServer〞數(shù)據(jù)源,如圖16-6所示。圖16-5選擇添加連接選項(xiàng)圖16-6選擇SQL數(shù)據(jù)庫(kù)作為數(shù)據(jù)源步驟3 單擊“確定〞按鈕后將彈出如圖16-7所示的“添加連接〞對(duì)話框,在該對(duì)話框中設(shè)置效勞器名稱為“.〞,選擇“使用SQLServer身份驗(yàn)證(Q)〞方式,設(shè)置用戶名為“sa〞,不設(shè)置密碼〔讀者也可以根據(jù)實(shí)際需要自行設(shè)置密碼〕,然后選擇一個(gè)本地的數(shù)據(jù)庫(kù)。C#程序設(shè)計(jì)工程教程步驟2 翻開(kāi)“效勞器資源管理器〞,如9C#程序設(shè)計(jì)工程教程步驟4 單擊“確定〞按鈕,返回到“效勞器資源管理器〞中,將看到新添加的數(shù)據(jù)庫(kù)連接,展開(kāi)數(shù)據(jù)庫(kù)中的“表〞結(jié)點(diǎn),如圖16-8左圖所示,選中要連接的表,將其拖放到新建的文件設(shè)計(jì)界面中,如圖16-8右圖所示。圖16-7添加連接數(shù)據(jù)庫(kù)圖16-8將數(shù)據(jù)庫(kù)其拖放至設(shè)計(jì)界面C#程序設(shè)計(jì)工程教程步驟4 單擊“確定〞按鈕,返回到“效10C#程序設(shè)計(jì)工程教程步驟5 在解決方案資源管理器中,展開(kāi)“〞結(jié)點(diǎn),翻開(kāi)其下的可以看到系統(tǒng)自動(dòng)創(chuàng)立了prouct數(shù)據(jù)庫(kù)中Pro_table表的映射,如圖16-9所示。圖16-9查看系統(tǒng)生成的實(shí)體類C#程序設(shè)計(jì)工程教程步驟5 在解決方案資源管理器中,展開(kāi)11C#程序設(shè)計(jì)工程教程三、LINQtoSQLDataContext對(duì)象LINQtoSQLDataContext是LINQtoSQL框架的主入口點(diǎn),用于把查詢句法翻譯成SQL語(yǔ)句,以及把數(shù)據(jù)從數(shù)據(jù)庫(kù)返回給調(diào)用方和把實(shí)體的修改寫入數(shù)據(jù)庫(kù)。DataContext是實(shí)體和數(shù)據(jù)庫(kù)之間的橋梁,使用它之前,我們首先需要定義映射到數(shù)據(jù)表的實(shí)體,即創(chuàng)立LINQ對(duì)象。創(chuàng)立數(shù)據(jù)庫(kù)連接和LINQ對(duì)象后,我們要實(shí)例化LINQtoSQLDataContext對(duì)象用于接收數(shù)據(jù)庫(kù)信息。例如:LINQtoSQLDataContextlinq; //聲明Linq連接對(duì)象linq=newLINQtoSQLDataContext(strCon);//實(shí)例化Linq連接對(duì)象selectnew{編號(hào)=info.Pro_id,
商品名稱=info.Pro_name.Trim(),
價(jià)格=info.Pro_price,
產(chǎn)地=info.Pro_address.Trim(),};C#程序設(shè)計(jì)工程教程三、LINQtoSQLDataConte12C#程序設(shè)計(jì)工程教程任務(wù)實(shí)施——查詢超市商品數(shù)據(jù)庫(kù)中的數(shù)據(jù)任務(wù)說(shuō)明通過(guò)LINQtoSQL技術(shù)查詢超市商品數(shù)據(jù)庫(kù)中的數(shù)據(jù),可根據(jù)輸入的查詢條件和關(guān)鍵字檢索并顯示數(shù)據(jù)庫(kù)數(shù)據(jù),程序運(yùn)行效果如以下圖所示。實(shí)施步驟步驟1 啟動(dòng)VisualStudio2021新建一個(gè)Windows應(yīng)用程序,將其命名為“l(fā)inq查詢〞。并將默認(rèn)主窗體Form1的“Text〞屬性設(shè)置為“使用LINQ技術(shù)查詢SQL中的數(shù)據(jù)〞。Form1窗體設(shè)計(jì)時(shí)所用控件及設(shè)置如下表所示。C#程序設(shè)計(jì)工程教程任務(wù)實(shí)施——查詢超市商品數(shù)據(jù)庫(kù)中的數(shù)據(jù)任13C#程序設(shè)計(jì)工程教程步驟2 按圖16-11左圖所示設(shè)置Form1中控件的布局,然后單擊“comboBox1〞右上角小三角,如圖16-11右圖所示,在彈出的右側(cè)菜單中選擇“編輯項(xiàng)〞選項(xiàng)。圖16-11任務(wù)設(shè)計(jì)界面效果圖C#程序設(shè)計(jì)工程教程步驟2 按圖16-11左圖所示設(shè)置F14C#程序設(shè)計(jì)工程教程步驟3 將翻開(kāi)“字符串集合編輯器〞對(duì)話框,如圖16-12所示,向comboBox1中添加查詢條件的內(nèi)容,然后單擊“確定〞按鈕。圖16-12添加查詢條件的內(nèi)容步驟4 翻開(kāi)SQLServer數(shù)據(jù)庫(kù)軟件,向SQLServer數(shù)據(jù)庫(kù)中附加資料包中的商品數(shù)據(jù)庫(kù)product。按照“預(yù)備知識(shí)〞中的方法向“l(fā)inq查詢〞工程中添加“LinqtoSQL類〞并將其命名為“LINQtoSQL〞,并設(shè)置其與數(shù)據(jù)庫(kù)“product〞的連接關(guān)系。C#程序設(shè)計(jì)工程教程步驟3 將翻開(kāi)“字符串集合編輯器〞對(duì)15C#程序設(shè)計(jì)工程教程步驟5 編寫后臺(tái)代碼,完整代碼如下所示:usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Linq;usingSystem.Text;usingSystem.Windows.Forms;namespacelinq查詢{publicpartialclassForm1:Form{publicForm1(){InitializeComponent();}#region定義公共變量及Linq連接對(duì)象stringstrCon="DataSource=.;database=product;uid=sa;pwd=;“;//定義數(shù)據(jù)庫(kù)連接字符串LINQtoSQLDataContextlinq; //聲明Linq連接對(duì)象#endregionprivatevoidForm1_Load(objectsender,EventArgse){comboBox1.SelectedIndex=0; } //默認(rèn)的選擇項(xiàng)索引值C#程序設(shè)計(jì)工程教程步驟5 編寫后臺(tái)代碼,完整代碼如下所16C#程序設(shè)計(jì)工程教程privatevoidForm1_Activated(objectsender,EventArgse){txtBox1.Focus();} //定義文本框的焦點(diǎn)privatevoidSearchInformation(){linq=newLINQtoSQLDataContext(strCon);//實(shí)例化Linq連接對(duì)象if(txtBox1.Text==""){varresult=frominfoinlinq.Pro_table //利用LINQ技術(shù)實(shí)現(xiàn)查詢selectnew{編號(hào)=info.Pro_id,商品名稱=info.Pro_name.Trim(),
價(jià)格=info.Pro_price,產(chǎn)地=info.Pro_address.Trim(),
公司=info.Pro_company.Trim(),};dataGridView1.DataSource=result;} //將結(jié)果綁定到數(shù)據(jù)控件中
else{inti=comboBox1.SelectedIndex;switch(i) //利用switch語(yǔ)句實(shí)現(xiàn)查找條件的判斷{case0: //根據(jù)編號(hào)查找varproductid=frominfoinlinq.Pro_tablewhereinfo.Pro_id==txtBox1.Text.Trim()selectnew{編號(hào)=info.Pro_id,商品名稱=info.Pro_name.Trim(),
價(jià)格=info.Pro_price,產(chǎn)地=info.Pro_address.Trim(),
公司=info.Pro_company.Trim(),};C#程序設(shè)計(jì)工程教程privatevoidForm1_A17C#程序設(shè)計(jì)工程教程dataGridView1.DataSource=productid;break;case1: //根據(jù)商品名稱查找varproductname=frominfoinlinq.Pro_tablewhereinfo.Pro_name==txtBox1.Text.Trim()selectnew{編號(hào)=info.Pro_id,商品名稱=info.Pro_name.Trim(),價(jià)格=info.Pro_price,產(chǎn)地=info.Pro_address.Trim(),公司=info.Pro_company.Trim(),};dataGridView1.DataSource=productname;break;case2: //根據(jù)價(jià)格查找whereinfo.Pro_price.ToString()==txtBox1.Text.Trim()selectnew{編號(hào)=info.Pro_id,商品名稱=info.Pro_name.Trim(),價(jià)格=info.Pro_price,產(chǎn)地=info.Pro_address.Trim(),公司=info.Pro_company.Trim(),};dataGridView1.DataSource=productprice;break;C#程序設(shè)計(jì)工程教程dataGridView1.DataS18C#程序設(shè)計(jì)工程教程case3: //根據(jù)產(chǎn)地whereinfo.Pro_address==txtBox1.Text.Trim()selectnew{編號(hào)=info.Pro_id,商品名稱=info.Pro_name.Trim(),價(jià)格=info.Pro_price,產(chǎn)地=info.Pro_address.Trim(),公司=info.Pro_company.Trim(),};dataGridView1.DataSource=productadress;break;case4: //根據(jù)公司名稱查找whereinfo.Pro_company==txtBox1.Text.Trim()selectnew{編號(hào)=info.Pro_id,商品名稱=info.Pro_name.Trim(),
價(jià)格=info.Pro_price,產(chǎn)地=info.Pro_address.Trim(),
公司=info.Pro_company.Trim(),};dataGridView1.DataSource=productcompany;break;}}}privatevoidbutton1_Click(objectsender,EventArgse){SearchInformation();}}} //調(diào)用查詢方法步驟6 按【F5】鍵調(diào)試程序,查看運(yùn)行結(jié)果。C#程序設(shè)計(jì)工程教程case3: //根據(jù)產(chǎn)地步驟619C#程序設(shè)計(jì)工程教程任務(wù)二
通過(guò)LINQ技術(shù)添加數(shù)據(jù)任務(wù)說(shuō)明在本任務(wù)中我們學(xué)習(xí)如何通過(guò)LINQ技術(shù)向SQL數(shù)據(jù)庫(kù)中添加數(shù)據(jù)。預(yù)備知識(shí)向SQL數(shù)據(jù)庫(kù)中添加數(shù)據(jù)主要分為以下四步:第一步:實(shí)例化LINQtoSQLDataContext對(duì)象。LINQtoSQLDataContextcontext=newLINQtoSQLDataContext();第二步:生成實(shí)體對(duì)象。Infodata=newInfo{Code="x004",Name="馬大哈",Sex=false,Nation="n001",Birthday=newDateTime(1989,12,28)};C#程序設(shè)計(jì)工程教程任務(wù)二通過(guò)LINQ技術(shù)添加數(shù)據(jù)任務(wù)說(shuō)20C#程序設(shè)計(jì)工程教程第三步:向LINQtoSQLDataContext對(duì)象的Table<TEntity>集合中添加上一步中生成的實(shí)體對(duì)象。例如:context.Infos.InsertOnSubmit(data); //Infos為表名也可以使用Table<TEntity>集合的InsertAllOnSubmit(IEnumberable<T>)方法一次注冊(cè)添加多個(gè)新對(duì)象,以便一次性向數(shù)據(jù)庫(kù)插入這些數(shù)據(jù)。第四步:使用DataContext對(duì)象的context.SubmitChanges()方法提交更改。例如:context.SubmitChanges();C#程序設(shè)計(jì)工程教程第三步:向LINQtoSQLDataCo21C#程序設(shè)計(jì)工程教程任務(wù)實(shí)施——向超市商品數(shù)據(jù)庫(kù)中添加數(shù)據(jù)任務(wù)說(shuō)明程序運(yùn)行效果如圖16-13所示,加載程序時(shí)首先讀出數(shù)據(jù)庫(kù)中的商品信息,在添加數(shù)據(jù)時(shí),商品編號(hào)、商品名稱、單價(jià)、產(chǎn)地和公司名稱中任何一個(gè)字段都不允許為空。添加完成后,能夠自動(dòng)刷新顯示的數(shù)據(jù)。圖16-13C#程序設(shè)計(jì)工程教程任務(wù)實(shí)施——向超市商品數(shù)據(jù)庫(kù)中添加數(shù)據(jù)任22C#程序設(shè)計(jì)工程教程實(shí)施步驟步驟1 啟動(dòng)VisualStudio2021新建一個(gè)Windows應(yīng)用程序,將其命名為“l(fā)inq添加數(shù)據(jù)〞,默認(rèn)主窗體為Form1,并將Form1的“Text〞屬性設(shè)置為“使用LINQ技術(shù)實(shí)現(xiàn)向SQL數(shù)據(jù)庫(kù)中添加數(shù)據(jù)〞。然后向SQLServer2005數(shù)據(jù)庫(kù)中導(dǎo)入已經(jīng)建立完畢的商品數(shù)據(jù)庫(kù),數(shù)據(jù)庫(kù)名稱為product。步驟2 設(shè)計(jì)Form1窗體,所用控件及說(shuō)明如表16-2所示,界面完成效果如圖16-13所示。C#程序設(shè)計(jì)工程教程實(shí)施步驟步驟1 啟動(dòng)VisualS23C#程序設(shè)計(jì)工程教程步驟3 添加“LINQtoSQL類〞,并將其命名為“l(fā)inqtosql〞。步驟4 編寫后臺(tái)代碼,詳細(xì)代碼如下所示:C#程序設(shè)計(jì)工程教程步驟3 添加“LINQtoSQL24C#程序設(shè)計(jì)工程教程publicpartialclassForm1:Form{publicForm1(){InitializeComponent();}privatevoidbutton2_Click(objectsender,EventArgse){Application.Exit();} //退出程序//定義連接數(shù)據(jù)庫(kù)的字符串
stringstrCon="DataSource=(local);database=product;uid=sa;pwd=;";linqtosqlDataContextlinq; //定義linq對(duì)象
privatevoidForm1_Activated(objectsender,EventArgse){textBox1.Focus();}privatevoidshowinfo() //定義一個(gè)方法用來(lái)顯示數(shù)據(jù)表里的信息
{linq=newlinqtosqlDataContext(strCon); //實(shí)例化linqselectnew{編號(hào)=info.Pro_id,商品名稱=info.Pro_name.Trim(),
價(jià)格=info.Pro_price,產(chǎn)地=info.Pro_address.Trim(),
公司=info.Pro_company.Trim(),};dataGridView1.DataSource=result;
} //將結(jié)果綁定到數(shù)據(jù)控件上privatevoidForm1_Load(objectsender,EventArgse){showinfo();
} //程序加載的時(shí)候調(diào)用顯示數(shù)據(jù)信息的方法C#程序設(shè)計(jì)工程教程publicpartialclass25C#程序設(shè)計(jì)工程教程privatevoidbutton1_Click(objectsender,EventArgse){//判斷是否有空信息if(textBox1.Text!=""&&textBox2.Text!=""&&textBox3.Text!=""&&textBox4.Text!=""&&textBox5.Text!=""){linq=newlinqtosqlDataContext(strCon); //實(shí)例化linq對(duì)象Pro_tableusers=newPro_table(); //實(shí)例化Pro_table類users.Pro_id=textBox1.Text.Trim(); //商品編號(hào)users.Pro_name=textBox2.Text.Trim(); //商品名稱users.Pro_price=Convert.ToDecimal(textBox3.Text.Trim());//商品價(jià)格數(shù)據(jù)的強(qiáng)制轉(zhuǎn)換users.Pro_address=textBox4.Text.Trim(); //商品產(chǎn)地users.Pro_company=textBox5.Text.Trim(); //公司名稱linq.Pro_table.InsertOnSubmit(users); //提交數(shù)據(jù)linq.SubmitChanges(); //執(zhí)行對(duì)數(shù)據(jù)的修改showinfo(); //重新綁定數(shù)據(jù)信息MessageBox.Show("數(shù)據(jù)添加成功!");}}}步驟5 按【F5】鍵調(diào)試程序,運(yùn)行結(jié)果參見(jiàn)圖16-13所示。C#程序設(shè)計(jì)工程教程privatevoidbutton126C#程序設(shè)計(jì)工程教程任務(wù)三
通過(guò)LINQ技術(shù)刪除數(shù)據(jù)任務(wù)說(shuō)明在本任務(wù)中我們來(lái)學(xué)習(xí)如何使用LINQ技術(shù)刪除指定SQL數(shù)據(jù)庫(kù)中的數(shù)據(jù)。預(yù)備知識(shí)刪除與添加數(shù)據(jù)的步驟相似,只是刪除動(dòng)作需要通過(guò)DeleteAllOnSubmit方法完成,方法原型如下:voidDeletAllOnSubmit(Ienumerableentities)//entities表示要移除所有項(xiàng)的集合完成刪除操作后,同樣需要通過(guò)context.SubmitChanges()方法提交更改。C#程序設(shè)計(jì)工程教程任務(wù)三通過(guò)LINQ技術(shù)刪除數(shù)據(jù)任務(wù)說(shuō)27C#程序設(shè)計(jì)工程教程任務(wù)說(shuō)明任務(wù)實(shí)施——?jiǎng)h除超市商品數(shù)據(jù)庫(kù)中的數(shù)據(jù)程序運(yùn)行效果如圖16-14所示,程序運(yùn)行時(shí)首先顯示數(shù)據(jù)表中的數(shù)據(jù),用戶選中某一行數(shù)據(jù)后單擊“刪除〞按鈕即可刪除數(shù)據(jù),刪除成功后彈出相應(yīng)提示。圖16-14成功刪除數(shù)據(jù)C#程序設(shè)計(jì)工程教程任務(wù)說(shuō)明任務(wù)實(shí)施——?jiǎng)h除超市商品數(shù)據(jù)庫(kù)中28C#程序設(shè)計(jì)工程教程實(shí)施步驟步驟1 啟動(dòng)VisualStudio2021,新建一個(gè)Windows應(yīng)用程序,將其命名為“l(fā)inq刪除SQL數(shù)據(jù)庫(kù)的數(shù)據(jù)〞。將默認(rèn)主窗體Form1的“Text〞屬性設(shè)置為“使用LINQ技術(shù)實(shí)現(xiàn)刪除SQL數(shù)據(jù)庫(kù)的數(shù)據(jù)〞。步驟2 添加“LINQtoSQL類〞,并將其命名為“l(fā)inqtosql〞。步驟3 設(shè)計(jì)Form1窗體,所用控件及說(shuō)明如表16-3所示,窗體效果參照?qǐng)D16-14左圖所示。C#程序設(shè)計(jì)工程教程實(shí)施步驟步驟1 啟動(dòng)VisualS29C#程序設(shè)計(jì)工程教程步驟4 設(shè)置dataGridView1的SelectionMode屬性為:RowHeaderSelect〔其含義為單擊某行頭就可以選中整行〕。步驟5 編寫后臺(tái)代碼以實(shí)現(xiàn)功能,詳細(xì)代碼如下:publicpartialclassForm1:Form{publicForm1(){InitializeComponent();}linqtosqlDataContextlinq; //建立linq對(duì)象stringstrCon=“DataSource=(local);database=product;uid=sa;pwd=;“;//建立連接字符串privatevoidbindinfo(){linq=newlinqtosqlDataContext(strCon); //實(shí)例化Linq連接對(duì)象
獲取所有商品信息selectnew{產(chǎn)品序號(hào)=info.ID,產(chǎn)品編號(hào)=info.Pro_id,商品名稱=info.Pro_name.Trim(),
價(jià)格=info.Pro_price,產(chǎn)地=info.Pro_address.Trim(),公司=info.Pro_company.Trim(),};dataGridView1.DataSource=result;}//對(duì)DataGridView控件進(jìn)行數(shù)據(jù)綁定privatevoidForm1_Load(objectsender,EventArgse){bindinfo();} //調(diào)用綁定信息的方法C#程序設(shè)計(jì)工程教程步驟4 設(shè)置dataGridView30C#程序設(shè)計(jì)工程教程intid; //定義整型變量用來(lái)存儲(chǔ)選擇的數(shù)據(jù)表行號(hào)//調(diào)用dataGridView1_CellClick事件實(shí)現(xiàn)只有選中數(shù)據(jù)行才能獲取該數(shù)據(jù)行的產(chǎn)品序號(hào)privatevoiddataGridView1_CellClick(objectsender,DataGridViewCellEventArgse){if(dataGridView1.SelectedRows.Count!=0) //判斷是否選擇了數(shù)據(jù)行{id=Convert.ToInt32(dataGridView1.SelectedRows[0].Cells[0].Value);}//獲取行號(hào)
}privatevoidbutton2_Click(objectsender,EventArgse){Application.Exit();} //退出程序privatevoidbutton1_Click(objectsender,EventArgse)//實(shí)現(xiàn)刪除功能{if(dataGridView1.SelectedRows.Count!=0){linq=newlinqtosqlDataContext(strCon);varresult=frominfoinlinq.Pro_tablewhereinfo.ID==idselectinfo;linq.Pro_table.DeleteAllOnSubmit(result); //調(diào)用刪除方法linq.SubmitChanges(); //提交數(shù)據(jù)發(fā)生的變化MessageBox.Show("刪除成功");bindinfo();} //重新綁定數(shù)據(jù)
else{MessageBox.Show("請(qǐng)選擇刪除項(xiàng)");}}}步驟6 按【F5】鍵運(yùn)行程序,運(yùn)行結(jié)果參見(jiàn)圖16-14所示。C#程序設(shè)計(jì)工程教程intid; //定義整型變31C#程序設(shè)計(jì)工程教程任務(wù)四
通過(guò)LINQ技術(shù)修改數(shù)據(jù)任務(wù)說(shuō)明在本任務(wù)中我們來(lái)學(xué)習(xí)如何通過(guò)LINQ技術(shù)修改SQLServer數(shù)據(jù)庫(kù)中的數(shù)據(jù)。完成該任務(wù)所用的步驟和方法與任務(wù)二中相同,這里將不再贅述。任務(wù)實(shí)施——修改超市商品數(shù)據(jù)庫(kù)中的數(shù)據(jù)任務(wù)說(shuō)明通過(guò)LINQtoSQL技術(shù)修改超市商品數(shù)據(jù)庫(kù)中的數(shù)據(jù),程序運(yùn)行效果如圖16-15所示。與刪除功能類似,程序運(yùn)行時(shí)首先顯示數(shù)據(jù)表中的所有數(shù)據(jù),當(dāng)用戶單擊行頭〔即某行前的灰色塊〕選中某一行數(shù)據(jù)后,窗口上方將其詳細(xì)信息顯示為可編輯狀態(tài),用戶修改信息后單擊“更新〞按鈕即可更新數(shù)據(jù)庫(kù)數(shù)據(jù),更新成功后會(huì)彈出相應(yīng)提示。C#程序設(shè)計(jì)工程教程任務(wù)四通過(guò)LINQ技術(shù)修改數(shù)據(jù)任務(wù)說(shuō)32C#程序設(shè)計(jì)工程教程圖16-15程序運(yùn)行效果C#程序設(shè)計(jì)工程教程圖16-15程序運(yùn)行效果33C#程序設(shè)計(jì)工程教程實(shí)施步驟步驟1 啟動(dòng)VisualStudio2021新建一個(gè)Windows應(yīng)用程序,將其命名為“l(fā)inq刪除SQL數(shù)據(jù)庫(kù)的數(shù)據(jù)〞,將默認(rèn)主窗體Form1的“Text〞屬性設(shè)置為“使用LINQ技術(shù)實(shí)現(xiàn)刪除SQL數(shù)據(jù)庫(kù)的數(shù)據(jù)〞。設(shè)計(jì)Form1窗體,所用控件及說(shuō)明如表16-4所示,設(shè)計(jì)完成的效果參見(jiàn)圖16-15所示。C#程序設(shè)計(jì)工程教程實(shí)施步驟步驟1 啟動(dòng)VisualS34C#程序設(shè)計(jì)工程教程步驟2 添加“LINQtoSQL類〞,并將其命名為“l(fā)inqtosql〞。步驟3 編寫后臺(tái)詳細(xì)代碼,如下所示:publicpartialclassForm1:Form{publicForm1(){InitializeComponent();}privatevoidbutton2_Click(objectsender,EventArgse) //退出程序{Application.Exit();}//定義連接字符串stringstrCon="DataSource=(local);database=product;uid=sa;pwd=;";linqtosqlDataContextlinq;privatevoidbindinfo()//定義方法將數(shù)據(jù)綁定到dataGridView中{linq=newlinqtosqlDataContext(strCon);selectnew{產(chǎn)品序號(hào)=info.ID,產(chǎn)品編號(hào)=info.Pro_id,商品名稱=info.Pro_name.Trim(),
價(jià)格=info.Pro_price,產(chǎn)地=info.Pro_address.Trim(),
公司=info.Pro_company.Trim(),};dataGridView1.DataSource=result;}C#程序設(shè)計(jì)工程教程步驟2 添加“LINQtoSQL35C#程序設(shè)計(jì)工程教程privatevoidForm1_Load(objectsender,EventArgse){
bindinfo();}//程序運(yùn)行時(shí)調(diào)用方法實(shí)現(xiàn)數(shù)據(jù)綁定intid; //定義整型變量用來(lái)存儲(chǔ)數(shù)據(jù)行的序號(hào)
privatevoiddataGridView1_CellClick(objectsender,DataGridViewCellEventArgse){if(dataGridView1.SelectedRows.Count!=0){linq=newlinqtosqlDataContext(strCon);id=Convert.ToInt32(dataGridView1.SelectedRows[0].Cells[0].Value);whereinfo.ID==idselectnew{Pid=info.Pro_id,Pname=info.Pro_name,Pprice=info.Pro_price,Paddress=info.Pro_address,Pcompany=info.Pro_company};foreach(variteminresult) //利用foreach語(yǔ)句實(shí)現(xiàn)遍歷
{textBox1.Text=item.Pid.Trim();textBox2.Text=item.Pname.Trim();textBox3.Text=Convert.ToString(item.Pprice);textBox4.Text=item.Paddress.Trim();textBox5.Text=item.Pcompany.Trim();}}}C#程序設(shè)計(jì)工程教程privatevoidForm1_L36C#程序設(shè)計(jì)工程教程//完成更新操作
privatevoidbutton1_Click(objectsender,EventArgse){if(textBox1.Text!=""&&textBox2.Text!=""&&textBox3.Text!=""&&textBox4.Text!=""&&textBox5.Text!=""){if(Convert.ToDecimal(textBox3.Text)<=0){MessageBox.Show("您填寫的價(jià)格不正確!");}else{linq=newlinqtosqlDataContext(strCon);varresultChange=frominfoinlinq.Pro_tablewhereinfo.ID==idselectinfo;foreach(Pro_tableProductinresultChange){Product.Pro_id=textBox1.Text.Trim();Product.Pro_name=textBox2.Text.Trim();Product.Pro_price=Convert.ToDecimal(textBox3.Text.Trim());Product.Pro_address=textBox4.Text.Trim();Product.Pro_company=textBox5.Text.Trim();linq.SubmitChanges();}MessageBox.Show("修改成功");bindinfo();
}}}} //重新綁定數(shù)據(jù)
步驟5 按【F5】鍵調(diào)試程序,運(yùn)行結(jié)果參見(jiàn)圖16-15所示。C#程序設(shè)計(jì)工程教程//完成更新操作步驟5 按【F5】鍵37C#程序設(shè)計(jì)
工程教程計(jì)算機(jī)“十二五〞規(guī)劃教材工程十六C#程序設(shè)計(jì)
工程教程計(jì)算機(jī)“十二五〞規(guī)劃教材工程十六C#程序設(shè)計(jì)工程教程學(xué)習(xí)任務(wù)熟悉LINQ技術(shù)根本語(yǔ)法和使用。能夠通過(guò)LINQtoSQL技術(shù)對(duì)SQLServer數(shù)據(jù)庫(kù)數(shù)據(jù)進(jìn)行增刪改查操作。工程十六LINQ技術(shù)—操作SQLSERVER數(shù)據(jù)庫(kù)的新方法C#程序設(shè)計(jì)工程教程學(xué)習(xí)任務(wù)工程十六LINQ技術(shù)—操作39C#程序設(shè)計(jì)工程教程任務(wù)安排任務(wù)一通過(guò)LINQ技術(shù)查詢數(shù)據(jù)任務(wù)二通過(guò)LINQ技術(shù)添加數(shù)據(jù)
任務(wù)三通過(guò)LINQ技術(shù)刪除數(shù)據(jù)任務(wù)四通過(guò)LINQ技術(shù)修改數(shù)據(jù)工程十六LINQ技術(shù)—操作SQLSERVER數(shù)據(jù)庫(kù)的新方法C#程序設(shè)計(jì)工程教程任務(wù)安排工程十六LINQ技術(shù)—操作40C#程序設(shè)計(jì)工程教程通過(guò)LINQ技術(shù)用戶可以使用統(tǒng)一的方式編寫各種查詢,查詢的對(duì)象包括XML、對(duì)象集合、SQLServer數(shù)據(jù)庫(kù)等等。什么是LINQ技術(shù)LINQ的技術(shù)集成于及以上版本中,主要由LINQtoObjects、LINQtoXML和三局部組成,如以下圖所示。LINQtoObjects主要負(fù)責(zé)對(duì)象的查詢;LINQtoXML主要負(fù)責(zé)XML的查詢;主要負(fù)責(zé)數(shù)據(jù)庫(kù)的查詢,其中包括:①LINQtoSQL②LINQtoDataSet③LINQtoEntitiesC#程序設(shè)計(jì)工程教程通過(guò)LINQ技術(shù)用戶可以使用統(tǒng)一的41C#程序設(shè)計(jì)工程教程任務(wù)一通過(guò)LINQ技術(shù)查詢數(shù)據(jù)庫(kù)任務(wù)說(shuō)明預(yù)備知識(shí)在本任務(wù)中我們來(lái)學(xué)習(xí)LINQ技術(shù)根本語(yǔ)法和如何查詢數(shù)據(jù)庫(kù)數(shù)據(jù)。一、LINQ技術(shù)根本語(yǔ)法LINQ的查詢語(yǔ)法與SQL有些相似,這里我們主要介紹LINQ較之特殊的兩點(diǎn)地方?!惨弧硋ar關(guān)鍵字var關(guān)鍵字用于聲明隱式類型的局部變量,指示編譯器根據(jù)初始化語(yǔ)句右側(cè)的表達(dá)式推斷變量的類型。例如:varage=26;varusername="zhuye";varuserlist=new[]{"a","b","c"};foreach(varuserinuserlist)Console.WriteLine(user);C#程序設(shè)計(jì)工程教程任務(wù)一通過(guò)LINQ技術(shù)查詢數(shù)據(jù)庫(kù)任務(wù)42C#程序設(shè)計(jì)工程教程〔二〕查詢語(yǔ)句格式LINQ查詢語(yǔ)句中,以from開(kāi)始〔from后是這樣的形式:sinstudents〕,以select結(jié)束。語(yǔ)句中可以具有where、orderby、join等子句。例如從Customers表中查詢顧客的CompanyName、Address信息,并以“公司名〞和“地址〞列名出現(xiàn),代碼如下:selectnew{公司名=c.CompanyName,地址};對(duì)應(yīng)的SQL語(yǔ)句為:SELECTCompanyNameAS公司名,AddressAS地址FROMCustomers;C#程序設(shè)計(jì)工程教程〔二〕查詢語(yǔ)句格式LINQ查43C#程序設(shè)計(jì)工程教程二、創(chuàng)立LINQ對(duì)象創(chuàng)立LINQ對(duì)象是訪問(wèn)SQLServer數(shù)據(jù)庫(kù)的第一步,創(chuàng)立LINQ對(duì)象最常用的方法是使用VS提供的對(duì)象關(guān)系設(shè)計(jì)器〔也稱O/R設(shè)計(jì)器〕。它用于實(shí)現(xiàn)對(duì)象/關(guān)系之間的映射,可以為SQLServer每個(gè)表生成一個(gè)實(shí)體類,并在底層有關(guān)聯(lián)的表的實(shí)體類之間生成一個(gè)實(shí)體關(guān)聯(lián),把數(shù)據(jù)庫(kù)中表和表之間的“關(guān)聯(lián)關(guān)系〞徹底轉(zhuǎn)換為對(duì)象與對(duì)象之間的“關(guān)聯(lián)關(guān)系〞。使用對(duì)象關(guān)系設(shè)計(jì)器創(chuàng)立LINQtoSQL類的具體步驟如下:步驟1 選擇當(dāng)前工程,右擊鼠標(biāo),在彈出的快捷菜單中單擊“添加〞→“新建項(xiàng)〞選項(xiàng),如圖16-2所示,然后在彈出的對(duì)話框中選擇“LinqtoSQL類〞,并在“名稱〞框中輸入類文件的名字,單擊“添加〞按鈕完成操作,如圖16-3所示。此時(shí)會(huì)翻開(kāi).dbml文件,同時(shí)翻開(kāi)對(duì)象關(guān)系設(shè)計(jì)器,如圖16-4所示。C#程序設(shè)計(jì)工程教程二、創(chuàng)立LINQ對(duì)象創(chuàng)立LINQ44C#程序設(shè)計(jì)工程教程圖16-2選擇新建項(xiàng)命令圖16-3添加LinqtoSQL類圖16-4.dbml文件界面和對(duì)象關(guān)系設(shè)計(jì)器C#程序設(shè)計(jì)工程教程圖16-2選擇新建項(xiàng)命令圖16-345C#程序設(shè)計(jì)工程教程步驟2 翻開(kāi)“效勞器資源管理器〞,如圖16-5所示右擊“數(shù)據(jù)連接〞項(xiàng),在彈出的快捷菜單中選擇“添加連接〞選項(xiàng),接著在翻開(kāi)的“選擇數(shù)據(jù)源〞對(duì)話框中選擇“MicrosoftSQLServer〞數(shù)據(jù)源,如圖16-6所示。圖16-5選擇添加連接選項(xiàng)圖16-6選擇SQL數(shù)據(jù)庫(kù)作為數(shù)據(jù)源步驟3 單擊“確定〞按鈕后將彈出如圖16-7所示的“添加連接〞對(duì)話框,在該對(duì)話框中設(shè)置效勞器名稱為“.〞,選擇“使用SQLServer身份驗(yàn)證(Q)〞方式,設(shè)置用戶名為“sa〞,不設(shè)置密碼〔讀者也可以根據(jù)實(shí)際需要自行設(shè)置密碼〕,然后選擇一個(gè)本地的數(shù)據(jù)庫(kù)。C#程序設(shè)計(jì)工程教程步驟2 翻開(kāi)“效勞器資源管理器〞,如46C#程序設(shè)計(jì)工程教程步驟4 單擊“確定〞按鈕,返回到“效勞器資源管理器〞中,將看到新添加的數(shù)據(jù)庫(kù)連接,展開(kāi)數(shù)據(jù)庫(kù)中的“表〞結(jié)點(diǎn),如圖16-8左圖所示,選中要連接的表,將其拖放到新建的文件設(shè)計(jì)界面中,如圖16-8右圖所示。圖16-7添加連接數(shù)據(jù)庫(kù)圖16-8將數(shù)據(jù)庫(kù)其拖放至設(shè)計(jì)界面C#程序設(shè)計(jì)工程教程步驟4 單擊“確定〞按鈕,返回到“效47C#程序設(shè)計(jì)工程教程步驟5 在解決方案資源管理器中,展開(kāi)“〞結(jié)點(diǎn),翻開(kāi)其下的可以看到系統(tǒng)自動(dòng)創(chuàng)立了prouct數(shù)據(jù)庫(kù)中Pro_table表的映射,如圖16-9所示。圖16-9查看系統(tǒng)生成的實(shí)體類C#程序設(shè)計(jì)工程教程步驟5 在解決方案資源管理器中,展開(kāi)48C#程序設(shè)計(jì)工程教程三、LINQtoSQLDataContext對(duì)象LINQtoSQLDataContext是LINQtoSQL框架的主入口點(diǎn),用于把查詢句法翻譯成SQL語(yǔ)句,以及把數(shù)據(jù)從數(shù)據(jù)庫(kù)返回給調(diào)用方和把實(shí)體的修改寫入數(shù)據(jù)庫(kù)。DataContext是實(shí)體和數(shù)據(jù)庫(kù)之間的橋梁,使用它之前,我們首先需要定義映射到數(shù)據(jù)表的實(shí)體,即創(chuàng)立LINQ對(duì)象。創(chuàng)立數(shù)據(jù)庫(kù)連接和LINQ對(duì)象后,我們要實(shí)例化LINQtoSQLDataContext對(duì)象用于接收數(shù)據(jù)庫(kù)信息。例如:LINQtoSQLDataContextlinq; //聲明Linq連接對(duì)象linq=newLINQtoSQLDataContext(strCon);//實(shí)例化Linq連接對(duì)象selectnew{編號(hào)=info.Pro_id,
商品名稱=info.Pro_name.Trim(),
價(jià)格=info.Pro_price,
產(chǎn)地=info.Pro_address.Trim(),};C#程序設(shè)計(jì)工程教程三、LINQtoSQLDataConte49C#程序設(shè)計(jì)工程教程任務(wù)實(shí)施——查詢超市商品數(shù)據(jù)庫(kù)中的數(shù)據(jù)任務(wù)說(shuō)明通過(guò)LINQtoSQL技術(shù)查詢超市商品數(shù)據(jù)庫(kù)中的數(shù)據(jù),可根據(jù)輸入的查詢條件和關(guān)鍵字檢索并顯示數(shù)據(jù)庫(kù)數(shù)據(jù),程序運(yùn)行效果如以下圖所示。實(shí)施步驟步驟1 啟動(dòng)VisualStudio2021新建一個(gè)Windows應(yīng)用程序,將其命名為“l(fā)inq查詢〞。并將默認(rèn)主窗體Form1的“Text〞屬性設(shè)置為“使用LINQ技術(shù)查詢SQL中的數(shù)據(jù)〞。Form1窗體設(shè)計(jì)時(shí)所用控件及設(shè)置如下表所示。C#程序設(shè)計(jì)工程教程任務(wù)實(shí)施——查詢超市商品數(shù)據(jù)庫(kù)中的數(shù)據(jù)任50C#程序設(shè)計(jì)工程教程步驟2 按圖16-11左圖所示設(shè)置Form1中控件的布局,然后單擊“comboBox1〞右上角小三角,如圖16-11右圖所示,在彈出的右側(cè)菜單中選擇“編輯項(xiàng)〞選項(xiàng)。圖16-11任務(wù)設(shè)計(jì)界面效果圖C#程序設(shè)計(jì)工程教程步驟2 按圖16-11左圖所示設(shè)置F51C#程序設(shè)計(jì)工程教程步驟3 將翻開(kāi)“字符串集合編輯器〞對(duì)話框,如圖16-12所示,向comboBox1中添加查詢條件的內(nèi)容,然后單擊“確定〞按鈕。圖16-12添加查詢條件的內(nèi)容步驟4 翻開(kāi)SQLServer數(shù)據(jù)庫(kù)軟件,向SQLServer數(shù)據(jù)庫(kù)中附加資料包中的商品數(shù)據(jù)庫(kù)product。按照“預(yù)備知識(shí)〞中的方法向“l(fā)inq查詢〞工程中添加“LinqtoSQL類〞并將其命名為“LINQtoSQL〞,并設(shè)置其與數(shù)據(jù)庫(kù)“product〞的連接關(guān)系。C#程序設(shè)計(jì)工程教程步驟3 將翻開(kāi)“字符串集合編輯器〞對(duì)52C#程序設(shè)計(jì)工程教程步驟5 編寫后臺(tái)代碼,完整代碼如下所示:usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Linq;usingSystem.Text;usingSystem.Windows.Forms;namespacelinq查詢{publicpartialclassForm1:Form{publicForm1(){InitializeComponent();}#region定義公共變量及Linq連接對(duì)象stringstrCon="DataSource=.;database=product;uid=sa;pwd=;“;//定義數(shù)據(jù)庫(kù)連接字符串LINQtoSQLDataContextlinq; //聲明Linq連接對(duì)象#endregionprivatevoidForm1_Load(objectsender,EventArgse){comboBox1.SelectedIndex=0; } //默認(rèn)的選擇項(xiàng)索引值C#程序設(shè)計(jì)工程教程步驟5 編寫后臺(tái)代碼,完整代碼如下所53C#程序設(shè)計(jì)工程教程privatevoidForm1_Activated(objectsender,EventArgse){txtBox1.Focus();} //定義文本框的焦點(diǎn)privatevoidSearchInformation(){linq=newLINQtoSQLDataContext(strCon);//實(shí)例化Linq連接對(duì)象if(txtBox1.Text==""){varresult=frominfoinlinq.Pro_table //利用LINQ技術(shù)實(shí)現(xiàn)查詢selectnew{編號(hào)=info.Pro_id,商品名稱=info.Pro_name.Trim(),
價(jià)格=info.Pro_price,產(chǎn)地=info.Pro_address.Trim(),
公司=info.Pro_company.Trim(),};dataGridView1.DataSource=result;} //將結(jié)果綁定到數(shù)據(jù)控件中
else{inti=comboBox1.SelectedIndex;switch(i) //利用switch語(yǔ)句實(shí)現(xiàn)查找條件的判斷{case0: //根據(jù)編號(hào)查找varproductid=frominfoinlinq.Pro_tablewhereinfo.Pro_id==txtBox1.Text.Trim()selectnew{編號(hào)=info.Pro_id,商品名稱=info.Pro_name.Trim(),
價(jià)格=info.Pro_price,產(chǎn)地=info.Pro_address.Trim(),
公司=info.Pro_company.Trim(),};C#程序設(shè)計(jì)工程教程privatevoidForm1_A54C#程序設(shè)計(jì)工程教程dataGridView1.DataSource=productid;break;case1: //根據(jù)商品名稱查找varproductname=frominfoinlinq.Pro_tablewhereinfo.Pro_name==txtBox1.Text.Trim()selectnew{編號(hào)=info.Pro_id,商品名稱=info.Pro_name.Trim(),價(jià)格=info.Pro_price,產(chǎn)地=info.Pro_address.Trim(),公司=info.Pro_company.Trim(),};dataGridView1.DataSource=productname;break;case2: //根據(jù)價(jià)格查找whereinfo.Pro_price.ToString()==txtBox1.Text.Trim()selectnew{編號(hào)=info.Pro_id,商品名稱=info.Pro_name.Trim(),價(jià)格=info.Pro_price,產(chǎn)地=info.Pro_address.Trim(),公司=info.Pro_company.Trim(),};dataGridView1.DataSource=productprice;break;C#程序設(shè)計(jì)工程教程dataGridView1.DataS55C#程序設(shè)計(jì)工程教程case3: //根據(jù)產(chǎn)地whereinfo.Pro_address==txtBox1.Text.Trim()selectnew{編號(hào)=info.Pro_id,商品名稱=info.Pro_name.Trim(),價(jià)格=info.Pro_price,產(chǎn)地=info.Pro_address.Trim(),公司=info.Pro_company.Trim(),};dataGridView1.DataSource=productadress;break;case4: //根據(jù)公司名稱查找whereinfo.Pro_company==txtBox1.Text.Trim()selectnew{編號(hào)=info.Pro_id,商品名稱=info.Pro_name.Trim(),
價(jià)格=info.Pro_price,產(chǎn)地=info.Pro_address.Trim(),
公司=info.Pro_company.Trim(),};dataGridView1.DataSource=productcompany;break;}}}privatevoidbutton1_Click(objectsender,EventArgse){SearchInformation();}}} //調(diào)用查詢方法步驟6 按【F5】鍵調(diào)試程序,查看運(yùn)行結(jié)果。C#程序設(shè)計(jì)工程教程case3: //根據(jù)產(chǎn)地步驟656C#程序設(shè)計(jì)工程教程任務(wù)二
通過(guò)LINQ技術(shù)添加數(shù)據(jù)任務(wù)說(shuō)明在本任務(wù)中我們學(xué)習(xí)如何通過(guò)LINQ技術(shù)向SQL數(shù)據(jù)庫(kù)中添加數(shù)據(jù)。預(yù)備知識(shí)向SQL數(shù)據(jù)庫(kù)中添加數(shù)據(jù)主要分為以下四步:第一步:實(shí)例化LINQtoSQLDataContext對(duì)象。LINQtoSQLDataContextcontext=newLINQtoSQLDataContext();第二步:生成實(shí)體對(duì)象。Infodata=newInfo{Code="x004",Name="馬大哈",Sex=false,Nation="n001",Birthday=newDateTime(1989,12,28)};C#程序設(shè)計(jì)工程教程任務(wù)二通過(guò)LINQ技術(shù)添加數(shù)據(jù)任務(wù)說(shuō)57C#程序設(shè)計(jì)工程教程第三步:向LINQtoSQLDataContext對(duì)象的Table<TEntity>集合中添加上一步中生成的實(shí)體對(duì)象。例如:context.Infos.InsertOnSubmit(data); //Infos為表名也可以使用Table<TEntity>集合的InsertAllOnSubmit(IEnumberable<T>)方法一次注冊(cè)添加多個(gè)新對(duì)象,以便一次性向數(shù)據(jù)庫(kù)插入這些數(shù)據(jù)。第四步:使用DataContext對(duì)象的context.SubmitChanges()方法提交更改。例如:context.SubmitChanges();C#程序設(shè)計(jì)工程教程第三步:向LINQtoSQLDataCo58C#程序設(shè)計(jì)工程教程任務(wù)實(shí)施——向超市商品數(shù)據(jù)庫(kù)中添加數(shù)據(jù)任務(wù)說(shuō)明程序運(yùn)行效果如圖16-13所示,加載程序時(shí)首先讀出數(shù)據(jù)庫(kù)中的商品信息,在添加數(shù)據(jù)時(shí),商品編號(hào)、商品名稱、單價(jià)、產(chǎn)地和公司名稱中任何一個(gè)字段都不允許為空。添加完成后,能夠自動(dòng)刷新顯示的數(shù)據(jù)。圖16-13C#程序設(shè)計(jì)工程教程任務(wù)實(shí)施——向超市商品數(shù)據(jù)庫(kù)中添加數(shù)據(jù)任59C#程序設(shè)計(jì)工程教程實(shí)施步驟步驟1 啟動(dòng)VisualStudio2021新建一個(gè)Windows應(yīng)用程序,將其命名為“l(fā)inq添加數(shù)據(jù)〞,默認(rèn)主窗體為Form1,并將Form1的“Text〞屬性設(shè)置為“使用LINQ技術(shù)實(shí)現(xiàn)向SQL數(shù)據(jù)庫(kù)中添加數(shù)據(jù)〞。然后向SQLServer2005數(shù)據(jù)庫(kù)中導(dǎo)入已經(jīng)建立完畢的商品數(shù)據(jù)庫(kù),數(shù)據(jù)庫(kù)名稱為product。步驟2 設(shè)計(jì)Form1窗體,所用控件及說(shuō)明如表16-2所示,界面完成效果如圖16-13所示。C#程序設(shè)計(jì)工程教程實(shí)施步驟步驟1 啟動(dòng)VisualS60C#程序設(shè)計(jì)工程教程步驟3 添加“LINQtoSQL類〞,并將其命名為“l(fā)inqtosql〞。步驟4 編寫后臺(tái)代碼,詳細(xì)代碼如下所示:C#程序設(shè)計(jì)工程教程步驟3 添加“LINQtoSQL61C#程序設(shè)計(jì)工程教程publicpartialclassForm1:Form{publicForm1(){InitializeComponent();}privatevoidbutton2_Click(objectsender,EventArgse){Application.Exit();} //退出程序//定義連接數(shù)據(jù)庫(kù)的字符串
stringstrCon="DataSource=(local);database=product;uid=sa;pwd=;";linqtosqlDataContextlinq; //定義linq對(duì)象
privatevoidForm1_Activated(objectsender,EventArgse){textBox1.Focus();}privatevoidshowinfo() //定義一個(gè)方法用來(lái)顯示數(shù)據(jù)表里的信息
{linq=newlinqtosqlDataContext(strCon); //實(shí)例化linqselectnew{編號(hào)=info.Pro_id,商品名稱=info.Pro_name.Trim(),
價(jià)格=info.Pro_price,產(chǎn)地=info.Pro_address.Trim(),
公司=info.Pro_company.Trim(),};dataGridView1.DataSource=result;
} //將結(jié)果綁定到數(shù)據(jù)控件上privatevoidForm1_Load(objectsender,EventArgse){showinfo();
} //程序加載的時(shí)候調(diào)用顯示數(shù)據(jù)信息的方法C#程序設(shè)計(jì)工程教程publicpartialclass62C#程序設(shè)計(jì)工程教程privatevoidbutton1_Click(objectsender,EventArgse){//判斷是否有空信息if(textBox1.Text!=""&&textBox2.Text!=""&&textBox3.Text!=""&&textBox4.Text!=""&&textBox5.Text!=""){linq=newlinqtosqlDataContext(strCon); //實(shí)例化linq對(duì)象Pro_tableusers=newPro_table(); //實(shí)例化Pro_table類users.Pro_id=textBox1.Text.Trim(); //商品編號(hào)users.Pro_name=textBox2.Text.Trim(); //商品名稱users.Pro_price=Convert.ToDecimal(textBox3.Text.Trim());//商品價(jià)格數(shù)據(jù)的強(qiáng)制轉(zhuǎn)換users.Pro_address=textBox4.Text.Trim(); //商品產(chǎn)地users.Pro_company=textBox5.Text.Trim(); //公司名稱linq.Pro_table.InsertOnSubmit(users); //提交數(shù)據(jù)linq.SubmitChanges(); //執(zhí)行對(duì)數(shù)據(jù)的修改showinfo(); //重新綁定數(shù)據(jù)信息MessageBox.Show("數(shù)據(jù)添加成功!");}}}步驟5 按【F5】鍵調(diào)試程序,運(yùn)行結(jié)果參見(jiàn)圖16-13所示。C#程序設(shè)計(jì)工程教程privatevoidbutton163C#程序設(shè)計(jì)工程教程任務(wù)三
通過(guò)LINQ技術(shù)刪除數(shù)據(jù)任務(wù)說(shuō)明在本任務(wù)中我們來(lái)學(xué)習(xí)如何使用LINQ技術(shù)刪除指定SQL數(shù)據(jù)庫(kù)中的數(shù)據(jù)。預(yù)備知識(shí)刪除與添加數(shù)據(jù)的步驟相似,只是刪除動(dòng)作需要通過(guò)DeleteAllOnSubmit方法完成,方法原型如下:voidDeletAllOnSubmit(Ienumerableentities)//entities表示要移除所有項(xiàng)的集合完成刪除操作后,同樣需要通過(guò)context.SubmitChanges()方法提交更改。C#程序設(shè)計(jì)工程教程任務(wù)三通過(guò)LINQ技術(shù)刪除數(shù)據(jù)任務(wù)說(shuō)64C#程序設(shè)計(jì)工程教程任務(wù)說(shuō)明任務(wù)實(shí)施——?jiǎng)h除超市商品數(shù)據(jù)庫(kù)中的數(shù)據(jù)程序運(yùn)行效果如圖16-14所示,程序運(yùn)行時(shí)首先顯示數(shù)據(jù)表中的數(shù)據(jù),用戶選中某一行數(shù)據(jù)后單擊“刪
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 如何解決研究院的科研工作者在實(shí)驗(yàn)室內(nèi)部高效溝通等問(wèn)題-TIKOOL太酷無(wú)線內(nèi)通
- 餐椅質(zhì)保合同范本
- 北京市商品房現(xiàn)房買賣合同示范文本
- 湖南省益陽(yáng)市赫山區(qū)海棠學(xué)校2024-2025學(xué)年上學(xué)期期中考試八年級(jí)英語(yǔ)試題(含答案)
- 輸單員年終總結(jié)
- 頸椎病及保健操
- 教師工作總結(jié)述職報(bào)告
- 調(diào)查物聯(lián)網(wǎng)安全
- 2024年企業(yè)端午節(jié)活動(dòng)總結(jié)(4篇)
- 建筑工程公司經(jīng)營(yíng)部管理制度模版(3篇)
- 產(chǎn)業(yè)經(jīng)濟(jì)學(xué)第十章古諾模型課件
- 新版中國(guó)食物成分表
- 嵌入式操作系統(tǒng)FreeRTOS的原理與現(xiàn)
- 瓶裝水營(yíng)銷方案
- 小學(xué)生怎樣正確使用電子產(chǎn)品
- 《關(guān)于早戀教育》主題班會(huì)上課版1
- 中班童話欣賞:樹(shù)蔭
- 講Z3040型搖臂鉆床的電氣控制
- 中職幼兒保育職業(yè)規(guī)劃書(shū)
- 冰雪路面行車技巧
- 教科版(新)科學(xué)五年級(jí)上冊(cè)第一單元測(cè)試題試卷(含答案)
評(píng)論
0/150
提交評(píng)論