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#数据库操作的资料请关注我们其它相关文章!

(0)

相关推荐

  • C#数据库操作的用法

    由于最近和数据库打交道,需要用C#和SQL Server 2005进行操作,就把近段时间内的最常用的操作做个总结.本人也是第一次用C#操作数据库,所以这三种典型用法对初学者还是挺有帮助的. 以下是我在visual studio 2005上写的一个类(连的是SQL Server 2005),已经过测试通过.里面有3个方法比较典型,源码如下: using System; using System.Collections.Generic; using System.Text; using System

  • C#操作SQLite数据库方法小结

    一.SQLite介绍 1.SQLite 简介 SQLite是一个开源.免费的小型RDBMS(关系型数据库),能独立运行.无服务器.零配置.支持事物,用C实现,内存占用较小,支持绝大数的SQL92标准. 这意味着与其他数据库一样,您不需要在系统中配置.SQLite 引擎不是一个独立的进程,可以按应用程序需求进行静态或动态连接.SQLite 直接访问其存储文件. SQLite 源代码不受版权限制.SQLite数据库官方主页:http://www.sqlite.org/index.html 2.为什么

  • C# 操作 access 数据库的实例代码

    随笔: (1)   命名空间    using System.Data.OleDb; (2)   连接字符串 private staticstring connStr = @"Provider= Microsoft.Ace.OLEDB.12.0;Data Source = d:\login.accdb"; 注意: a.DataSource = 数据库存放的路径(这里数据库放到了D盘目录下)              b. 2003版本的Access数据库链接字符串: privatest

  • C#使用SQLDMO操作数据库的方法

    本文实例讲述了C#使用SQLDMO操作数据库的方法.分享给大家供大家参考.具体分析如下: SQLDMO.dll是随SQL Server2000一起发布的.SQLDMO.dll自身是一个COM对象 SQLDMO(SQL Distributed Management Objects,SQL分布式管理对象)封装 Microsoft SQL Server 2000 数据库中的对象.SQL-DMO 允许用支持自动化或 COM 的语言编写应用程序,以管理 SQL Server 安装的所有部分.SQL-DMO

  • C#如何在窗体程序中操作数据库数据

    目录 一.界面布局 二.定义数据库操作的公共类 三.在界面中操作数据库方法 一.界面布局 界面中有一个dataGridview.两个Button.两个Label和两个TextBox. 二.定义数据库操作的公共类 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data.SqlClient; using System.Windows.Forms; u

  • c#操作附加数据库的方法

    本文实例讲述了c#操作附加数据库的方法.分享给大家供大家参考.具体如下: /// <summary> /// 附加数据库 /// </summary> /// <returns></returns> private bool Attachdb() { try { string sql = string.Empty; if (File.Exists(sMDBFile)) { sql = "EXEC sp_attach_db @dbname = '&q

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

    目录 功能需求 技术知识点 准备工作 实现步骤 功能需求 1,利用随机数模拟产生每次考试成绩 2,将每次考试成绩存入到数据库 3,将每次考试成绩划分优.良.中.差.不及格五类,并作为查询条件,查询符合每种水平的成绩 技术知识点 1.random类的使用 2.数据库的链接.添加数据.查询数据.读取数据 3,combox控件的使用 4,DataGridView控件的使用 准备工作 创建数据库,本文案例使用Sql Server2014,数据库表如下: 实现步骤 1.模拟产生考试成绩,点击考试按钮,产生

  • MySQL数据操作管理示例详解

    目录 一.查看表和查看表的定义 二.删除表 三.创建表 四.表类型 五.修改表 六.完整性 1.数据完整性 2.使用约束实现数据完整性 3.在数据表上添加约束 4.删除约束 七.添加数据 八.修改数据 九.删除数据 十.SQL语句中的运算符 算数运算符 比较运算符 逻辑运算符 一.查看表和查看表的定义 SHOW TABLE 表名 DESC 表名; DESCRIBE 表名 二.删除表 DROP TABLE [IF EXISTS ] 表名; 如果表USER存在,删除表USER DROP TABLE

  • django的模型类管理器——数据库操作的封装详解

    模型实例方法 str():在将对象转换成字符串时会被调用. save():将模型对象保存到数据表中,ORM框架会转换成对应的insert或update语句. delete():将模型对象从数据表中删除,ORM框架会转换成对应的delete语句. 模型类的属性 属性objects:管理器,是Manager类型的对象,用于与数据库进行交互. 当没有为模型类定义管理器时,Django会为模型类生成一个名为objects的管理器,自定义管理器后,Django不再生成默认管理器objects. 管理器是D

  • 易语言数据库操作“取记录数”命令详解

    返回当前数据库的记录数目.如果没有设置当前数据库或者失败,将返回 0 . 语法: 整数型 取记录数 () 例程: 说明: 当数据库打开成功,使用"取记录数()"命令,取出当前数据库中的记录数,使用该记录数来规定"记次循环()"命令的循环次数,通过循环,所有记录的"姓名"字段内容就显示在了列表框中. 到此这篇关于易语言数据库操作"取记录数"命令详解的文章就介绍到这了,更多相关易语言取记录数命令内容请搜索我们以前的文章或继续浏览下

  • C语言编程C++旋转字符操作串示例详解

    目录 旋转字符串 字符串左旋 题前认知: 暴力移位: 三步翻转: 判断字符串旋转 题前认知 字符串追加判断 旋转字符串 字符串左旋 实现一个函数,可以左旋字符串中的k个字符. 例如: ABCD左旋一个字符得到BCDA ABCD左旋两个字符得到CDAB 题前认知: 一个字符串如果就定死了.eg:char arr[]="dfdf"什么的那多没意思,一点都没有人机交互的感觉,(虽然现在人机交互适合个体,不适合集群,但也是比死板的定死字符串舒服) 所以字符串得是我们可输入的,才有可玩性,玩的不

  • Python黑魔法库安装及操作字典示例详解

    目录 1. 安装方法 2. 简单示例 3. 兼容字典的所有操作 4. 设置返回默认值 5. 工厂函数自动创建key 6. 序列化的支持 7. 说说局限性 本篇文章收录于<Python黑魔法手册>v3.0 第七章,手册完整版在线阅读地址:Python黑魔法手册 3.0 文档 字典是 Python 中基础的数据结构之一,字典的使用,可以说是非常的简单粗暴,但即便是这样一个与世无争的数据结构,仍然有很多人 "用不惯它" . 也许你并不觉得,但我相信,你看了这篇文章后,一定会和我一

  • Python中字典常用操作的示例详解

    目录 前言 初始化 合并字典 字典推导式 Collections 标准库 字典转 JSON 字典转 Pandas 前言 字典是Python必用且常用的数据结构,本文梳理常用的字典操作,看这个就够了,涉及: 初始化 合并字典 字典推导式 Collections 标准库 字典转JSON 字典转Pandas 初始化 # 最常用这种 my_object = { "a": 5, "b": 6 } # 如果你不喜欢写大括号和双引号: my_object = dict(a=5,

  • Python常见文件操作的示例详解

    目录 从文件中读取数据 为什么要提供文件路径 逐行读取 创建一个包含文件各行内容的列表 使用文件中的内容 包含千位以上的大型文件 圆周率中包含你的生日吗 写入文件 附加到文件 从文件中读取数据 1:读取整个文件 首先创建一个文件,它包含一些文本信息,注意:如果该文件为.py文件,则再进行操作的时候可以不写路径,如果不是.py文件,则必须标明路径. 现在我们创建一个python文件,名为text.py,给他写入如下文本信息: 下面的程序打开并读取这个文件,再将其内容显示到屏幕上: with ope

  • Git基础学习之分支操作的示例详解

    目录 1.新建一个分支并且使分支指向指定的提交对象 2.思考 3.项目分叉历史的形成 4.分支的总结 1.新建一个分支并且使分支指向指定的提交对象 使用命令:git branch branchname commitHash. 我们现在本地库中只有一个 master 分支,并且在 master 分支有三个提交历史. 需求:创建一个 testing 分支,并且testing 分支指向 master 分支第二个版本. # 1.查看提交历史记录 L@DESKTOP-T2AI2SU MINGW64 /j/

  • MySQL实现数据插入操作的示例详解

    目录 一.方法分类 二.具体方法 三.实例 (1)常规插入 (2)从另一个表导入 (3)插入时数据重复 四.注意事项 (1)不写字段名,需要填充自增ID (2)按字段名填充,可以不录入id 其余注意事项 使用MySQL插入数据时,可以根据需求场景选择合适的插入语句,例如当数据重复时如何插入数据,如何从另一个表导入数据,如何批量插入数据等场景.本文通过给出每个使用场景下的实例来说明数据插入的实现过程和方法. 一.方法分类 二.具体方法 使用场景 作用 语句 注意 常规插入 忽略字段名 insert

随机推荐