实验一数据库的连接与访问(分两次实验完成)实验目的:1)掌握的常用对象2)掌握常用的程序编写方法3)能够实现简单的查询和数据更新功能注意:注意查看红色字体部分内容。
是.NET Framework中的一系列类库,提供了在.NET开发中数据库所需的操作的类。
在.NET应用程序开发中,C#可以使用。
可以将看做是一个介于数据源和数据使用者之间的转换器,如图1所示。
接收使用者语言中的命令,如连接数据库、返回数据集等,然后将这些命令转换成可以在数据源中正确执行的语句。
图1 的功能示意图一、 命名空间及其常用类体系结构的类包含在System.Data命名空间中(命名空间相当于一个容器,它包含一组定义的类或结构,命名空间也可以嵌套在另一个命名空间中。
.NET类库提供了很多类,根据类的功能不同,又划分了很多命名空间,而这些命名空间大多数有一个顶级的命名空间System。
其中System.Data命名空间提供对表示结构的类的访问),根据功能划分,System.Data又包含了多个子空间。
System.Data命名空间及其子空间所包含的常用类如表1所示。
表1 System.Data命名空间及其子空间的常用类二、数据库访问实验内容:一、设计如下图所示窗体图2 学生注册信息管理的窗体设计建立上述窗体的过程如下:(1)启动Visual Studio 2008,然后文件->新建项目,弹出如图3所示的对话框。
图3 新建项目对话框在新建项目对话框中,选择左侧的项目类型为“Visual C# --Windows”,右侧的模板中选择“Windows 窗体应用程序”,下面输入项目的名称例如studentmis,并设置好存储路径,然后点击确定,生成如图4所示的Form1窗体。
图4 Form1窗体然后在工具箱(如果工具箱未显示,则需要点击视图->工具箱)中,分别从“数据”、“容器”、“公共组件”工具箱中拖放DataGridView控件、Pannel控件、Lable控件、Combox 控件、TextBox控件、Button控件到该窗体中,并修改相应的Name属性。
该窗体包含1个DataGridView控件用以显示数据表的数据;1个Pannel控件用以组合数据操作的全部组件;2个Lable控件用以显示“学号”、“姓名”标题;1个Combox 控件用作“学号”的选项列表,该控件的Name属性为cbsno;1个TextBox控件用作“姓名”的输入,该控件的Name属性为tbsname;4个Button控件用作对数据库的“增加”、“修改”、“删除”、“查询”操作,并将这4个控件的Name属性分别设置为btnadd、btnupdate、btndelete、btnselect。
该窗体的功能设计包含了对数据库的基本操作。
●增加:cbsno、tbsname作为追加一条记录的内容输入。
●修改:以cbsno为“学号”条件,修改该cbsno的“姓名”。
●删除:以cbsno为“学号”条件,删除该cbsno对应的记录。
●查询:以cbsno为“学号”条件,从其下拉列表中选择,然后选择出的记录显示在DataGridView中。
数据库访问步骤图5是图5 访问数据库的步骤以下步骤是实例程序,请同学们阅读后完成程序功能的编写。
数据表中至少包含两个字段(sno,sname),分别指学号和姓名。
实验报告要求:蓝色字部分和自己编写完成的主要程序都要写入实验报告,实验内容分两次做完,实验报告分两次写完。
其中界面设计和数据增加程序写入第一次实验报告,其他程序写入第二次实验报告。
2.SqlConnection类与数据库连接通过ADOConnection连接到数据库,ADOConnection包括Open()方法和Close()方法。
Open用于打开数据库连接,Close关闭数据库连接。
在每次打开数据库连接后,都需要关闭数据库连接。
连接SQL Server数据库时,需要使用.NET提供的SqlConnection对象,在使用SqlConnection类时,需要引用命名空间using System.Data.SqlClient。
在使用SqlConnection类连接数据库之前,通常要构造一个连接字符串,通过该字符串使应用程序与数据库建立连接。
(1)连接SQL Server数据库中可用两种方式连接SQL Server数据库,一种是SQL Server登录方式,一种是集成登录方式。
① SQL Server登录方式登录前不管Windows是否通过了身份验证,都需要提供相应的SQL Server用户名和密码,才能登录到SQL Server数据库。
SQL Server登录方式连接本地的studentmis数据库的实例代码如下://声明连接字符串String strCon;//声明SqlConnection对象SqlConnection sqlCon;//编写数据库连接字符串:server为“服务器IP地址(或名称)”,database为“数据库名称”,uid为“数据库用户名”,pwd为“数据库密码”strCon ="server='XTWANG';database='studentmis';uid='sa';pwd='sql2005'";//新建SQL Server连接SqlConnection sqlCon=new SqlConnection (strCon);sqlCon =new SqlConnection (strCon);try{//打开SQL连接sqlCon.Open();//连接数据库成功后的相应数据库操作…//关闭SQL连接sqlCon.Close();}catch (SystemException ex){//连接数据库失败提示…}②集成登录方式这是一种信任登录,即SQL Server数据库服务器信任Windows系统,如果Windows 系统通过了验证,则SQL server将不再进行身份验证,也就不需要提供用户名和密码了。
集成登录方式连接本地的studentmis数据库的代码如下:SqlConnection sqlCon=new SqlConnection ("data Source=(local);InitialCatalog=studentmis;Integrated Secutity=true");(2)使用Sqlconnection 连接SQL Server应用示例在此编写一个对数据库进行各项操作时均可调用的数据库连接的公共方法,以避免在每个数据库操作时都要进行的数据库连接,从而简化程序设计,也便于维护代码。
(1)//添加命名空间using System.Data.SqlClient;(2)// -----定义全局变量:声明连接字符串和SqlConnection对象-----//声明连接字符串String strCon;//声明SqlConnection对象SqlConnection sqlCon;(3)//-----连接数据库,设计数据库连接的公共方法,以免每个数据库连接操作时都要进行数据库连接,简化程序,便于维护------private void DBConnect(){//编写数据库连接字符串:server为“服务器IP地址(或名称)”,database为“数据库名称”,uid为“数据库用户名”,pwd为“数据库密码”strCon ="server='XTWANG';"+"database='studentmis';uid='sa';pwd='sql2005'";//新建SQL Server连接sqlCon =new SqlConnection (strCon);}(4)在后面进行的数据库增加、修改、删除、查询的功能代码段中要首先调用上述的数据库连接方法,以建立与指定数据库的连接,然后再执行相应的数据库操作。
最后断开数据库连接。
代码如下:DBConnect();sqlCon.Open();…….//数据库操作代码sqlCon.Close();3.DataSet数据集与DataAdapter数据适配器DataSet是数据的集合(数据集),表示来自一个或多个数据源数据的本地副本,在内存中被缓存,所以也可以看作是一个虚拟的表。
DataSet从数据源中加载数据后,就会断开与数据源的连接,然而DataSet必须要与一个或多个数据源进行交互,DataAdapter就像一座桥梁提供了DataSet对象与数据源之间的连接。
为了实现这种交互,.NET提供了SqlDataAdapter类,它专用于SQL Server数据库。
(1)利用DataAdapter将数据填充到DataSet使用DataAdapter属性指定需要执行的操作,这个属性可以是一条SQL语句或者存储过程,再通过DataAdapter对象的Fill方法,即可将返回的数据存放到DataSet数据集中。
利用DataAdapter将数据填充到DataSet数据集的基本步骤如下:①创建DataAdapter对象示例代码://创建DataAdapter对象SqlDataAdapter da = new SqlDataAdapter("select * from student",sqlCon );DataAdapter对象的构造函数允许传递2个初始化参数,第1个参数为SQL语句,第2个参数为数据库连接的SqlConnection对象。
②创建数据集示例代码如下://创建数据集DataSet ds = new DataSet();//Fill方法填充da.Fill(ds,"tablename");DataSet可以被看作是一个虚拟的表或表的集合,这个表的名称在Fill方法中可以任意命名(如tablename)。
③显示DataSet的数据当返回的数据被存放到数据集中后,可以通过循环语句遍历和显示数据集中的信息。
当需要显示表中某一行字段的值是,可以通过DataSet对象获取相应行的某一列的值,示例代码如下://获取数据集ds.Tables["tablename"].Rows[0]["sname"].ToString();上述代码从DataSet对象中的虚表tablename中的第0行中获取sname列的值。
④绑定DataSet数据集到列表控件或者数据显示控件上为了更方便地显示数据,也可以将DataSet数据集绑定到DataGridView、ListBox或ComboBox控件上。