C#实验-数据库操作.doc

上传人:飞****2 文档编号:60315706 上传时间:2022-11-15 格式:DOC 页数:17 大小:407.50KB
返回 下载 相关 举报
C#实验-数据库操作.doc_第1页
第1页 / 共17页
C#实验-数据库操作.doc_第2页
第2页 / 共17页
点击查看更多>>
资源描述

《C#实验-数据库操作.doc》由会员分享,可在线阅读,更多相关《C#实验-数据库操作.doc(17页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、实验五 数据库操作一、实验目的:1、了解与ADO.NET框架相关的类。2、掌握数据库应用系统创建的一般过程。二、实验内容:设计并实现“学生选课系统”的“学生信息管理模块”,要求如下:(1) 界面如下图所示。(2) 单击“添加”按钮,实现将用户在文本框和组合框中设置的数据添加到学生信息表student中。(3) 用户在数据控件DataGridView中选择一条学生记录后,单击“修改”按钮,实现对所选学生记录的修改。(4) 用户在数据控件DataGridView中选择一条学生记录后,单击“删除”按钮,实现从学生信息表student表中删除相应记录。(5) “查询”按钮用于查询符合条件的学生记录。三

2、、实验要求:1、设计并实现“学生选课系统”的“学生信息管理模块”,并在实验报告中给出相应的实验步骤、调试过程以及实验结果分析。2、在实验报告中指出【待分析实验步骤】的设计和代码存在的不足之处。3、使用三层架构改写【待分析实验步骤】中的设计和代码。四、 实验步骤:一、 设计数据库1、 打开SQL SERVER,使用SQL SERVER自身携带的数据库master2、在master数据库下,创建学生信息表student。其表结构如下表所示。设计的表如下:添加的学生数据如下:二、 创建程序结构1、打开VS2008,新建一个项目,在新建项目对话框中,模板选择“Windows应用程序”,解决方案名称为“

3、StudentInfoManagement”,选择存放的路径后,单击确定。2、修改默认的窗体对象名为“FrmStudent”。3、在“解决资源管理器”中,选择“StudentInfoManagement”,单击右键,在弹出的菜单中,选择“添加类”,名称为“CDataBase.cs”。效果见下图:三、设计界面FrmStudent窗体以及窗体中各控件的属性设置如下表所示:控件类型控件名称属性设置结果FormFrmStudentText学生信息管理TextBoxTextBox1NametxtNOTextBox2NametxtNameTextBox3NametxtAgeTextBox4NametxtD

4、eptTextBox5NametxtSelectComboBoxComboBox1NamecmbSexItems男女DropDownStyleDropDownListComboBox2NamecmbSelectItems学号姓名性别年龄系别DropDownStyleDropDownListText学号ButtonButton1NamebtnAddText添加Button2NamebtnUpdateText修改Button3NamebtnDeleteText删除Button4NamebtnSelectText查询DataGridViewDataGridView1NamedgrdvStudentR

5、eadOnlyTrueRowHeadersWidth25五、实验结果1、执行结果如下:2、 点击添加的时候,出现的界面如下,点击确定的时候,会弹出是否确定的对话框3、 点击修改的时候,将学号的系别改为计算机系,结果如下:4、 点击删除按钮的时候点击是之后:名为system的记录已经没有了5、 选择查询条件为性别,查询值为男性,点击查询,得到以下结果:比如再以系别为选项,结果是:六、 代码结构数据库连接代码如下:CDataBase.cs using System;using System.Collections.Generic;using System.Linq;using System.Tex

6、t;using System.Data.SqlClient;using System.Data;using System.Data.OleDb;namespace StudentInfoManagement class CDataBase public static string connectionString = data source=127.0.0.1;uid=sa;pwd=jessica;database=master; public static SqlConnection conn = new SqlConnection(connectionString); /从数据库获取信息

7、public static DataSet GetDataFromDB(string sqlStr) conn.Open(); SqlDataAdapter myAdapter = new SqlDataAdapter(sqlStr, conn); DataSet myDataSet = new DataSet(); myDataSet.Clear(); myAdapter.Fill(myDataSet); conn.Close(); if (myDataSet.Tables0.Rows.Count != 0) return myDataSet; else return null; publi

8、c static void UpdateDB(string sqlStr) conn.Open(); SqlCommand myCmd = new SqlCommand(sqlStr, conn); myCmd.CommandType = CommandType.Text; myCmd.ExecuteNonQuery(); conn.Close(); FormStudent.cs 窗体设计代码如下:using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using S

9、ystem.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;namespace StudentInfoManagement public partial class FormStudent : Form public FormStudent() InitializeComponent(); /用于设置用户界面中的文本框和下拉列表框可用,并将焦点设置到学号文本框中。 private void ObjOpen() txtNo.Enabled = true; txtName.Enabled = true;

10、txtAge.Enabled = true; cmbSex.Enabled = true; txtDept.Enabled = true; txtNo.Focus(); /用于设置用户界面中的文本框和下拉列表框不可用。 private void ObjClose() txtNo.Enabled = false; txtName.Enabled = false; txtAge.Enabled = false; cmbSex.Enabled = false; txtDept.Enabled = false; /用于清空用户界面中文本框的文本内容,并设置下拉列表框“cmbSex”不选中任何项。 pr

11、ivate void ClearAll() txtNo.Text = ; txtName.Text = ; txtAge.Text = ; cmbSex.SelectedIndex = -1; txtDept.Text = ; /用于将Student表中的数据读取出来,显示在相应的数据控件中, /并设置了数据控件中各数据列的列标题和列宽。 private void RefreshData() string sqlStr; DataSet ds = new DataSet(); sqlStr = select * from student; ds = CDataBase.GetDataFromD

12、B(sqlStr); if (ds != null) dgrdvStudent.DataSource = ds.Tables0; dgrdvStudent.Columns0.HeaderText = 学号; dgrdvStudent.Columns0.Width = 120; dgrdvStudent.Columns1.HeaderText = 姓名; dgrdvStudent.Columns1.Width = 120; dgrdvStudent.Columns2.HeaderText = 性别; dgrdvStudent.Columns2.Width = 80; dgrdvStudent.C

13、olumns3.HeaderText = 年龄; dgrdvStudent.Columns3.Width = 80; dgrdvStudent.Columns4.HeaderText = 系; dgrdvStudent.Columns4.Width = 150; dgrdvStudent_RowHeaderMouseClick(null, null); else dgrdvStudent.DataSource = null; /返回一个bool型的值。在添加学生信息时,用于判断当前输入的学生信息是否在数据库中已 /经存在,其参数为输入的学生学号。若返回值为true,说明输入的学生信息不存在,可

14、以添 /加学生信息;否则不能添加。 private bool IsNoExist(string no) int n = dgrdvStudent.Rows.Count; for (int i = 0; i n - 1; i+) if (no = dgrdvStudent.Rowsi.Cells0.Value.ToString().Trim() return false; return true; /窗体的Load事件代码。 private void FormStudent_Load(object sender, EventArgs e) ObjClose(); RefreshData(); /

15、窗体的FormClosing事件代码 private void FrmStudent_FormClosing(object sender, FormClosingEventArgs e) if (txtName.Enabled) if (MessageBox.Show(数据尚未保存,要关闭窗口吗?, 询问, MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2) = DialogResult.No) e.Cancel = true; /数据控件代码 private void dgrdv

16、Student_RowHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e) int n = dgrdvStudent.CurrentCell.RowIndex; if (n dgrdvStudent.RowCount) txtNo.Text = dgrdvStudent0, n.Value.ToString().Trim(); txtName.Text = dgrdvStudent1, n.Value.ToString().Trim(); cmbSex.Text = dgrdvStudent2, n.Value.To

17、String().Trim(); txtAge.Text = dgrdvStudent3, n.Value.ToString().Trim(); txtDept.Text = dgrdvStudent4, n.Value.ToString().Trim(); private void btnAdd_Click(object sender, EventArgs e) if (btnAdd.Text.Trim() = 添加) btnAdd.Text = 确定; ObjOpen(); ClearAll(); RefreshData(); btnUpdate.Enabled = false; btnD

18、elete.Enabled = false; cmbSelect.Enabled = false; txtSelect.Enabled = false; btnSelect.Enabled = false; dgrdvStudent.Enabled = false; return; else if (txtNo.Text.Trim() = ) MessageBox.Show(请输入学号!, 提示); txtNo.Focus(); return; else if (txtName.Text.Trim() = ) MessageBox.Show(请输入姓名!, 提示); txtName.Focus

19、(); return; else if (cmbSex.SelectedIndex = -1) MessageBox.Show(请选择性别!, 提示); cmbSex.Focus(); return; else if (txtAge.Text.Trim() = ) MessageBox.Show(请输入年龄!, 提示); txtAge.Focus(); return; else if (txtDept.Text.Trim() = ) MessageBox.Show(请输入该生所在系!, 提示); txtDept.Focus(); return; else if (!IsNoExist(txtN

20、o.Text.Trim() MessageBox.Show(该生已存在!, 提示); txtNo.Text = ; txtNo.Focus(); return; btnAdd.Text = 添加; string sqlStr1; sqlStr1 = insert into student values( + txtNo.Text.Trim() + , + txtName.Text.Trim() + , + cmbSex.Text.Trim() + , + txtAge.Text.Trim() + , + txtDept.Text.Trim() + ); CDataBase.UpdateDB(s

21、qlStr1); RefreshData(); if (MessageBox.Show(添加成功!继续添加吗?, 添加学生, MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1) = DialogResult.Yes) ClearAll(); ObjOpen(); btnAdd.Text = 确定; else ObjClose(); btnUpdate.Enabled = true; btnDelete.Enabled = true; cmbSelect.Enabled = true

22、; txtSelect.Enabled = true; btnSelect.Enabled = true; dgrdvStudent.Enabled = true; private void btnUpdate_Click(object sender, EventArgs e) if (btnUpdate.Text.Trim() = 修改) btnUpdate.Text = 确定; btnAdd.Enabled = false; btnDelete.Enabled = false; cmbSelect.Enabled = false; txtSelect.Enabled = false; bt

23、nSelect.Enabled = false; txtName.Enabled = true; txtAge.Enabled = true; cmbSex.Enabled = true; txtDept.Enabled = true; txtName.Focus(); else btnUpdate.Text = 修改; btnAdd.Enabled = true; btnDelete.Enabled = true; cmbSelect.Enabled = true; txtSelect.Enabled = true; btnSelect.Enabled = true; ObjClose();

24、 string sqlStr; sqlStr = update student set Sname= + txtName.Text.Trim() + ,Ssex= + cmbSex.Text.Trim() + ,Sage= + txtAge.Text.Trim() + ,Sdept= + txtDept.Text.Trim() + where Sno= + txtNo.Text.Trim() + ; CDataBase.UpdateDB(sqlStr); RefreshData(); MessageBox.Show(修改成功!, 提示); private void btnDelete_Clic

25、k(object sender, EventArgs e) if (txtNo.Text.Trim() = ) MessageBox.Show(没有可删除的记录!, 提示); return; if (MessageBox.Show(确定要删除学生“ + txtName.Text.Trim() + ”吗?, 删除学生, MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2) = DialogResult.Yes) string sqlStr = delete from student w

26、here Sno= + txtNo.Text.Trim() + ; CDataBase.UpdateDB(sqlStr); int n = dgrdvStudent.CurrentCell.RowIndex; dgrdvStudent.Rows.RemoveAt(n); if (dgrdvStudent.Rows.Count = 1) ClearAll(); dgrdvStudent.DataSource = null; else dgrdvStudent_RowHeaderMouseClick(null, null); private void btnSelect_Click(object

27、sender, EventArgs e) string sqlStr = ; if (txtSelect.Text.Trim() = ) MessageBox.Show(请输入要查询的“ + cmbSelect.SelectedItem.ToString().Trim() + ”!,提示); return; else if (cmbSelect.SelectedIndex = 0) sqlStr = select * from Student where Sno = + txtSelect.Text.Trim() + ; else if (cmbSelect.SelectedIndex = 1

28、) sqlStr = select * from Student where Sname = + txtSelect.Text.Trim() + ; else if (cmbSelect.SelectedIndex = 2) sqlStr = select * from Student where Ssex= + txtSelect.Text.Trim() + ; else if (cmbSelect.SelectedIndex = 3) sqlStr = select * from Student where Sage = + txtSelect.Text.Trim() + ; else i

29、f (cmbSelect.SelectedIndex = 4) sqlStr = select * from Student where Sdept = + txtSelect.Text.Trim() + ; DataSet ds = new DataSet(); ds = CDataBase.GetDataFromDB(sqlStr); if (ds != null) dgrdvStudent.DataSource = ds.Tables0; dgrdvStudent.Columns0.HeaderText = 学号; dgrdvStudent.Columns0.Width = 120; d

30、grdvStudent.Columns1.HeaderText = 姓名; dgrdvStudent.Columns1.Width = 120; dgrdvStudent.Columns2.HeaderText = 性别; dgrdvStudent.Columns2.Width = 80; dgrdvStudent.Columns3.HeaderText = 年龄; dgrdvStudent.Columns3.Width = 80; dgrdvStudent.Columns4.HeaderText = 系; dgrdvStudent.Columns4.Width = 150; dgrdvStu

31、dent_RowHeaderMouseClick(null, null); else dgrdvStudent.DataSource = null; ClearAll(); MessageBox.Show(没有符合条件的学生记录!, 提示); private void cmbSelect_SelectedIndexChanged(object sender, EventArgs e) txtSelect.Text = ; txtSelect.Focus(); private void txtSelect_TextChanged(object sender, EventArgs e) private void txtSelect_KeyDown(object sender, KeyEventArgs e)

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁