C#数据库操作的示例详解

功能需求

1,利用随机数模拟产生每次考试成绩

2,将每次考试成绩存入到数据库

3,将每次考试成绩划分优、良、中、差、不及格五类,并作为查询条件,查询符合每种水平的成绩

技术知识点

1.random类的使用

2.数据库的链接、添加数据、查询数据、读取数据

3,combox控件的使用

4,DataGridView控件的使用

准备工作

创建数据库,本文案例使用Sql Server2014,数据库表如下:

C#数据库操作的示例详解_第1张图片

实现步骤

1.模拟产生考试成绩,点击考试按钮,产生六科考试成绩

            Random rd = new Random();//实例化random类
            int[] scores = new int[6];
            for(int i = 0;i 
 

2.将每次考试成绩存储到数据库中,通过按钮触发。

//创建数据库操作类,DBOpera,方便其他功能在进行数据库操作时,减少重复工作。
//数据库链接字符串,使用private防止为外部访问修改
        private static string connstring = @"Data source = RANDOM\SQLEXPRESS; 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#数据库操作的资料请关注脚本之家其它相关文章!

你可能感兴趣的:(C#数据库操作的示例详解)