C#数据库操作实验报告.docx
《C#数据库操作实验报告.docx》由会员分享,可在线阅读,更多相关《C#数据库操作实验报告.docx(14页珍藏版)》请在冰点文库上搜索。
C#数据库操作实验报告
实验三数据库操作
一、实验目的和要求
掌握数据库编程编程技术
二、实验原理与预备知识
使用ADO.NET访问数据库技术:
一、使用Connection对象连接数据库;
二、使用Command对象执行查询或数据操纵命令;
DataReader对象用于从数据源中读取仅向前和只读的数据流。
三、还可以用DataAdapter对象与现有数据源交互,主要用于从数据源中获取数据、填充DataSet中的表并将对DataSet的更改提交回数据源。
三、实验环境
VisualStudio.Net集成开发环境
四、实验内容
1.通讯录维护窗体初始运行状态如下:
程序运行时显示第一条记录的信息,且各文本框的内容为只读,不允许修改;“确定”和“取消”按钮不可用。
要求完成以下功能:
(1)当单击“《”、“<”、“>”和“》”按钮时,分别浏览第一条记录、上一条记录、下一条记录和最后一条记录;
(2)当单击“添加”按钮后,“确定”和“取消”按钮可用,其他按钮不可用,且各文本框清空,并等待用户输入新的内容,输入完毕,单击“确定”后,将新的通讯记录添加到数据库,且“确定”和“取消”按钮不可用,其他按钮可用;
(3)当单击“修改”按钮后,“确定”和“取消”按钮可用,其他按钮不可用,可以在文本框中修改当前显示的记录内容,修改完毕,单击“确定”后,将修改后的内容更新到数据库,且恢复文本框的只读状态,“确定”和“取消”按钮不可用,其他按钮可用;
(4)当单击“删除”按钮后,弹出删除记录确认对话框,经确认后,可删除当前的记录。
2.学生成绩管理
用户管理模块可以查看该系统所有用户的用户名、密码和是否管理员信息,可以添加新的用户、修改现有用户信息、删除用户信息等,运行效果如图所示。
动态绑定DataGridView控件的代码:
privatevoidAdminMain_Load(objectsender,EventArgse)
{//窗体载入时动态绑定用户管理的数据
this.Text=username+"欢迎你!
";
conn.Open();
stringsqlStr="selectuser_idas编号,user_nameas用户名,passwordas密码,adminas是否管理员fromtb_user";
sda=newSqlDataAdapter(sqlStr,conn);
ds=newDataSet();
sda.Fill(ds,"tb_user");
dataGridView1.DataSource=ds.Tables["tb_user"];
conn.Close();
}
五、实验内容
通讯录源代码:
publicpartialclassaddressbook:
Form
{
privateBooleanadd_isclicked=false;
privateBooleanupdate_isclicked=false;
publicaddressbook()
{
InitializeComponent();
}
privatevoidbutton5_Click(objectsender,EventArgse)
{
enable();
button6.Enabled=false;
button7.Enabled=false;
button1.Enabled=false;
button2.Enabled=false;
button3.Enabled=false;
button4.Enabled=false;
BLL.options.Reset(this.Controls);
add_isclicked=true;
}
privatevoidaddressbook_Load(objectsender,EventArgse)
{
initial();
display_s();
}
publicvoiddisplay_s()
{
DataTabledataset=DataProvider.DataProvider.Display_addressbook();
textBox1.Text=dataset.Rows[0][1].ToString();
textBox2.Text=dataset.Rows[0][2].ToString();
textBox3.Text=dataset.Rows[0][3].ToString();
textBox4.Text=dataset.Rows[0][4].ToString();
textBox5.Text=dataset.Rows[0][5].ToString();
textBox6.Text=dataset.Rows[0][6].ToString();
textBox7.Text=dataset.Rows[0][7].ToString();
textBox8.Text=dataset.Rows[0][0].ToString();
}
publicvoiddisplay_en()
{
DataTabledataset=DataProvider.DataProvider.Display_end();
textBox1.Text=dataset.Rows[0][1].ToString();
textBox2.Text=dataset.Rows[0][2].ToString();
textBox3.Text=dataset.Rows[0][3].ToString();
textBox4.Text=dataset.Rows[0][4].ToString();
textBox5.Text=dataset.Rows[0][5].ToString();
textBox6.Text=dataset.Rows[0][6].ToString();
textBox7.Text=dataset.Rows[0][7].ToString();
textBox8.Text=dataset.Rows[0][0].ToString();
}
publicvoiddisplayById()
{
DataTabledataset=DataProvider.DataProvider.Display_Byid(textBox8.Text);
textBox1.Text=dataset.Rows[0][1].ToString();
textBox2.Text=dataset.Rows[0][2].ToString();
textBox3.Text=dataset.Rows[0][3].ToString();
textBox4.Text=dataset.Rows[0][4].ToString();
textBox5.Text=dataset.Rows[0][5].ToString();
textBox6.Text=dataset.Rows[0][6].ToString();
textBox7.Text=dataset.Rows[0][7].ToString();
textBox8.Text=dataset.Rows[0][0].ToString();
}
publicvoidinitial()
{
textBox1.ReadOnly=true;
textBox2.ReadOnly=true;
textBox3.ReadOnly=true;
textBox4.ReadOnly=true;
textBox5.ReadOnly=true;
textBox6.ReadOnly=true;
textBox7.ReadOnly=true;
button8.Enabled=false;
button9.Enabled=false;
}
publicvoidenable()
{
textBox1.ReadOnly=false;
textBox2.ReadOnly=false;
textBox3.ReadOnly=false;
textBox4.ReadOnly=false;
textBox5.ReadOnly=false;
textBox6.ReadOnly=false;
textBox7.ReadOnly=false;
button8.Enabled=true;
button9.Enabled=true;
}
privatevoidbutton8_Click(objectsender,EventArgse)
{
if(add_isclicked)
{
DataProvider.DataProvider.insert_into_addressbook(textBox1.Text,textBox2.Text,textBox3.Text,textBox4.Text,textBox5.Text,textBox6.Text,textBox7.Text);
button6.Enabled=true;
button7.Enabled=true;
button1.Enabled=true;
button2.Enabled=true;
button3.Enabled=true;
button4.Enabled=true;
initial();
add_isclicked=false;
display_en();
}
if(update_isclicked)
{
button5.Enabled=true;
button7.Enabled=true;
button1.Enabled=true;
button2.Enabled=true;
button3.Enabled=true;
button4.Enabled=true;
initial();
DataProvider.DataProvider.update_addressbook(textBox1.Text,textBox2.Text,textBox3.Text,textBox4.Text,textBox5.Text,textBox6.Text,textBox7.Text,textBox8.Text);
update_isclicked=false;
displayById();
}
}
privatevoidbutton7_Click(objectsender,EventArgse)
{
if(MessageBox.Show("确定删除吗?
","删除提示",MessageBoxButtons.OKCancel)==DialogResult.OK)
{
DataProvider.DataProvider.deletebyid(textBox1.Text);
display_s();
}
}
privatevoidbutton1_Click(objectsender,EventArgse)
{
display_s();
}
privatevoidbutton6_Click(objectsender,EventArgse)
{
enable();
button5.Enabled=false;
button7.Enabled=false;
button1.Enabled=false;
button2.Enabled=false;
button3.Enabled=false;
button4.Enabled=false;
update_isclicked=true;
}
privatevoidbutton4_Click(objectsender,EventArgse)
{
display_en();
}
privatevoidbutton2_Click(objectsender,EventArgse)
{
DataTabledataset=DataProvider.DataProvider.Display_previous(textBox8.Text);
if(dataset.Rows.Count<=0)
{
MessageBox.Show("已经是第一条了!
","提示");
}
else
{
textBox1.Text=dataset.Rows[0][1].ToString();
textBox2.Text=dataset.Rows[0][2].ToString();
textBox3.Text=dataset.Rows[0][3].ToString();
textBox4.Text=dataset.Rows[0][4].ToString();
textBox5.Text=dataset.Rows[0][5].ToString();
textBox6.Text=dataset.Rows[0][6].ToString();
textBox7.Text=dataset.Rows[0][7].ToString();
textBox8.Text=dataset.Rows[0][0].ToString();
}
}
privatevoidbutton3_Click(objectsender,EventArgse)
{
DataTabledataset=DataProvider.DataProvider.Display_next(textBox8.Text);
if(dataset.Rows.Count<=0)
{
MessageBox.Show("已经是最后一条了!
","提示");
}
else
{
textBox1.Text=dataset.Rows[0][1].ToString();
textBox2.Text=dataset.Rows[0][2].ToString();
textBox3.Text=dataset.Rows[0][3].ToString();
textBox4.Text=dataset.Rows[0][4].ToString();
textBox5.Text=dataset.Rows[0][5].ToString();
textBox6.Text=dataset.Rows[0][6].ToString();
textBox7.Text=dataset.Rows[0][7].ToString();
textBox8.Text=dataset.Rows[0][0].ToString();
}
}
privatevoidbutton9_Click(objectsender,EventArgse)
{
initial();
display_s();
button1.Enabled=true;
button2.Enabled=true;
button3.Enabled=true;
button4.Enabled=true;
button5.Enabled=true;
button6.Enabled=true;
button7.Enabled=true;
}
}
六、实验总结
本次实验我实现了简单通讯录的设计,在此次设计中我尝试了对代码进行了封装,这将会在开发大型项目时优势明显。
我新建了一个类项目,并新建了两个类,DataHelper.cs、DataProvider.cs,前者我对数据库连接封装了起来,向外提供几个增删查改的方法,方法的参数是sql语句和sql语句中的参数,后者中我定义了具体的sql语句,并调用前者中的方法,定义对表的增删查改方法,这样在界面类中就可以轻松的调用DataProvider.cs中的方法,而不用再写数据库连接语句,这样虽然代码量增加了,但是使的代码结构一目了然,有利于后期修改维护。
此次实验我深刻体会到了分层的好处,在以后还要加强体会。