实验一数据库的连接与访问doc.docx
- 文档编号:26013749
- 上传时间:2023-06-17
- 格式:DOCX
- 页数:20
- 大小:110.14KB
实验一数据库的连接与访问doc.docx
《实验一数据库的连接与访问doc.docx》由会员分享,可在线阅读,更多相关《实验一数据库的连接与访问doc.docx(20页珍藏版)》请在冰豆网上搜索。
实验一数据库的连接与访问doc
实验十二数据库的连接与访问实验指导
ADO.NET是.NETFramework中的一系列类库,提供了在.NET开发中数据库所需的操作的类。
在.NET应用程序开发中,C#可以使用ADO.NET。
可以将ADO.NET看做是一个介于数据源和数据使用者之间的转换器,如图1所示。
ADO.NET接收使用者语言中的命令,如连接数据库、返回数据集等,然后将这些命令转换成可以在数据源中正确执行的语句。
图1ADO.NET的功能示意图
一、ADO.NET命名空间及其常用类
ADO.NET体系结构的类包含在System.Data命名空间中(命名空间相当于一个容器,它包含一组定义的类或结构,命名空间也可以嵌套在另一个命名空间中。
.NET类库提供了很多类,根据类的功能不同,又划分了很多命名空间,而这些命名空间大多数有一个顶级的命名空间System。
其中System.Data命名空间提供对表示ADO.NET结构的类的访问),根据功能划分,System.Data又包含了多个子空间。
System.Data命名空间及其子空间所包含的常用类如表1所示。
表1System.Data命名空间及其子空间的常用类
命名空间
类
说明
System.Data
DataSet
表示数据在内存中的缓存
System.Data
DataTable
表示内存中数据的一个表
System.Data
DataRow
表示DataTable中的一行数据
System.Data
DataColumn
表示DataTable中列的架构
System.Data
DataRelation
表示两个DataTable对象之间外键码和主/从关系
System.Data
Constraint
表示可在一个或多个DataColumn对象上强制的约束
System.Data
DataRowView
表示DataRow的自定义视图
System.Data.Sqlclient
SqlConnection
表示SQLServer数据库的一个打开的连接
System.Data.Sqlclient
SqlCommand
表示要对SQLServer数据库执行的一个Transact-SQL语句或存储过程
System.Data.Sqlclient
SqlCommandBuilder
自动生成单表命令,用于对DataSet所做的更改与关联的SQLServer数据库的更改相协调
System.Data.Sqlclient
SqlDataAdapter
表示用于填充DataSet和更新SQLServer数据库的一组数据命令和一个数据库连接
System.Data.Sqlclient
SqlDataReader
提供一种从SQLServer数据库读取行的只进流的方式
System.Data.Sqlclient
SqlParameter
表示SqlCommand的参数,也可以是它到DataSet列的映射
System.Data.Sqlclient
SqlTransaction
表示要在SQLServer数据库中处理的Transact-SQL事务
二、ADO.NET数据库访问
下面以一个简单的实例来说明在C#应用程序设计中如可使用ADO.NET来访问数据库。
首先用VisualStudio2008中的C#设计一个如图2所示的窗体。
图2学生注册信息管理的窗体设计
建立上述窗体的过程如下:
(1)启动VisualStudio2008,然后文件->新建项目,弹出如图3所示的对话框。
图3新建项目对话框
在新建项目对话框中,选择左侧的项目类型为“VisualC#--Windows”,右侧的模板中选择“Windows窗体应用程序”,下面输入项目的名称例如studentmis,并设置好存储路径,然后点击确定,生成如图4所示的Form1窗体。
图4Form1窗体
然后在工具箱(如果工具箱未显示,则需要点击视图->工具箱)中,分别从“数据”、“容器”、“公共组件”工具箱中拖放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中。
1.ADO.NET数据库访问步骤
图5是ADO.NET访问数据库的步骤。
图5ADO.NET访问数据库的步骤
2.SqlConnection类与数据库连接
ADO.NET通过ADOConnection连接到数据库,ADOConnection包括Open()方法和Close()方法。
Open用于打开数据库连接,Close关闭数据库连接。
在每次打开数据库连接后,都需要关闭数据库连接。
连接SQLServer数据库时,需要使用.NET提供的SqlConnection对象,在使用SqlConnection类时,需要引用命名空间usingSystem.Data.SqlClient。
在使用SqlConnection类连接数据库之前,通常要构造一个连接字符串,通过该字符串使应用程序与数据库建立连接。
(1)连接SQLServer数据库
ADO.NET中可用两种方式连接SQLServer数据库,一种是SQLServer登录方式,一种是集成登录方式。
①SQLServer登录方式
登录前不管Windows是否通过了身份验证,都需要提供相应的SQLServer用户名和密码,才能登录到SQLServer数据库。
SQLServer登录方式连接本地的studentmis数据库的实例代码如下:
//声明连接字符串
StringstrCon;
//声明SqlConnection对象
SqlConnectionsqlCon;
//编写数据库连接字符串:
server为“服务器IP地址(或名称)”,database为“数据库名称”,uid为“数据库用户名”,pwd为“数据库密码”
strCon="server='XTWANG';database='studentmis';uid='sa';pwd='sql2005'";
//新建SQLServer连接
SqlConnectionsqlCon=newSqlConnection(strCon);
sqlCon=newSqlConnection(strCon);
try
{
//打开SQL连接
sqlCon.Open();
//连接数据库成功后的相应数据库操作
…
//关闭SQL连接
sqlCon.Close();
}
catch(SystemExceptionex)
{
//连接数据库失败提示
…
}
②集成登录方式
这是一种信任登录,即SQLServer数据库服务器信任Windows系统,如果Windows系统通过了验证,则SQLserver将不再进行身份验证,也就不需要提供用户名和密码了。
集成登录方式连接本地的studentmis数据库的代码如下:
SqlConnectionsqlCon=newSqlConnection("dataSource=(local);InitialCatalog=studentmis;IntegratedSecutity=true");
(2)使用Sqlconnection连接SQLServer应用示例
在此编写一个对数据库进行各项操作时均可调用的数据库连接的公共方法,以避免在每个数据库操作时都要进行的数据库连接,从而简化程序设计,也便于维护代码。
(1)//添加命名空间
usingSystem.Data.SqlClient;
(2)//-----定义全局变量:
声明连接字符串和SqlConnection对象-----
//声明连接字符串
StringstrCon;
//声明SqlConnection对象
SqlConnectionsqlCon;
(3)//-----连接数据库,设计数据库连接的公共方法,以免每个数据库连接操作时都要进行数据库连接,简化程序,便于维护------
privatevoidDBConnect()
{
//编写数据库连接字符串:
server为“服务器IP地址(或名称)”,database为“数据库名称”,uid为“数据库用户名”,pwd为“数据库密码”
strCon="server='XTWANG';"+"database='studentmis';uid='sa';pwd='sql2005'";
//新建SQLServer连接
sqlCon=newSqlConnection(strCon);
}
(4)在后面进行的数据库增加、修改、删除、查询的功能代码段中要首先调用上述的数据库连接方法,以建立与指定数据库的连接,然后再执行相应的数据库操作。
最后断开数据库连接。
代码如下:
DBConnect();
sqlCon.Open();
…….//数据库操作代码
sqlCon.Close();
3.DataSet数据集与DataAdapter数据适配器
DataSet是数据的集合(数据集),表示来自一个或多个数据源数据的本地副本,在内存中被缓存,所以也可以看作是一个虚拟的表。
DataSet从数据源中加载数据后,就会断开与数据源的连接,然而DataSet必须要与一个或多个数据源进行交互,DataAdapter就像一座桥梁提供了DataSet对象与数据源之间的连接。
为了实现这种交互,.NET提供了SqlDataAdapter类,它专用于SQLServer数据库。
(1)利用DataAdapter将数据填充到DataSet
使用DataAdapter属性指定需要执行的操作,这个属性可以是一条SQL语句或者存储过程,再通过DataAdapter对象的Fill方法,即可将返回的数据存放到DataSet数据集中。
利用DataAdapter将数据填充到DataSet数据集的基本步骤如下:
①创建DataAdapter对象
示例代码:
//创建DataAdapter对象
SqlDataAdapterda=newSqlDataAdapter("select*fromstudent",sqlCon);
DataAdapter对象的构造函数允许传递2个初始化参数,第1个参数为SQL语句,第2个参数为数据库连接的SqlConnection对象。
②创建数据集
示例代码如下:
//创建数据集
DataSetds=newDataSet();
//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控件上。
将DataSet数据集绑定到DataGridView上的示例代码:
//将DataSet数据集绑定到DataGridView
dataGridView1.DataSource=ds.Tables[0];
4.SqlCommand类与SQLServer数据库操作
SqlCommand类可用于对SQLServer数据库执行一个T-SQL语句或者存储过程,如执行对数据表数据的插入、修改或删除操作,也可对数据表进行创建、修改或删除操作。
(1)SqlCommand类的常用方法如表2所示。
表2SqlCommand类的常用方法
方法
说明
Cancle
试图取消SqlCommand的执行
CreateParameter
创建SqlParameter对象的新实例
ExecuteNonQuery
对连接执行T-SQL语句并返回受影响的行数
ExecuteReader
将CommandText发送到Connection并生成一个SqlDataReader对象
①Command对象用于数据操作的基本步骤如下:
创建Command对象
示例代码如下:
//向数据表student(sno,sname)中插入一条记录
SqlCommandcmd=newSqlCommand("insertintostudentvalues('200101','张洋')",sqlCon);
SqlCommand对象的构造函数允许传递2个初始化参数,第1个参数为SQL语句,第2个参数为数据库连接的SqlConnection对象。
②ExecuteNonQuery方法
当执行的SQL语句不返回任何行时(如常用的insert、update以及delete语句以及很多存储过程),就可以使用ExecuteNonQuery方法。
示例代码如下:
//执行上述的向数据表student中插入一条记录的SQL语句
cmd.ExecuteNonQuery();
(2)SqlCommand类应用示例的程序设计
以下程序段完成4个按钮对数据库进行的增加、修改、删除、查询操作,在代码段中首先调用前面设计的数据库连接方法,以建立与指定数据库的连接,然后再执行相应数据库操作,最后断开数据库连接。
例1:
插入一条学生记录
privatevoidbtnadd_Click(objectsender,EventArgse)
{
//-----增加记录----
DBConnect();
sqlCon.Open();
SqlCommandcmd=newSqlCommand("insertintostudentvalues('"+cbsno.Text+"','"+tbsname.Text+"')",sqlCon);
//执行SQL语句,增加记录
cmd.ExecuteNonQuery();
sqlCon.Close();
}
例2:
修改一条学生记录
privatevoidbtnupdate_Click(objectsender,EventArgse)
{
//-----修改记录------
DBConnect();
sqlCon.Open();
SqlCommandcmd=newSqlCommand("updatestudentsetsname='"+tbsname.Text+"'wheresno='"+cbsno.Text+"'",sqlCon);
//执行SQL语句,修改记录
cmd.ExecuteNonQuery();
sqlCon.Close();}
例3:
删除一条学生记录
privatevoidbtndelete_Click(objectsender,EventArgse)
{
//-----删除记录------
DBConnect();
sqlCon.Open();
SqlCommandcmd=newSqlCommand("deletefromstudentwheresno='"+cbsno.Text+"'",sqlCon);
//执行SQL语句,删除记录
cmd.ExecuteNonQuery();
sqlCon.Close();
}
例4:
查询一名学生信息
privatevoidbtnselect_Click(objectsender,EventArgse)
{
//-----查询记录------
DBConnect();
sqlCon.Open();
SqlCommandcmd=newSqlCommand("deletefromstudentwheresno='"+cbsno.Text+"'",sqlCon);
//创建DataAdapter对象
SqlDataAdapterda=newSqlDataAdapter("selectsnoas学号,snameas姓名fromstudentwheresnolike'%"+cbsno.Text+"%'",sqlCon);
//创建数据集
DataSetds=newDataSet();
//Fill方法填充
da.Fill(ds,"tablename");
//将DataSet数据集绑定到DataGridView
dataGridView1.DataSource=ds.Tables[0];
sqlCon.Close();
}
程序运行截图如下图5所示。
图5程序运行界面图
该程序的全部源代码:
usingSystem;
usingSystem.Collections.Generic;
usingSystem.ComponentModel;
usingSystem.Data;
usingSystem.Drawing;
usingSystem.Linq;
usingSystem.Text;
usingSystem.Windows.Forms;
//添加命名空间
usingSystem.Data.SqlClient;
namespacestudentmis
{
publicpartialclassForm1:
Form
{
//-----定义全局变量:
声明连接字符串和SqlConnection对象-----
//声明连接字符串
StringstrCon;
//声明SqlConnection对象
SqlConnectionsqlCon;
publicForm1()
{
InitializeComponent();
}
//-----连接数据库,设计数据库连接的公共方法,以免每个数据库连接操作时都要进行数据库连接,简化程序,便于维护------
privatevoidDBConnect()
{
//编写数据库连接字符串:
server为“服务器IP地址(或名称)”,database为“数据库名称”,uid为“数据库用户名”,pwd为“数据库密码”
strCon="server='XTWANG';database='studentmis';uid='sa';pwd='sql2005'";
//新建SQLServer连接
sqlCon=newSqlConnection(strCon);
}
//-----刷新显示相关数据的方法
privatevoidComonDataView()
{
try
{
DBConnect();
//连接数据库成功后的操作
//创建DataAdapter对象
SqlDataAdapterda=newSqlDataAdapter("selectsnoas学号,"+"snameas姓名fromstudent",sqlCon);
//创建数据集
DataSetds=newDataSet();
//Fill方法填充
da.Fill(ds,"tablename");
//将DataSet数据集绑定到TextBox
dataGridView1.DataSource=ds.Tables[0];
//指定列表中要显示的数据表的具体字段
//例如,列表时显示的学号,但保存的数据是学号sno
cbsno.DisplayMember="学号";
//指定最终实际存储的数据表的具体字段
cbsno.ValueMember="学号";
//绑定数据源
cbsno.DataSource=ds.Tables[0].DefaultView;
}
catch(SystemExceptionex)
{
//连接数据库失败提示
MessageBox.Show("错误"+ex.Message,"错误提示",MessageBoxButtons.OKCancel,MessageBoxIcon.Information);
}
finally
{
//如果处于与数据库连接状态
if(sqlCon.State==ConnectionState.Open)
{//关闭SQL连接
sqlCon.Close();
//释放占用的资源
sqlCon.Dispose();
}
}
}
//----在窗体加载时显示数据表原始数据,并初始化列表项中的数据
privatevoidForm1_Load(objectsender,EventArgse)
{
ComonDataView();
}
privatevoidbtnadd_Click(objectsender,EventArgse)
{
//-----增加记录----
DBConnect();
sqlCon.Open();
SqlCommandcmd=newSqlCommand("insertintostudentvalues('"+cbsno.Text+"','"+tbsname.Text+"')",sqlCon);
//执行SQL语句,增加记录
cmd.ExecuteNonQuery();
sqlCon.Close();
}
privatevoidbtnupdate_Click(objectsender,Event
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验 数据库 连接 访问 doc