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

 更新时间:2022年07月24日 09:59:02   作者:yue008  
这篇文章主要通过一些示例为大家详细介绍了C#中数据库操作用法,文中的示例代码讲解详细,具有有一定的借鉴价值,需要的可以参考一下

功能需求

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 = 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# textbox的滚动条总是指向最底端的简单解决方法

    c# textbox的滚动条总是指向最底端的简单解决方法

    这篇文章主要介绍了c# textbox的滚动条总是指向最底端的简单解决方法,需要的朋友可以参考下
    2017-11-11
  • C#中的Linq To XML讲解

    C#中的Linq To XML讲解

    本文详细讲解了C#中的Linq To XML,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-05-05
  • C#中Json的简单处理方法

    C#中Json的简单处理方法

    这篇文章主要介绍了C#中Json的简单处理方法的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2016-09-09
  • C# OleDbDataReader快速数据读取方式(3种)

    C# OleDbDataReader快速数据读取方式(3种)

    这篇文章主要介绍了C# OleDbDataReader快速数据读取方式(3种),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-12-12
  • C# 使用SDL2实现Mp4文件播放音视频操作

    C# 使用SDL2实现Mp4文件播放音视频操作

    这篇文章主要介绍了C# 使用SDL2实现Mp4文件播放音视频操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-12-12
  • C#实现的ZPL条码打印类完整实例

    C#实现的ZPL条码打印类完整实例

    这篇文章主要介绍了C#实现的ZPL条码打印类,结合实例形式详细分析了C#实现条码打印的原理与使用方法,代码注释中备有详尽的说明,便于理解使用,需要的朋友可以参考下
    2016-06-06
  • C#简单多线程同步和优先权用法实例

    C#简单多线程同步和优先权用法实例

    这篇文章主要介绍了C#简单多线程同步和优先权用法实例,对于C#线程的阻塞、同步、异步、互斥等概念做了较为深入的分析与实例讲解,需要的朋友可以参考下
    2014-09-09
  • 比较2个datatable内容是否相同的方法

    比较2个datatable内容是否相同的方法

    这篇文章主要介绍了比较2个datatable内容是否相同的方法,大家参考使用吧
    2014-01-01
  • C#实现注册码注册机制效果详解

    C#实现注册码注册机制效果详解

    这篇文章主要为大家详细介绍了C#如何实现注册码注册机制效果,文中的示例代码讲解详细,对我们学习C#有一定的帮助,感兴趣的小伙伴可以跟随小编一起了解一下
    2023-01-01
  • WPF自定义控件的实现

    WPF自定义控件的实现

    本文主要介绍了WPF自定义控件的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-03-03

最新评论