C#数据库操作
yue008 人气:0功能需求
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; }
动画演示效果
加载全部内容