首頁 > 軟體

C#資料庫操作的範例詳解

2022-07-24 14:02:47

功能需求

1,利用亂數模擬產生每次考試成績

2,將每次考試成績存入到資料庫

3,將每次考試成績劃分優、良、中、差、不及格五類,並作為查詢條件,查詢符合每種水平的成績

技術知識點

1.random類的使用

2.資料庫的連結、新增資料、查詢資料、讀取資料

3,combox控制元件的使用

4,DataGridView控制元件的使用

準備工作

建立資料庫,本文案例使用Sql Server2014,資料庫表如下:

實現步驟

1.模擬產生考試成績,點選考試按鈕,產生六科考試成績

            Random rd = new Random();//範例化random類
            int[] scores = new int[6];
            for(int i = 0;i<scores.Length;i++)
            {
                scores[i] = rd.Next(0, 100);
                SumScore += scores[i];//總成績
            }
            AvgScore = SumScore / scores.Length;//平均分
            ScoreLevel = GetScoreLevel(SumScore);
            tbx01.Text = scores[0].ToString();
            tbx02.Text = scores[1].ToString();
            tbx03.Text = scores[2].ToString();
            tbx04.Text = scores[3].ToString();
            tbx05.Text = scores[4].ToString();
            tbx06.Text = scores[5].ToString();

2.將每次考試成績儲存到資料庫中,通過按鈕觸發。

//建立資料庫操作類,DBOpera,方便其他功能在進行資料庫操作時,減少重複工作。
//資料庫連結字串,使用private防止為外部存取修改
        private static string connstring = @"Data source = RANDOMSQLEXPRESS; Initial Catalog = DB1;User ID=sa; pwd = 123456";
        //資料庫連結物件
        public static SqlConnection conn = new SqlConnection(connstring);
        
        //定義執行sql查詢語句方法
        public int ExecSQL(string sql)
        {
            //執行查詢語句後並不需要返回所有的查詢結果,而僅需要返回一個值,
            //例如查詢表中的記錄行數
            //範例化sqlcommand類。
            SqlCommand cmd = new SqlCommand(sql, conn);
            if (conn.State == ConnectionState.Closed)//如果當前資料庫連結處於關閉狀態
                conn.Open();
            int num = Convert.ToInt32(cmd.ExecuteScalar());//執行查詢
            conn.Close();
            return num;
        }

        public int ExecSQLResult(string sql)
        {
            /*執行非查詢 SQL 語句時並不需要返回表中的資料
            增加、修改、刪除的操作
            該方法的返回值是一個整數,表示 SqlCommand 類在執行 SQL 語句後,
            對錶中資料影響的行數。返回值為-1時,代表 SQL 語句執行失敗,返回值為 0 時,代表 			SQL 語句對當前資料表中的資料沒有影響。*/

            //範例化sqlcommand物件
            SqlCommand cmd = new SqlCommand(sql, conn);
            if (conn.State == ConnectionState.Closed)
                conn.Open();
            int result = cmd.ExecuteNonQuery();
            conn.Close();
            return result;
        }
        public DataSet GetDataSet(string sql)
        {
            //將資料表中的資料查詢出來並新增到 DataSet 中
            //每個 DataSet 都是由若干個資料表構成的,DataTable 即資料表,
            //每個 DataTable 也都是由行和列構成的,
            //行使用 DataRow 類表示、列使用 DataColumn 類表示。
            SqlDataAdapter sqlda = new SqlDataAdapter(sql, conn);
            DataSet ds = new DataSet();
            sqlda.Fill(ds);   //填充資料集
            return ds;   // 返回資料集
        }

        public SqlDataReader GetDataReader(string sql)
        {
            //讀取表中的查詢結果,以唯讀方式讀取的(即不能修改 DataReader 中存放的資料)
            //當查詢結果僅為一條時,可以使用 if 語句查詢 DataReader 物件中的資料,
            //如果返回值是多條資料,需要通過 while 語句遍歷 DataReader 物件中的資料。
            SqlCommand cmd = new SqlCommand(sql, conn);
            if (conn.State == ConnectionState.Closed)
                conn.Open();
            SqlDataReader sqlDR = cmd.ExecuteReader();
            return sqlDR;
        }
    }

//外部呼叫DBOpera類,將模擬產生的考試成績儲存到資料庫中
//將考試成績儲存到資料庫中
            //呼叫DataOperaor類中ExecSQLResult方法
            string sql = "insert into MScore(Level,Math,Chinese,English," +
                "Chemical,Physics,Biology,TotalScore,AvgScore) values" +
                "('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}')";
            //填充SQL語句
            sql = string.Format(sql, ScoreLevel, tbx01.Text, tbx02.Text, tbx03.Text, tbx04.Text, tbx05.Text,
                tbx06.Text, SumScore.ToString(), AvgScore.ToString());
            int result = DbOpera.ExecSQLResult(sql);
            if (result != -1)
            {
                MessageBox.Show("資料儲存成功");
            }
            else
            {
                MessageBox.Show("資料儲存失敗!");
            }

3.利用下拉式方塊,顯示所有考試成績的評語

//建立方法,判斷成績的評語
public static string GetScoreLevel(int score)
        {
            string level = null;
           //總分540-600為優,480-540為良,420-480為中,360-420為差,低於420為不及格
           if(score >= 540)
            {
                level = "優";
            }
           else if(score >= 480)
            {
                level = "良";
            }
            else if (score >= 420)
            {
                level = "中";
            }
            else if (score >= 360)
            {
                level = "差";
            }
            else 
            {
                level = "不及格";
            }
            return level;
        }

//從資料庫讀取每次考試成績評語,並將資料顯示到下拉式方塊中
//查詢考試成績所處分段,並將這些資訊在下拉式方塊中顯示
            //定時查詢語句
			//cbx01為控制元件combox名稱
            ArrayList arylist = new ArrayList();
            string sql = "select distinct level from MScore";
            DataSet ds = DbOpera.GetDataSet(sql);
            if(ds.Tables[0].Rows.Count >0)
            {
                DataTable dt = ds.Tables[0];
                foreach (DataRow dr in dt.Rows)
                {
                    arylist.Add(dr[0].ToString().Trim());
                }
                cbx01.DataSource = arylist;
            }

4.根據查詢條件,查詢符合條件的資料,並使用DataGridView控制元件顯示

private void button3_Click(object sender, EventArgs e)
        {
            //查詢考試總成績大於查詢值的成績分佈資料
            //定義查詢語句
            string sql = "select Math,Chinese,English,Chemical,Physics,BIology,TotalScore,AvgScore from mscore where level ='" + cbx01.Text.ToString().Trim()+"'";

            //建立DataSet類的物件
    		//datagridview1為控制元件datagridview名稱
            DataSet ds = DbOpera.GetDataSet(sql);
            dataGridView1.DataSource = ds.Tables[0];
            dataGridView1.Columns[0].HeaderText = "數學";
            dataGridView1.Columns[1].HeaderText = "語文";
            dataGridView1.Columns[2].HeaderText = "英語";
            dataGridView1.Columns[3].HeaderText = "化學";
            dataGridView1.Columns[4].HeaderText = "物理";
            dataGridView1.Columns[5].HeaderText = "生物";
            dataGridView1.Columns[6].HeaderText = "總分";
            dataGridView1.Columns[7].HeaderText = "平均分";
            // 設定資料表格為唯讀
            dataGridView1.ReadOnly = true;
            //不允許新增行
            dataGridView1.AllowUserToAddRows = false;
            //背景為白色
            dataGridView1.BackgroundColor = Color.White;
            //只允許選中單行
            dataGridView1.MultiSelect = false;
            //整行選中
            dataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
}

動畫演示效果

以上就是C#資料庫操作的範例詳解的詳細內容,更多關於C#資料庫操作的資料請關注it145.com其它相關文章!


IT145.com E-mail:sddin#qq.com