學習:c#入門案例


轉自:https://www.cnblogs.com/cys168/p/8072292.html

 

C#

開發環境:

VisualStudio2015

數據庫:

SQLserver2008

程序主界面:

 

注釋:

lbl標簽:

程序中的lbl標簽:編號、人數、姓名、性別、請輸入要查詢的信息,這里他們只起到了說明作用,所有命名一般為默認,只修改Text文本。

程序中的lbl標簽:編號后面的0,他起到了同步表中選中人員的id(編號) 人數后面的0,他的作用是時時更新表中總人數,他們的命名要規范,后面的代碼才能編寫更方便。

按鈕:

程序中的btn按鈕:保存、重置、退出、添加、查詢,要想實現他們的功能,就得雙擊他們然后在里面打上代碼,才能賦予他們功能,這里要注意按鈕的命名規范。

保存按鈕功能:

程序運行時,在姓名TextBox文本框中、性別TextBox文本框中,分別輸入人員的姓名、性別,然后按保存按鈕,人員的信息就被存到了數據庫中。

運行圖:

 

保存按鈕代碼:

復制代碼
                if (checkinput())
                {
                using (SqlConnection con = new SqlConnection(conStr))
                {
                    con.Open();
                    string sql = "insert B(name,sex) values  (@name,@sex)";
                    SqlCommand cmd = new SqlCommand(sql, con);
                    cmd.Parameters.Add(new SqlParameter("@name", txtname.Text));
                    cmd.Parameters.Add(new SqlParameter("@sex", txtsex.Text));
                    int fh = cmd.ExecuteNonQuery();
                    if (fh > 0) MessageBox.Show("添加成功!", "系統提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
                    sj();
                    rs();
                }
            }
復制代碼

這里調用了檢測輸入的完整性方法:checkinput,如果姓名TextBox文本框或性別TextBox文本框中,姓名沒輸入,程序會提示請輸入姓名,性別沒輸入,程序會提示請輸入性別。

檢測輸入的完整性方法代碼:

復制代碼
            private bool checkinput()
            {
            if (txtname.Text == null || txtname.Text == "")
            {
                MessageBox.Show("請輸入姓名", "系統提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
                txtname.Focus();
                return false;
            }
            if (txtsex.Text == null || txtsex.Text == "")
            {
                MessageBox.Show("請輸入性別", "系統提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
                txtsex.Focus();
                return false;
            }
            return true;
        }
復制代碼

信息輸入不完整運行效果圖:

保存按鈕的代碼里還調用了,sj();rs();這兩個方法,sj();這個方法起到了刷新添加人員的信息到DGV表格中,rs();這個方法起到了更新lbl人數標簽后面的數據功能,更新了總人數的數據信息。

新加一個人員運行圖:

信息輸入完整添加成功,大家看人數后面的數字是:12,當我按確定以后,神奇的事情就發生了!

人數后面的數字12變成了13,這里就是因為保存按鈕里調用了,rs();這個方法所以才有更新數據的功能

rs();方法的代碼:

復制代碼
            private void rs()
           {
            using (SqlConnection con = new SqlConnection("server=.;uid=sa;pwd=sa;database=YG"))
            {
                con.Open();
                string sql = "select count(*)from B";
                SqlCommand cmd = new SqlCommand(sql, con);
                object cx = cmd.ExecuteScalar();
                //lblRS.Text = cx.ToString(); 將查詢到的結果同步標簽
                lblrs.Text = cx.ToString(); //將查詢到的結果同步到lbl標簽
            }
        }
復制代碼

新保存的人員數據,馬上就能在DGV表格中找到:

這是因為保存按鈕代碼里調用了,sj();這個方法,將新保存的人員信息更新到了DGV表格中。

sj();方法的代碼:

復制代碼
            private void sj()
            {
            SqlConnection con = new SqlConnection(conStr);//創建連接對象指定連接字符串
            string sql = "select*from B";//sql查詢語句
            SqlDataAdapter cx = new SqlDataAdapter(sql, con);//連接數據庫並執行sql語句
            DataTable ta = new DataTable();//創建表對象
            cx.Fill(ta);//將查詢的內容填充到表對象
            dataGridView1.DataSource = ta;//設置DGV表的數據來源
        }
復制代碼

保存按鈕代碼:

復制代碼
                if (checkinput())//調用檢測輸入的完整性方法
                {
                using (SqlConnection con = new SqlConnection(conStr))//創建連接對象,指定連接字符串
                {
                    con.Open();//打開連接
                    string sql = "insert B(name,sex) values  (@name,@sex)";//SQL語句,在數據庫里要執行的操作
                    SqlCommand cmd = new SqlCommand(sql, con);//Cmand命名對象執行操作
                    cmd.Parameters.Add(new SqlParameter("@name", txtname.Text));//指定參數跟對應的數據匹配
                    cmd.Parameters.Add(new SqlParameter("@sex", txtsex.Text));//指定參數跟對應的數據匹配
                    int fh = cmd.ExecuteNonQuery();//ExecuteNonQuery(),這個方法在執行增、刪、改的時候就調用它
                    if (fh > 0) MessageBox.Show("添加成功!", "系統提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
                    sj();//調用這個方法更新DGV表格中的數據
                    rs();//調用這個方法更行lbl總人數的數據
                }
            }
復制代碼

 SqlCommand對象的三個方法:

ExcuteScalar():

這個方法只返回查詢結果集的第一行第一列

ExcuteNonQuery():

執行一個SQL語句,返回受影響的行數,這個方法主要用於執行對數據庫執行增加、修改、刪除操作

ExcuteReader():

查詢多行多列

重置按鈕的代碼:

 

            lblid.Text = "0";//lbl文本默認為0
            txtname.Clear();//將Text文本框的內容清空
            txtsex.Clear();//將Text文本框的內容清空
            txtname.Focus();//設置焦點

 

運行圖:

輸入好信息后,點擊重置按鈕就會清空輸入的信息

 退出按鈕的代碼:

  Application.Exit();

點擊退出后,程序就會被關閉。

添加按鈕代碼:

            添加人員 a = new 添加人員();//創建窗體對象
            a.ShowDialog();//以對話框模式彈出
            sj();//調用sj();這個方法來更新添加的人員數據到DGV表格中

這里添加按鈕的功能跟保存按鈕的功能是類似的,目的都是為了添加人員數據,只不過我們在這里做了一點代碼知識的擴展。

運行圖:

輸入的信息不完整的話,會提示請輸入完整的信息,這里也得寫一個檢測輸入完整性的方法,信息輸入完整后就可以點擊保存了,保存按鈕的代碼和上面的類似,點擊返回按鈕后當前窗體就會關閉返回到人員管理主界面。

將SQL數據庫中的數據讀取到程序的DGV表格中代碼:

復制代碼
            private void sj()
            {
            SqlConnection con = new SqlConnection(conStr);//創建連接對象指定連接字符串
            string sql = "select*from B";//sql查詢語句
            SqlDataAdapter cx = new SqlDataAdapter(sql, con);//連接數據庫並執行sql語句
            DataTable ta = new DataTable();//創建表對象
            cx.Fill(ta);//將查詢的內容填充到表對象
            dataGridView1.DataSource = ta;//設置DGV表的數據來源
        }
復制代碼

其實這個方法在前面就已經出現過了,當我們新增一個人員的時候,就得調用sj();這個方法來更新DGV表格中的數據。

查詢按鈕代碼:

復制代碼
            SqlConnection con = new SqlConnection(conStr);//創建連接對象指定連接字符串
            //string sql = "select * from B where name like '%"+ txtcx.Text + "%'";
            string sql = string.Format("select*from B where name like'%{0}%' or sex like'%{1}%' or id like'%{2}%'",txtcx.Text,txtcx.Text,txtcx.Text);//SQL語句根據TextBox輸入的查詢條件進行模糊查詢
            DataTable b1 = new DataTable();//創建表對象
            SqlDataAdapter cx1 = new SqlDataAdapter(sql, con);//連接數據庫並執行sql語句
            cx1.Fill(b1);//將查詢的內容填充到表對象
            dataGridView1.DataSource = b1;//設置DGV表的數據來源
復制代碼

運行圖:

在TextBox文本框中,根據姓查詢這里輸入了一個:劉  DGV表格中就會顯示所有姓劉的人員信息

運行圖:

在TextBox文本框中,根據性別查詢這里輸入了一個:男 DGV表格中顯示了所有性別為男的信息。

 那么功能都差不多快完善了,我們會發現有了新增,卻少了刪除跟修改的功能!!!

運行圖:

 

在這里我們可以在DGV表格里加一個上下文菜單,來實現修改和刪除的功能。

右鍵菜單中修改按鈕的代碼:

復制代碼
            添加人員 a = new 添加人員();//創建窗體對象
            a.Text = "修改人員";//將添加人員的窗體Text文本修改為“修改人員”
            a.Tag = dataGridView1.SelectedRows[0].Cells["id"].Value.ToString();//將選中的數據傳遞給修改人員窗體
            a.txtname.Text = dataGridView1.SelectedRows[0].Cells["name"].Value.ToString();//DGV表中選中的人員名字傳遞到修改人員窗體
            a.txtsex.Text = dataGridView1.SelectedRows[0].Cells["sex"].Value.ToString();///DGV表中選中的人員性別傳遞到修改人員窗體
            a.ShowDialog();//以對話框模式彈出
復制代碼

 運行圖:

修改人員的窗體與點擊添加按鈕彈出的窗體是同一個窗體,這里只不過是用代碼修改了窗體的Text文本而已,DGV表中選中的數據也同步到了修改人員窗體對應的Text文本框中,在這里我們只需要直接修改那些要修改的地方就KO了。

運行圖:

修改人員窗體中保存按鈕代碼:

復制代碼
                    if (checkinput())
                    {
                    if (this.Text == "添加人員")
                    {
                    using (SqlConnection con = new SqlConnection(conStr))
                    {
                        con.Open();
                        string sql = "insert B(name,sex) values  (@name,@sex)";
                        SqlCommand cmd = new SqlCommand(sql, con);
                        cmd.Parameters.Add(new SqlParameter("@name", txtname.Text));
                        cmd.Parameters.Add(new SqlParameter("@sex", txtsex.Text));
                        int fh = cmd.ExecuteNonQuery();
                        if (fh > 0) MessageBox.Show("添加成功!", "系統提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
                        this.Close();
                    }
                    }
                    else
                    {
                    using (SqlConnection con = new SqlConnection(conStr))
                    {
                        con.Open();
                        //update<修改對象所在表> set < 修改對象 >=< 值 > where < 條件對象 >=< '條件內容' >
                       string sql = "update B set name=@name,sex=@sex where id=@id";
                        SqlCommand cmd = new SqlCommand(sql, con);
                        cmd.Parameters.Add(new SqlParameter("@id", this.Tag.ToString()));
                        cmd.Parameters.Add(new SqlParameter("@name", txtname.Text));
                        cmd.Parameters.Add(new SqlParameter("@sex", txtsex.Text));
                        int fh = cmd.ExecuteNonQuery();
                        if (fh > 0) MessageBox.Show("修改成功!", "系統提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
                        this.Close();
                    }
                }
            }
復制代碼

修改人員中的保存按鈕代碼,跟點擊添加按鈕彈出的窗體中保存按鈕代碼一致,邏輯可能一時難以領悟,多看幾遍就熟能生巧了!

右鍵菜單中刪除按鈕的代碼:

復制代碼
                   if (dataGridView1.SelectedRows.Count > 0)
                   {
                   string xz = dataGridView1.SelectedRows[0].Cells["id"].Value.ToString();
                   using (SqlConnection con = new SqlConnection(conStr))
                   {
                    con.Open();
                    string sql = string.Format("delete from B where id='{0}'", xz);
                    SqlCommand cmd = new SqlCommand(sql, con);
                    int fh = cmd.ExecuteNonQuery();
                    if (fh > 0)
                    {
                        MessageBox.Show("刪除成功!", "系統提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
                        sj();
                        rs();
                    }
                    else
                    {
                        MessageBox.Show("刪除失敗!", "系統提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        sj();
                        rs();
                    }
                }
復制代碼

增、刪、改、查,的代碼流程都大致相同:首先創建連接對象指定連接字符串,打開連接、sql語句在數據庫里要做什么操作(增、刪、改、查)、然后創建Command命令對象連接數據庫並執行sql語句,定義一個變量來接收方法的返回值,增、刪、改操作時,調用ExecuteNonQuer這個方法,查詢操作時,一般調用的是ExcuteReader這個方法,要做的操作不同,調用的方法也會不同,定義變量時也得定義匹配這個方法的變量。

運行圖:

一個簡單的程序案例就講解完了,寫這篇博客也不求什么利益,只是希望能帶給初學者一個啟示作用,也許多年以后學了多門語言的自己,連最初的C#編程語言結構邏輯思維全都忘光了,還可以在博客上回憶一下,只要你一直在。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM