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

作者:yue008 时间:2024-01-15 05:46:32 

功能需求

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

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

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

技术知识点

1.random类的使用

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

3,combox控件的使用

4,DataGridView控件的使用

准备工作

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

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

实现步骤

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#数据库操作的示例详解

来源:https://blog.csdn.net/yue008/article/details/125946872

标签:C#,数据库,操作
0
投稿

猜你喜欢

  • Opencv常见图像格式Data Type及代码实例

    2021-05-20 07:49:08
  • Python matplotlib画图时图例说明(legend)放到图像外侧详解

    2021-03-05 13:42:45
  • 在Sublime Editor中配置Python环境的详细教程

    2023-08-14 08:33:26
  • ASP中取得图片宽度和高度

    2009-11-08 18:39:00
  • python 画3维轨迹图并进行比较的实例

    2023-12-09 21:00:18
  • python神经网络编程之手写数字识别

    2022-01-12 20:50:04
  • Python趣味实例,实现一个简单的抽奖刮刮卡

    2023-07-20 18:59:41
  • 有关wxpython pyqt内存占用问题分析

    2022-11-02 11:37:14
  • 用python建立两个Y轴的XY曲线图方法

    2023-06-30 15:01:26
  • Python中super().__init__()测试以及理解

    2023-08-25 02:22:04
  • Python列表去重的几种方法整理

    2022-06-18 18:05:17
  • SQLServer2005触发器提示其他会话正在使用事务的上下文的解决方法

    2024-01-13 05:42:28
  • Python 获取指定开头指定结尾所夹中间内容(推荐)

    2021-12-13 10:32:05
  • 揭秘SQL Server 2014有哪些新特性(1)-内存数据库

    2024-01-26 05:42:47
  • Win10安装MySQL5.7.18winX64 启动服务器失败并且没有错误提示

    2024-01-27 04:59:14
  • SQL Server数据类型char、nchar、varchar、nvarchar的区别浅析

    2024-01-14 06:57:15
  • django模型类中,null=True,blank=True用法说明

    2022-05-29 00:47:31
  • Python基于React-Dropzone实现上传组件的示例代码

    2021-04-01 19:53:03
  • 适合前端Vue开发童鞋的跨平台Weex的使用详解

    2024-05-22 10:42:20
  • 为什么MySQL选择Repeatable Read作为默认隔离级别

    2024-01-13 01:09:26
  • asp之家 网络编程 m.aspxhome.com