C#連接后臺(tái)數(shù)據(jù)庫(kù)開發(fā)學(xué)生管理系統(tǒng)課程設(shè)計(jì),過(guò)程步驟細(xì)_第1頁(yè)
C#連接后臺(tái)數(shù)據(jù)庫(kù)開發(fā)學(xué)生管理系統(tǒng)課程設(shè)計(jì),過(guò)程步驟細(xì)_第2頁(yè)
C#連接后臺(tái)數(shù)據(jù)庫(kù)開發(fā)學(xué)生管理系統(tǒng)課程設(shè)計(jì),過(guò)程步驟細(xì)_第3頁(yè)
C#連接后臺(tái)數(shù)據(jù)庫(kù)開發(fā)學(xué)生管理系統(tǒng)課程設(shè)計(jì),過(guò)程步驟細(xì)_第4頁(yè)
C#連接后臺(tái)數(shù)據(jù)庫(kù)開發(fā)學(xué)生管理系統(tǒng)課程設(shè)計(jì),過(guò)程步驟細(xì)_第5頁(yè)
已閱讀5頁(yè),還剩7頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、王L讓我們弄個(gè)課程設(shè)計(jì),才講兩節(jié)課就撒手不管了。還說(shuō)簡(jiǎn)單,簡(jiǎn)單個(gè)JB。對(duì)他來(lái)說(shuō)當(dāng)然簡(jiǎn)單了,對(duì)我這樣的菜鳥來(lái)說(shuō)簡(jiǎn)直是難如登天,我相信像我這樣的菜鳥肯定還有,只有菜鳥才知道菜鳥的辛苦,為了讓這些菜鳥們不再辛苦了,我把所有的實(shí)驗(yàn)過(guò)程一步一步都給寫了出來(lái),細(xì)化到最簡(jiǎn)單,只要是個(gè)人都能看懂的。不能保證我的過(guò)程都是對(duì)了,我也是摸著石頭過(guò)了河,在菜鳥們還沒(méi)有看到橋的時(shí)候不妨也摸著石頭走一趟吧。下面步驟中的一些東西是本人的看法,如果錯(cuò)了也不必吐糟,畢竟哥還是個(gè)初級(jí)菜鳥?!镜谝痪植浚簞?chuàng)立數(shù)據(jù)庫(kù)】1,在自己的E盤建立一個(gè)名為課程設(shè)計(jì)數(shù)據(jù)庫(kù)的文件夾。2,翻開sql server 2021,點(diǎn)擊新建查詢,在右邊的編輯

2、框里輸入如下代碼?點(diǎn)擊執(zhí)行。create database student onprimary(name=student_dat,filename='E:課程設(shè)計(jì)數(shù)據(jù)庫(kù)student.mdf',size=5MB,maxsize=50,filegrowth=2MB)log on(name=教學(xué)管理數(shù)據(jù)庫(kù)_log,filename='E:課程設(shè)計(jì)數(shù)據(jù)庫(kù)student.ldf',size=5MB,maxsize=100MB,filegrowth=2MB)gouse studentgoCREATE TABLE student(sno NVARCHAR(10) PRIMA

3、RY KEY,sname NVARCHAR(8),ssex NVARCHAR(1),sbirthday NVARCHAR(10)create table userlogin( username NVARCHAR(8) primary key, password nvarchar(20) NOT NULL)insert into student values('2021001','許敏','女','1992/03/18')insert into student values('2021002','王鵬'

4、;,'男','1996/12/28')insert into student values('2021003','張壘','男','1988/01/13')insert into student values('2021004','李小紅','女','1993/06/22')insert into student values('2021005','張哲','男','1992/12

5、/30')insert into student values('2021006','張強(qiáng)','男','1989/01/06')insert into student values('2021007','劉敏紅','女','1988/12/02')insert into userlogin values('admin','123456')insert into userlogin values('zhangsan'

6、;,'123456')insert into userlogin values('lisi','123456')這里面有兩張表,一張是學(xué)生表,一張是登錄表,里面是用戶名和密碼。3,這是會(huì)發(fā)現(xiàn)在E盤創(chuàng)立的文件家里出現(xiàn)了兩個(gè)文件,一個(gè)是數(shù)據(jù)庫(kù)文件一個(gè)是數(shù)據(jù)庫(kù)日志文件。就這樣后臺(tái)數(shù)據(jù)庫(kù)就創(chuàng)立好了。大家也可以根據(jù)自己的需要來(lái)修改【第二局部:創(chuàng)立登陸窗口】1,,翻開isual studio 2021,文件?新建?工程。2,左邊點(diǎn)擊visual c#,右邊點(diǎn)擊window窗體應(yīng)用程序。3,名稱改為studentMIS,位置根據(jù)自己情況而定。一定要在創(chuàng)立解決方

7、案的目錄前面打鉤。4,這時(shí)界面有一個(gè)Form1窗體了。下面我們要做的就是設(shè)置三層架構(gòu)了。簡(jiǎn)單的說(shuō)就是添加三個(gè)類庫(kù)。5,三個(gè)類庫(kù)分別是是BBL(邏輯判斷層,我們一般用不到,也可以不添加),DAL數(shù)據(jù)操作層,操作數(shù)據(jù)庫(kù)的代碼都寫在這里,MODEL聯(lián)系層與層之間的關(guān)系6,點(diǎn)擊文件?添加?新建工程?類庫(kù)。名稱改為DAL。點(diǎn)擊文件?添加?新建工程?類庫(kù)。名稱改為MODEL。這里不需要用到BBL層,所以就不添加了。7,前面的步驟就把這次試驗(yàn)的根本架構(gòu)弄好了,下面要弄的就是添加事件了,怎么登錄和連接后臺(tái)數(shù)據(jù)庫(kù),以及對(duì)數(shù)據(jù)庫(kù)的修改。8,展開用邊的studentMIS,選中Form1,重命名為,雙擊formlo

8、gin,點(diǎn)擊視圖?屬性窗口。在出現(xiàn)的屬性窗口中將text后面的Form1改為登錄。看看name后面是否為formlogin,(這就相當(dāng)與是這個(gè)登錄窗口的ID,唯一表示這個(gè)窗體,以后所創(chuàng)立的每一個(gè)窗體都有一個(gè)在試驗(yàn)中唯一的名字來(lái)表示自己)。9,下面來(lái)添加窗體的控件按鈕。點(diǎn)擊視圖?工具箱,展開所有windows窗體。左鍵單擊Label控件,按后把鼠標(biāo)放在我們登錄窗體中空白位置左鍵點(diǎn)擊一下,就會(huì)發(fā)現(xiàn)登錄窗體中出現(xiàn)了一個(gè)label1的字樣,用同樣的方法就會(huì)發(fā)現(xiàn)出現(xiàn)了label2.鼠標(biāo)點(diǎn)中l(wèi)abel1,在屬性窗口將text后面的改為用戶名。鼠標(biāo)點(diǎn)中l(wèi)abel2,在屬性窗口中將text后面的改為密碼。10

9、,在工具箱中找到TextBox控件。同樣方法鼠標(biāo)單擊,然后在登錄窗體中空白位置單擊鼠標(biāo)左鍵,就會(huì)出現(xiàn)編輯框,用鼠標(biāo)左鍵選中編輯框,在屬性窗口中將name后面的改為txtboxusername.用同樣的方法再添加一個(gè)編輯框控件,在屬性窗口中將name后面的改為txtboxpassword。11,現(xiàn)在添加按鈕控件,在工具箱中找到Button控件,左鍵單擊,然后在登錄窗體中的空白位置單擊左鍵,選中按鈕控件,在他的屬性窗口中將text后面的改為登錄,將name后面的改為btnlogin。用同樣的方法再添加一個(gè)按鈕控件,講將text后面的改為取消,將name后面的改為btncancel。12,經(jīng)過(guò)12個(gè)

10、步驟我們就創(chuàng)立好了一個(gè)登陸窗口。【第三局部:連接數(shù)據(jù)庫(kù)登陸】1,在建立數(shù)據(jù)庫(kù)的連接前先說(shuō)一下本人對(duì)于這個(gè)連接后臺(tái)數(shù)據(jù)庫(kù)的原理的理解。在我們?cè)诘顷懘翱诘木庉嬁蚶镙斎胗脩裘兔艽a后點(diǎn)擊登陸時(shí),在登陸事件里我們通過(guò)MODEL層函數(shù)UserInformation將我們輸入的信息傳到DAL層的getUserInformation函數(shù)內(nèi),該函數(shù)的功能是傳過(guò)來(lái)的信息與我們開始在后臺(tái)數(shù)據(jù)庫(kù)里保存的用戶名和密碼進(jìn)行比照,如果比照成功就會(huì)顯示登陸成功,這樣就可以翻開另一個(gè)窗口了,然后就可以進(jìn)行操作,否那么顯示登陸失敗。2,首先我們來(lái)實(shí)現(xiàn)后臺(tái)數(shù)據(jù)庫(kù)比照我們輸入信息的代碼。展開DAL層,刪除其實(shí)我們也可以直接改名而不

11、用刪除的,為了更好的演示,我們還是自己創(chuàng)立比擬好,選中DAL,點(diǎn)擊右鍵?添加?新建項(xiàng)。在彈出的對(duì)話框左邊選擇C#項(xiàng),右邊選擇類。名稱改為。3,展開DAL層,雙擊,進(jìn)入了編輯框,這里面寫一些操作數(shù)據(jù)庫(kù)的代碼,在class前面加上public,在Dal類中添加如下代碼。下面代碼的作用是將你輸入的信息和數(shù)據(jù)庫(kù)里信息比照,如果正確就返回1,顯示登陸成功,如果不正確就不返回1,顯示登陸失敗。public static int getUserInformation(UserInformation user) string connstr = "server=.;database=student;

12、integrated security=sspi" using (SqlConnection conn = new SqlConnection(connstr) conn.Open(); using(SqlCommand cmd=conn.CreateCommand() cmd.CommandText = "select count(*) from userlogin where username=name and password=pwd" cmd.Parameters.Add(new SqlParameter("name",user.get

13、UserName(); cmd.Parameters.Add(new SqlParameter("pwd",user.getPassword(); int count= Convert.ToInt32(cmd.ExecuteScalar(); return count; 輸入代碼是要注意左邊大括號(hào)和右邊大括號(hào)的個(gè)數(shù)要相等。下面都是遵循這個(gè)原那么的,在后面我就不多說(shuō)了。4,接下來(lái)我們要在MODEL層里創(chuàng)立一個(gè)UserInformation類,方法如上,名稱改為。建好后雙擊進(jìn)入編輯框,在class UserInformation前加上public,類中添加如下代碼private

14、 string username; private string password; public UserInformation(string username,string password) this.username = username; this.password = password; public string getUserName() return username; public string getPassword() return password; 5,在我們點(diǎn)擊登陸時(shí)如果登陸成功,應(yīng)該跳轉(zhuǎn)到另一個(gè)窗口,多以首先我們應(yīng)該創(chuàng)立一個(gè)新窗體,學(xué)生管理系統(tǒng)。選中studen

15、tMIS,右鍵?添加?新建項(xiàng)。選擇windows窗體。名稱改為。創(chuàng)立好后在屬性框中將text后面改為學(xué)生管理系統(tǒng)。6,雙擊。雙擊登陸按鈕進(jìn)入編輯框,輸入如下代碼UserInformation user = new UserInformation(txtboxusername.Text.Trim(), txtboxpassword.Text.Trim(); int count=DAL.Dal.getUserInformation(user); if(count=1) new formmain().Show(); this.Hide(); else MessageBox.Show("錯(cuò)誤

16、的用戶名或密碼!"); txtboxusername.Text = ""/清空 txtboxpassword.Text = "" txtboxusername.Focus();/獲取焦點(diǎn) 7,雙擊formlogin放回到登陸窗口,雙擊取消,輸入代碼 this.Close();。8,現(xiàn)在我們可以開始調(diào)試了,看看能不能成功,左鍵選中studentMIS,點(diǎn)擊調(diào)試?啟動(dòng)調(diào)試。9,這是我們會(huì)發(fā)現(xiàn)調(diào)試不成功,點(diǎn)擊否,出現(xiàn)4個(gè)錯(cuò)誤,什么缺少應(yīng)用之類的。出現(xiàn)這樣的錯(cuò)誤原因是,我們沒(méi)有應(yīng)用,這就好似我們寫程序而沒(méi)有寫頭文件一樣。該怎么解決呢,很簡(jiǎn)單。選中DAL

17、,右鍵?添加引用?工程,點(diǎn)擊MODEL,確定。選中studentMIS,右鍵?添加引用?工程,點(diǎn)擊DAL,確定,選中studentMIS,右鍵?添加引用?工程,點(diǎn)擊MODEL。確定10,進(jìn)過(guò)第九步還沒(méi)有解決問(wèn)題,雙擊。在最上面加上using MODEL;using System.Data.SqlClient;。雙擊登陸進(jìn)入編輯框,在最上面添加using DAL;using MODEL; 11,這時(shí)我們?cè)缯{(diào)試一遍,在彈出的登陸窗口中輸入用戶名和密碼,點(diǎn)擊登陸后會(huì)彈出一個(gè)新的窗口,學(xué)生管理系統(tǒng)。12到這里我們連接后臺(tái)數(shù)據(jù)庫(kù)登陸就做成功了。下面我們需要做的就是在學(xué)生管理系統(tǒng)窗口添加一些控件來(lái)顯示后臺(tái)

18、數(shù)據(jù)庫(kù)的學(xué)生表信息,以及對(duì)數(shù)據(jù)庫(kù)增刪查改操作的控件?!镜谒木植繑?shù)學(xué)生管理系統(tǒng)添加控件】1,現(xiàn)在我們先來(lái)試一試在學(xué)生管理系統(tǒng)顯示數(shù)據(jù)庫(kù)中學(xué)生表中的信息,雙擊,在工具箱中找到DataGridView控件,在學(xué)生管理系統(tǒng)窗體中添加這個(gè)控件,在屬性窗口中將name)后面的改為dgv。下面我,們就開始來(lái)寫代碼了。2,需要輸出數(shù)據(jù)庫(kù)中的表,對(duì)數(shù)據(jù)庫(kù)操作,需要在DAL中寫代碼。展開DAL,雙擊Dal,cs進(jìn)入編輯頁(yè)面,添加下面代碼 public static DataTable returnTable() string connstr = "server=.;database=student;in

19、tegrated security=sspi" string sql="select * from student" using (SqlConnection conn = new SqlConnection(connstr)/連接數(shù)據(jù)庫(kù)的字符串 conn.Open();/翻開對(duì)數(shù)據(jù)庫(kù)的連接 using (SqlDataAdapter adapter = new SqlDataAdapter(sql,connstr) /數(shù)據(jù)的適配器,負(fù)責(zé)填充數(shù)據(jù) DataTable table = new DataTable(); adapter.Fill(table); ret

20、urn table; 代碼的作用是返回?cái)?shù)據(jù)庫(kù)中的學(xué)生表。3,鼠標(biāo)選中學(xué)生管理系統(tǒng)窗體,雙擊進(jìn)入編輯頁(yè)面,輸入一下代碼。dgv.DataSource= DAL.Dal.returnTable();在最上面添加using System.Data;。下面我們就可以來(lái)調(diào)試一下,發(fā)現(xiàn)在學(xué)生管理系統(tǒng)上出現(xiàn)了數(shù)據(jù)庫(kù)中的學(xué)生表了。調(diào)試成功。4,雖然調(diào)試成功了,只是顯示學(xué)生表,我們可以加一些修飾來(lái)移動(dòng)表里的記錄,比方說(shuō)上一記錄,下一記錄,首記錄,尾記錄等等。下面我們就開始來(lái)實(shí)現(xiàn)這些功能。5,首先在DataGridView控件下面添加4個(gè)Button按鈕控件,屬性框的text分別為首記錄,尾記錄,上一記錄,下一記

21、錄。name后面分別改為btnfirst,btnlast,btnprevious,btnnext。6,下面就來(lái)實(shí)現(xiàn)事件了,首先鼠標(biāo)選中學(xué)生管理系統(tǒng)窗體,雙擊進(jìn)入編輯頁(yè)面,在studentMIS的命名空間先添加如下代碼,值得注意的是不是添加在studentMIS的命名空間的里面任何一個(gè)類里。BindingSource bs = new BindingSource();7,返回學(xué)生管理系統(tǒng)窗體,雙擊首記錄進(jìn)入代碼編輯區(qū),添加代碼bs.MoveFirst();。雙擊尾記錄進(jìn)入代碼編輯區(qū),添加代碼bs.MoveLast();。雙擊上一記錄進(jìn)入代碼編輯區(qū),添加代碼bs.MovePrevious();。雙

22、擊下一記錄進(jìn)入代碼編輯區(qū),添加代碼 bs.MoveNext();。下面我們來(lái)調(diào)試一下看看怎么樣。發(fā)現(xiàn)四個(gè)按鈕沒(méi)用,怎么回事?不急,這是因?yàn)槲覀冊(cè)陲@示學(xué)生表示是直接調(diào)用returnTable();的。雙擊dgv控件進(jìn)入編輯區(qū),用turnTable(); dgv.DataSource = bs;來(lái)替換原來(lái)的gv.DataSource= DAL.Dal.returnTable()。下面我們?cè)賮?lái)調(diào)試一下,成功了。8,這回我們?cè)賮?lái)添加一個(gè)修飾,顯示當(dāng)前用戶。首先在學(xué)生管理系統(tǒng)窗體添加一個(gè)label控件放在什么地方隨便你們,在屬性框中將text改為當(dāng)前用戶。再添加一個(gè)label控件放在其后,將屬性框中的t

23、ext后面字母刪除。name后面改為lbltip。9,顯示當(dāng)前用戶為靜態(tài)的,所以需要在studentMIS下創(chuàng)立一個(gè)類,右鍵?添加?新建項(xiàng)?類。名稱改為common。雙擊common,添加代碼public static string username;。在class common前添加public,和上面一樣,把這些類設(shè)為公共類,這樣別的函數(shù)就可以訪問(wèn)了。10,返回學(xué)生管理系統(tǒng)窗體,雙擊窗體添加代碼,lbltip.Text = common.username;。調(diào)試一下看看結(jié)果怎么樣?!緮?shù)據(jù)庫(kù)的增刪查改操作】1,前面我們實(shí)現(xiàn)了連接數(shù)據(jù)庫(kù)的登陸以及顯示數(shù)據(jù)庫(kù)中的表。這回我們來(lái)實(shí)現(xiàn)如何操作數(shù)據(jù)庫(kù)中

24、的數(shù)據(jù)。2,首先我們雙擊formmain進(jìn)入學(xué)生管理系統(tǒng)窗體,在工具箱中的菜單和工具欄中點(diǎn)擊MenuStrip控件,添加到窗體的dgv控件的上面。我們可以在第一個(gè)標(biāo)題中輸入“系統(tǒng),在其下拉空格中輸入,注銷和退出。在第二個(gè)標(biāo)題中輸入“信息管理,在其下拉空格中輸入四個(gè)菜單項(xiàng)選擇項(xiàng),插入學(xué)生信息,刪除學(xué)生信息,修改學(xué)生信息,查詢學(xué)生信息。大家還可以根據(jù)自己的需要來(lái)添加菜單項(xiàng),我們這里主要是實(shí)現(xiàn)增刪查改,所以我們就不添加很多了。3,到這一步了我們就可以為增刪查改來(lái)添加窗體了,但是在這之前我要說(shuō)一聲,實(shí)現(xiàn)增刪查改的過(guò)程中我們會(huì)不停的調(diào)試,如果每一次調(diào)試都需要輸入用戶名和密碼會(huì)很麻煩的,既然我們的登陸窗口

25、已經(jīng)設(shè)計(jì)成功了,呢么接下來(lái)我們就不必每次太調(diào)試都運(yùn)行登陸窗口了,我們可以暫時(shí)跳過(guò)這個(gè)窗口,等到程序完全結(jié)束后我們?cè)賮?lái)運(yùn)行它。雙擊studentMIS下面的。在代碼 Application.Run(new formlogin();前添加/,表示不運(yùn)行他了,在其下面添加代碼Application.Run(new formmain();,便是直接運(yùn)行formmain這個(gè)窗口,也就是學(xué)生管理系統(tǒng)窗體。下面天使一下看看,沒(méi)有了登陸窗口,直接進(jìn)入了學(xué)生管理窗口。4,前面我們說(shuō)過(guò)MODEL層是聯(lián)系層與層之間聯(lián)系的,我們登陸的用戶名和密碼先傳到MODEL層中的中然后才傳到DAL層中與數(shù)據(jù)庫(kù)做比照的。我們添加刪

26、除等操作也是這樣的,比方我們添加學(xué)生信息,首先我們把信息傳到MODEL層中的StudentInformation中最后DAL層中的StudentDAO調(diào)用StudentInformation就把我們輸入的學(xué)生信息添加到數(shù)據(jù)庫(kù)了。5,那么首先我們要在MODEL層下面添加一個(gè)類名稱為。雙擊進(jìn)入編輯界面,在其前面添加public。類中添加如下代碼private string sno; private string sname; private string sex; private string birthday; public StudentInformation(string sno,strin

27、g sname,string sex,string birthday) this.sno = sno; this.sname = sname; this.sex = sex; this.birthday = birthday; public string getSno() return sno; public string getSname() return sname; public string getSex() return sex; public string getBirthday() return birthday; 代碼的作用是,如果給StudentInformation創(chuàng)立一個(gè)

28、對(duì)象,這個(gè)對(duì)象可以調(diào)用這個(gè)類里的函數(shù)輸出參數(shù)。6,當(dāng)我們出入一條學(xué)生信息到數(shù)據(jù)庫(kù)時(shí)我們需要在dgv控件中顯示出來(lái),那么我們就需要及時(shí)刷新數(shù)據(jù)庫(kù)顯示在dgv中。我們可以學(xué)生管理系統(tǒng)窗體下創(chuàng)立一個(gè)刷新函數(shù)mybinding()。雙擊學(xué)生管理窗體進(jìn)入編輯頁(yè)面,將private void formmain_Load(object sender, EventArgs e)中的代碼bs.DataSource = DAL.Dal.returnTable(); dgv.DataSource = bs;替換成 mybinding();,在其上面輸入以下代碼 public void mybinding()/刷新網(wǎng)

29、格 bs.DataSource = DAL.Dal.returnTable(); dgv.DataSource = bs; 代碼的功能是在后面的程序中只要調(diào)用mybinding()就可以刷新表格了,而不需要從新翻開數(shù)據(jù)庫(kù)才能顯示操作的數(shù)據(jù)。7,接下來(lái)我們要做的就是如何當(dāng)我們點(diǎn)擊插入學(xué)生信息按鈕時(shí)就會(huì)彈出一個(gè)輸入信息的對(duì)話框。下面我們就在studentMIS下面添加一個(gè)windows窗體,名稱改為,在屬性框中將name后面改為formadd。為其添加四個(gè)label控件分別命名為學(xué)號(hào),姓名,性別,出生日期。添加三TextBox控件分別放在學(xué)號(hào),姓名出生日期后面name后面分別改為txtboxsno

30、,txtboxsname,txtboxsbirthday,選擇ComboBox控件放在性別后面,在屬性框中將name后面改為cmbboxsex,text后面改為男。再添加兩個(gè)Button按鈕,text后面改為錄入,取消,name后面改為btninsert,btncancel。8,雙擊插入學(xué)生信息,輸入以下代碼if (new formadd().ShowDialog() = DialogResult.OK) mybinding(); 代碼的作用是顯示我們創(chuàng)立的添加學(xué)生信息窗體,目前還不執(zhí)行mybinding();,也就是說(shuō)不能刷新數(shù)據(jù)庫(kù)。為什么呢?當(dāng)我們錄入數(shù)據(jù)后點(diǎn)擊錄入按鈕,這樣添加信息窗體就

31、會(huì)消失,這時(shí)我們開始調(diào)用mybinding();,但這我們還需要添加一行代碼,當(dāng)窗體消失時(shí)返回值為。雙擊formadd,點(diǎn)擊屬性框上面的閃電標(biāo)志,找到FormClosed,雙擊進(jìn)入編輯頁(yè)面,添加代碼this.DialogResult = DialogResult.OK;。這樣當(dāng)我們錄入好學(xué)生信息后就會(huì)自動(dòng)刷新網(wǎng)格了。9,到這我們應(yīng)該雙擊錄入寫代碼了,可是大家別忘了,我們還沒(méi)有對(duì)DAL層進(jìn)行操作呢。我們只是創(chuàng)立了模板,而沒(méi)有真正實(shí)現(xiàn)插入數(shù)據(jù)到數(shù)據(jù)庫(kù)中。如果我們現(xiàn)在就調(diào)試錄入信息,我們的信息只能傳到MODEL層中的一個(gè)類中而不能被真正錄入到數(shù)據(jù)庫(kù)中,應(yīng)為DAL層中還沒(méi)有函數(shù)調(diào)用MODEL層中的學(xué)生

32、信息。下面我們就開始來(lái)實(shí)現(xiàn)怎么出入傳來(lái)的數(shù)據(jù)到數(shù)據(jù)庫(kù)中。10,先在DAL層下面添加一個(gè)類名稱改為。這是來(lái)實(shí)現(xiàn)插入數(shù)據(jù)到數(shù)據(jù)庫(kù)的。雙擊進(jìn)入編輯區(qū)在類class StudentDAO前加上public,然后在類中添加如下代碼 public static void inserStudent(StudentInformation student) string strsql = "insert into student values(sno,sname,sex,birthday)" SqlParameter para = new SqlParameter new SqlParame

33、ter("sno",SqlDbType.NVarChar), new SqlParameter("sname",SqlDbType.NVarChar), new SqlParameter("sex",SqlDbType.NVarChar), new SqlParameter("birthday",SqlDbType.NVarChar) ; int i = 0; parai+.Value = student.getSno(); parai+.Value = student.getSname(); parai+.Val

34、ue = student.getSex(); parai+.Value = student.getBirthday(); Dal.ExecuteNonQuery(strsql, para); 在最上面添加using MODEL;using System.Data.SqlClient;using System.Data;。這是添加學(xué)生的代碼,刪除修改之類的代碼課依次向下添加。11,現(xiàn)在我們可以調(diào)試一下,發(fā)現(xiàn)顯示一個(gè)錯(cuò)誤,顯示“并不包含“ExecuteNonQuery的定義。這時(shí)我們需要在中添加一個(gè)ExecuteNonQuery。雙擊Dal進(jìn)入編輯區(qū),添加代碼public static void

35、ExecuteNonQuery(string strsql, params SqlParameter para) string connstr = "server=.;database=student;integrated security=sspi" using(SqlConnection conn=new SqlConnection(connstr) conn.Open(); using(SqlCommand cmd=conn.CreateCommand() cmd.CommandText = strsql; cmd.Parameters.AddRange(para);

36、 cmd.ExecuteNonQuery(); 一定要記住的是左大括號(hào)和右大括號(hào)個(gè)數(shù)要相等。12,現(xiàn)在我們調(diào)試一下發(fā)現(xiàn)成功了,接下來(lái)我們的任務(wù)就是編寫錄入事件的代碼了,雙擊錄入按鈕進(jìn)入編輯區(qū)。添加如下代碼if (txtboxsno.Text = "") MessageBox.Show("學(xué)號(hào)不能為空"); txtboxsno.Focus(); return; if (txtboxsname.Text = "") MessageBox.Show("姓名不能為空"); txtboxsname.Focus(); retu

37、rn; /其實(shí),還需要進(jìn)一步判斷:輸入的學(xué)號(hào)與數(shù)據(jù)庫(kù)中的學(xué)號(hào)是否重復(fù) string sno = txtboxsno.Text.Trim(); string sname = txtboxsname.Text.Trim(); string sex = cmbboxsex.Text.Trim(); string day = txtboxsbirthday.Text.Trim(); StudentInformation student = new StudentInformation(sno,sname,sex,day); DAL.StudentDAO.inserStudent(student); t

38、xtboxsno.Text = "" txtboxsname.Text = "" txtboxsbirthday.Text = "" txtboxsno.Focus(); 在最上面添加using MODEL;,因?yàn)橐褂玫絊tudentInformation,添加后表示引用了MODEL;。13,下面來(lái)調(diào)試一下,隨便添加一個(gè)就可以了。下面我們來(lái)實(shí)現(xiàn)刪除事件。首先在studentMIS下面添加一個(gè)windows窗體,名稱改為。在窗體添加一個(gè)label控件,text改為 請(qǐng)輸入要?jiǎng)h除學(xué)生的學(xué)號(hào)。添加一個(gè)TextBox控件,將name后面改為

39、txtboxsno。再添加兩個(gè)Button控件,text分別為刪除當(dāng)前學(xué)生,清空數(shù)據(jù)庫(kù)。14,首先我們要早DAL中的studentDAO中添加刪除學(xué)生信息的代碼。雙擊studentDAO,cs進(jìn)入編輯區(qū),添加代碼 public static void deleteStudent(string studentno) string strsql = "delete from student where sno=no" SqlParameter para = new SqlParameter new SqlParameter("no",SqlDbType.NV

40、arChar) ; para0.Value = studentno; Dal.ExecuteNonQuery(strsql,para); public static void clear() string strsql = "delete from student" SqlParameter para = new SqlParameter ; Dal.ExecuteNonQuery(strsql,para); 14,雙擊菜單欄中的刪除學(xué)生信息,添加代碼 if (new formdelete().ShowDialog() = DialogResult.OK) mybindin

41、g(); 雙擊formdelete,點(diǎn)擊屬性框上面的閃電標(biāo)志,找到FormClosed,雙擊進(jìn)入編輯頁(yè)面,添加代碼this.DialogResult = DialogResult.OK;。這樣當(dāng)我們錄入好學(xué)生信息后就會(huì)自動(dòng)刷新網(wǎng)格了。,15,雙擊刪除當(dāng)前學(xué)生按鈕進(jìn)入編輯框,添加代碼 if (txtboxsno.Text = "") MessageBox.Show("請(qǐng)輸入要?jiǎng)h除的學(xué)生的學(xué)號(hào):"); txtboxsno.Focus(); return; /第二步:還要進(jìn)一步判斷輸入的學(xué)號(hào)在數(shù)據(jù)庫(kù)中能否找到 /大家自行完成 DAL.StudentDAO.de

42、leteStudent(txtboxsno.Text.Trim(); MessageBox.Show("刪除完畢"); txtboxsno.Text = "" txtboxsno.Focus();16,雙擊清空數(shù)據(jù)庫(kù),添加代碼 DialogResult dr = MessageBox.Show("請(qǐng)確認(rèn)是否真的要清空學(xué)生數(shù)據(jù)庫(kù)","警告",MessageBoxButtons.OKCancel,MessageBoxIcon.Information); if (dr =DialogResult.OK) DAL.Stud

43、entDAO.clear(); else /不清空,什么都不做 這樣我們的刪除窗口也做好了,接下來(lái)我們要做的是查詢窗口。17,在studentMIS下面添加一個(gè)windows窗體名稱改為。在窗體中參加一個(gè)TextBox控件name后面改為textBoxsno。添加一個(gè)Button控件,text改為確定,name后面改為stserch。添加一個(gè)label控件text改為學(xué)號(hào)。再添加一個(gè)dgv控件,name后面改為dgv1。雙擊確定按鈕,進(jìn)入編輯頁(yè)面,添加如下代碼。if (textBoxsno.Text = "" ) MessageBox.Show("學(xué)號(hào)不能為空&q

44、uot;); textBoxsno.Focus(); return; else bs.DataSource = DAL.StudentDAO.returnTable1(textBoxsno.Text.Trim(); dgv1.DataSource = bs;代碼的作用是在dgv1上顯示returnTable1里面的內(nèi)容,相信大家都可能猜到了returnTable1里的內(nèi)容是什么了,對(duì)就是我們用學(xué)號(hào)查出來(lái)的學(xué)生信息。18,下面我們就來(lái)創(chuàng)立returnTable1,該函數(shù)的功能是當(dāng)我們輸入的學(xué)號(hào)傳過(guò)來(lái)時(shí),在后臺(tái)數(shù)據(jù)庫(kù)中查找并返回信息。雙擊進(jìn)入編輯框,添加如下代碼 public static Dat

45、aTable returnTable1(string sno) DataTable table = new DataTable(); string connstr = "server= .;database=student;integrated security=sspi" using (SqlConnection conn = new SqlConnection(connstr) conn.Open(); using (SqlCommand cmd = conn.CreateCommand() cmd.CommandText = "select * from s

46、tudent where sno=sno" cmd.Parameters.Add(new SqlParameter("sno", sno); SqlDataAdapter adapter = new SqlDataAdapter(cmd); adapter.Fill(table); return table; 現(xiàn)在大家來(lái)調(diào)試一下發(fā)現(xiàn),OK。查詢窗體做成了。19,還有最后一個(gè)窗體就是修改窗體,首先創(chuàng)立一個(gè)窗體,名為。在窗體中添加四個(gè)label控件,屬性的text分別改為學(xué)號(hào),姓名,性別,出生日期。添加三個(gè)TextBox控件name分別為textBoxsno,text

47、Boxsname,textBoxsbirthday。再添加一個(gè)ComboBox控件。name后面改為comboboxsex。再添加兩個(gè)Button按鈕,text改為確定,取消。雙擊確定按鈕進(jìn)入編輯框添加如下代碼string sno = textBoxsno.Text.Trim(); string sname = textBoxsname.Text.Trim(); string sex = comboBoxsex.Text.Trim(); string sbirthday = textBoxsbirthday.Text.Trim(); new StudentDAO().modify(sno, sname, sex, sbirthday);在最上面添加us

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論