C#数据库操作的示例详解
作者:yue008 发布时间:2024-01-15 05:46:32
标签: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;
}
动画演示效果
来源:https://blog.csdn.net/yue008/article/details/125946872


猜你喜欢
- 我们在浏览网页的时候偶尔会遇到一些陌生的网页交互行为,通常情况下它们并不会影响你的正常使用,之所以出现情况往往是因为,设计师在设计某个交互方
- 我们经常会看到后缀名为.pt, .pth, .pkl的pytorch模型文件,这几种模型文件在格式上有什么区别吗?其实它们并不是在格式上有区
- 北京时间2月15日据国外媒体报道,美国知名sns网站Facebook全球活跃用户量已突破1.75亿大关。数据显示,全球20%的网民都使用Fa
- 想要用python自已手动序列化嵌套类,就要明白两个问题:1.Json是什么?2.Json支持什么类型?答案显而易见Json就是嵌套对象Js
- 本文实例为大家分享了python OpenCV实现答题卡识别判卷的具体代码,供大家参考,具体内容如下完整代码:#导入工具包import nu
- 本文实例讲述了Python二叉搜索树与双向链表实现方法。分享给大家供大家参考,具体如下:# encoding=utf8''&
- 1。mysql数据库没有增量备份的机制,当数据量太大的时候备份是一个很大的问题。还好mysql数据库提供了一种主从备份的机制,其实就是把主数
- 将 HTML 网页转换为 PDF 是很多人常见的一个需求,在浏览器上,我们可以通过浏览器的“打印”功能直接将网页打印输出为 PDF。但是如果
- 代码如下:function checkip(checkstring)'用正则判断IP是否合法 dim re1 set re1=new
- 前言这几年对运维人员来说最大的变化可能就是公有云的出现了,我相信可能很多小伙伴公司业务就跑在公有云上, 因为公司业务关系,我个人
- 简介:轮廓发现是基于图像边缘提取的基础寻找对象轮廓的方法,所以边缘提取的阈值选定会影响最终轮廓发现结果。代码如下:import cv2 as
- 在进行小数计算的时候使用float,经常会出现小数位不精确的情况。在python编程中,推荐使用decimal来完成小数位的精度计算。dec
- 1.hashlib密码散列hashlib模块定义了一个API来访问不同的密码散列算法。要使用一个特定的散列算法,可以用适当的构造器函数或ne
- 什么是树表查询?借助具有特殊性质的树数据结构进行关键字查找。本文所涉及到的特殊结构性质的树包括:二叉排序树。 平衡二叉树。使用上述树结构存储
- 问题背景我创建了一个函数,里面包含了一个获取当前执行文件路径的代码current_path = os.path.dirname(os.pat
- 本文研究的主要是Python内建模块struct的相关内容,具体如下。Python中变量的类型只有列表、元祖、字典、集合等高级抽象类型,并没
- 前言本文主要给大家总结介绍了关于Python的一些基础技巧,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。1.starts
- 前言在python列表的元素删除操作中, del, pop(), remove()很容易混淆, 下面对三个语句/方法作出解释del语句del
- Django版本为:2.1.7Python的web框架,MTV思想MVCModel(模板文件,数据库操作) view(视图模板文
- python的基础练习案例——名片管理系统,一个控制台程序的案例练习,平台为pycharm2017。代码是看着python视频学的时候写的,