1、使用Visual Studio 2013創建新項目
2、創建一個主窗體和4個子窗體
3、創建一個數據庫、一個表、一個存儲過程
4、在配置文件里添加數據庫連接字符串
5、真正的編碼工作。
第一步:創建新項目,一張圖片抵一萬字!看圖說話,呵呵。。
第二步:創建4個子窗體,名稱分別是formCommandProc.cs、formDataAdapterProc.cs、formXMLCreate.cs、formXMLRead.cs。
三、創建一個數據庫、一個表、一個存儲過程。打開MS SQL Server Management Studio執行下面的全部語句。

1 CREATE DATABASE TestDB 2 GO 3 USE TestDB 4 GO 5 CREATE TABLE Student 6 ( 7 SID INT IDENTITY(1, 1) 8 NOT NULL , 9 SName NVARCHAR(50) NOT NULL , 10 Sex NVARCHAR(2) NOT NULL , 11 Area NVARCHAR(20) NOT NULL , 12 Email NVARCHAR(50) NOT NULL 13 ) 14 ON [PRIMARY] 15 GO 16 INSERT INTO dbo.Student 17 ( SName, Sex, Area, Email ) 18 VALUES ( N'風花雪月', N'男', N'北京', N'abc@qq.com' ), 19 ( N'泡椒田雞', N'女', N'上海', N'abcd@qq.com' ), 20 ( N'紅燈酒綠', N'男', N'天津', N'abc@qq.com' ); 21 GO 22 CREATE PROCEDURE getStudents @p_SID INT 23 AS 24 BEGIN 25 SET NOCOUNT ON; 26 IF NOT EXISTS ( SELECT SID 27 FROM dbo.Student 28 WHERE SID = @p_SID ) 29 PRINT 'The student does not exists.' 30 ELSE 31 SELECT SID , 32 SName , 33 Sex , 34 Area , 35 Email 36 FROM dbo.Student 37 WHERE SID = @p_SID 38 END 39 GO 40 --測試-- 41 --EXEC dbo.getStudents @p_SID = 2 -- int 42 -->2 泡椒田雞 女 上海 abcd@qq.com
四、在程序配置文件中添加數據庫連接字符串,這里是Windows集成,所以沒有看到用戶名和密碼的屬性。添加完后,在代碼里就可以通過TestDBConnectionString這個字符串連接數據庫了!
五、開始設計窗體和寫代碼(這些步驟比較繁瑣,所以再細分幾個步驟,這樣比較清晰)
5.1)設計主窗體
1.在創建新項目的時候,系統會默認創建一個名為Form1.cs的主窗體,現在把它更名為FormMain.cs
2.在工具欄拖動MenuStrip控件到主窗體,主菜單橫向有3項,分別是:存儲過程、XML、退出。存儲過程包括:使用Command 和 使用DataAdapter; XML包括:創建XML和讀取XML; 具體設置參照下表:
![]() |
|
3.選中主窗體,在屬性窗口修改IsMdiContainer為True,這樣就把這個普通的窗體變成了父窗體。如圖:
4.添加4個事件的處理程序和一個退出程序事件,程序的功能是實例化4個窗體,並指定自己的父窗體,代碼沒什么可講的,都一個德行。

1 private void useCommandToolStripMenuItem_Click(object sender, EventArgs e) 2 { 3 formCommandProc form = new formCommandProc(); 4 form.MdiParent = this; 5 form.Show(); 6 } 7 8 private void useDataAdapterToolStripMenuItem_Click(object sender, EventArgs e) 9 { 10 formDataAdapterProc form = new formDataAdapterProc(); 11 form.MdiParent = this; 12 form.Show(); 13 } 14 15 private void createXMLToolStripMenuItem_Click(object sender, EventArgs e) 16 { 17 formXMLCreate form = new formXMLCreate(); 18 form.MdiParent = this; 19 form.Show(); 20 } 21 22 private void readXMLToolStripMenuItem_Click(object sender, EventArgs e) 23 { 24 formXMLRead form = new formXMLRead(); 25 form.MdiParent = this; 26 form.Show(); 27 } 28 29 private void exitToolStripMenuItem_Click(object sender, EventArgs e) 30 { 31 Application.Exit(); 32 }
到目前位置,程序基本都可以運行起來了,只不過沒具體干什么,先看看運行起來的樣子,沒點擊一個菜單項都會創建一個子窗體,如圖:
5.接下來就是要設計子窗體的樣式和功能了。
打開formCommandProc設計模式界面,安照下表屬性添加相關控件:
![]() |
|
按鈕單擊事件處理程序btnGet_Click:我把整個文件的代碼都放上來了,重點是按鈕點擊事件!

1 using System; 2 using System.Collections.Generic; 3 using System.ComponentModel; 4 using System.Data; 5 using System.Drawing; 6 using System.Linq; 7 using System.Text; 8 using System.Threading.Tasks; 9 using System.Windows.Forms; 10 using System.Data.SqlClient; 11 12 namespace Procedure 13 { 14 public partial class formCommandProc : Form 15 { 16 public formCommandProc() 17 { 18 InitializeComponent(); 19 } 20 21 private void btnGet_Click(object sender, EventArgs e) 22 { 23 try 24 { 25 //接受到的學號文本類型轉換為整型int 26 Convert.ToInt32(tbxSID.Text); 27 } 28 catch 29 { 30 tbxGetStudent.Text += "The student ID does not exists."; 31 tbxGetStudent.Text += "\r\n"; 32 return; 33 } 34 35 //這句要引用System.Configuration.dll 36 string strConnect = System.Configuration.ConfigurationManager.ConnectionStrings["TestDBConnectionString"].ToString(); 37 //這句需要添加 using System.Data.SqlClient; 38 SqlConnection objConnect = new SqlConnection(strConnect); 39 40 SqlCommand objCommand = new SqlCommand("getStudents", objConnect); 41 objCommand.Parameters.Add("@p_SID", SqlDbType.Int); 42 objCommand.Parameters["@p_SID"].Value = tbxSID.Text; 43 objCommand.CommandType = CommandType.StoredProcedure; 44 try 45 { 46 if (objConnect.State == ConnectionState.Closed) 47 { 48 objConnect.Open(); 49 } 50 SqlDataReader objDataReader = objCommand.ExecuteReader(); 51 if (objDataReader.HasRows ==false) 52 { 53 tbxGetStudent.Text += "The student does not exists."; 54 tbxGetStudent.Text += "\r\n"; 55 } 56 else 57 { 58 while (objDataReader.Read()) 59 { 60 tbxGetStudent.Text += objDataReader.GetValue(0).ToString() + "\t"; 61 tbxGetStudent.Text += objDataReader.GetValue(1).ToString() + "\t"; 62 tbxGetStudent.Text += objDataReader.GetValue(2).ToString() + "\t"; 63 tbxGetStudent.Text += objDataReader.GetValue(3).ToString() + "\t"; 64 tbxGetStudent.Text += "\r\n"; 65 } 66 } 67 objDataReader.Close(); 68 } 69 catch(Exception exp) 70 { 71 tbxGetStudent.Text += exp.Message; 72 tbxGetStudent.Text += "\r\n"; 73 } 74 finally 75 { 76 if(objConnect.State == ConnectionState.Open) 77 { 78 objConnect.Close(); 79 } 80 } 81 82 } 83 } 84 }
現在試運行一下程序,應該可以從數據庫里讀取數據了!
明天再寫吧。。