使用数据提供程序访问数据库.ppt_第1页
使用数据提供程序访问数据库.ppt_第2页
使用数据提供程序访问数据库.ppt_第3页
使用数据提供程序访问数据库.ppt_第4页
使用数据提供程序访问数据库.ppt_第5页
已阅读5页,还剩44页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第10章 使用.NET数据提供程序访问数据库,本章内容:.NET数据提供程序概述,数据库的连接字符串,连接数据库Connection对象,执行数据库命令Command对象,读取数据DataReader对象,数据读取器DataAdapter对象。 本章重点:Connection对象,Command对象,DataReader对象。,10.1 .NET数据提供程序概述,10.1.1 .NET数据提供程序简介,10.1.2 使用.NET对象访问数据库的步骤 使用.NET Framework数据提供程序的连接模式的对象,访问数据库的步骤如下: 使用Connection对象建立与数据库的连接; 使用Command对象执行SQL命令,向数据库索取数据; 使用DataReader对象读取Command对象取得的数据; 以DataReader对象,利用Web控件以及相应的数据绑定,显示数据; 完成读取操作后,关闭DataReader对象; 关闭Connection对象。,10.2 数据库的连接字符串,10.2.1 数据库连接字符串的常用参数,10.2.2 连接到SQL Server的连接字符串 (1)标准安全连接(Standard Security Connection),也称非信任连接 它把登录账户(User ID或Uid)和密码(Password或Pwd)写在连接字符串中。标准安全连接方式的连接字符串的一般形式如下: “Data Source=服务器名或地址;Initial Catalog=数据库名;User ID=用户名;Password=密码“ “Data Source=MICROSOF-63A313MSSQLSERVER2008;Initial Catalog=StudentDB; User ID=sa;Password=“,如果连接本地的SQL Server数据库且定义了实例名,则Server参数也可以写为“.实例名”或“localhost实例名”;如果是远程服务器,则将“.”或“localhost”替换为远程服务器的名称或IP地址。这样,上面写的连接字符串可以改为: “Data Source=.MSSQLSERVER2008; Initial Catalog=StudentDB; User ID=sa;Password=“ 如果SQL Server的IP地址为2:1433,则连接字符串为: “Data Source=2,1433实例名;Initial Catalog=数据库名;User ID=用户名;Pwd=密码“ 有关更改sa的密码或更改身份验证模式的方法,请参考附录A。,(2)信任连接(Trusted Connection) SQL Server集成安全性(也称为信任连接)有助于在连接到SQL Server时提供保护,因为它不会在连接字符串中公开用户ID和密码,是对连接进行身份验证的建议方法。 对于采用“Windows身份验证模式”的SQL Server 2005/2008,其连接字符串的形式一般如下: “Data Source=服务器名或地址;Initial Catalog=数据库名; Integrated Security=True“ 使用Windows集成的安全性验证在访问数据库时安全性更高。如果使用信任连接,则上面连接字符串改为: “Data Source=.MSSQLSERVER2008;Initial Catalog=StudentDB;Integrated Security=True“,10.2.3 连接到OLE DB数据源的连接字符串 下列连接字符串使用Jet提供程序连接到Microsoft Access数据库: “Provider=Microsoft.Jet.OLEDB.4.0; Data Source=Access数据库名.mdb;User ID=用户名;Password=密码“ 请注意,如果数据库未受到保护(默认值),可选择UserID和Password关键字。 例如,Access数据库保存路径为D:ExamplesApp_DataStudentDB.mdb StudentDB.mdb,则数据库连接字符串为: “Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:ExamplesApp_DataStudentDB.mdb“ 如果数据库连接字符串写在程序中,则可使用相对路径,System.Web.HttpContext.Current. Server.MapPath()表示当前网站下的路径,则数据库连接字符串为: “Provider=Microsoft.Jet.OleDb.4.0;Data Source=“ + Server.MapPath(“App_DataStudentDB.mdb“),10.2.4 连接字符串的存放位置 1把连接字符串写在程序中 2把连接字符串放在web.config文件中 (1)web.config文件中连接字符串的常用属性 web.config中的关键字遵循camelCase命名约定。 ConnectionStrings属性 ,Connection对象的连接字符串保存在ConnectionString属性中,可以使用ConnectionString属性来获取或设置数据库的连接字符串。在程序中获得连接字符串的方法为: System.Configuration.ConfigurationManager.ConnectionStrings“连接字符串名“.ToString(); 如果在程序中引入ConfigurationManager类的命名空间“using System.Configuration;”,则在程序中获得连接字符串的方法可简写为: ConfigurationManager.ConnectionStrings“连接字符串名“.ToString();, AppSettings属性 另外,对于ASP.NET 1.1,可以在ConfigurationManager类中使用AppSettings属性,用来获取web.config配置文件中节的数据。中包括两个重要的部分:字符串名key和字符串的内容value。AppSettings是在Visual Studio 2003中常用的方式。 在程序中获得连接字符串的方法为: System.Configuration.ConfigurationManager.AppSettings“连接字符串名“.ToString();,(2)打开和修改web.config文件 打开和修改web.config文件的步骤如下。 在解决方案资源管理器中,双击web.config文件名。 在web.config文件中找到元素中的子元素,如 图10-1所示。删除的后两个字符“/”,使之成为”,这时将自动填充。在与之间输入如下连接字符串(“混合模式”)(见图10-2): 注意,要把“服务器名”更换为用户自己的计算机中安装的SQL Server 2005/2008的实例名称。,如果SQL Server 2005/2008采用的是“Windows身份验证模式”,则要把连接字符串改为如下形式: connectionString=“Data Source=服务器名; Initial Catalog=StudentDB; Integrated Security=True“ 当SQL Server 2005/2008“账户设置”为“混合模式”时,数据库连接字符串可使用“标准安全连接”或“信任连接”;为“Windows身份验证模式”时,只能使用“信任连接”。所以,读者在练习时要根据需要和SQL Server 2005/2008的“账户设置”来选择数据库连接字符串。,10.3 连接数据库Connection对象,10.3.1 Connection对象概述 Connection对象的功能是创建与指定数据源的连接,并完成初始化工作。它的一些属性描述数据源和用户身份验证。Connection对象还提供一些方法允许程序员与数据源建立连接或者断开连接。 使用的Connection对象取决于数据源的类型,随.NET Framework提供的每个.NET Framework数据提供程序都具有一个DbConnection对象。微软提供了4种数据库连接对象: 要连接到Microsoft SQL Server 7.0或更高版本,使用SqlConnection对象; 要连接到OLE DB数据源,或者连接到Microsoft SQL Server 6.x或更低版本,或者连接到Access,使用OleDbConnection对象; 要连接到ODBC数据源,使用OdbcConnection对象; 要连接到Oracle数据源,使用OracleConnection对象。,10.3.2 创建Connection对象 下面介绍使用Connection对象的构造函数创建SqlConnection对象的语法格式,并通过构造函数的参数来设置Connection对象的特定属性值。语法格式如下: SqlConnection 连接对象名 = new SqlConnection(连接字符串); 连接对象名:创建的Connection对象的名称。 连接字符串:描述要连接的数据库的参数。 也可以先使用构造函数创建一个不含参数的SqlConnection对象,以后再通过属性设置连接字符串。这种方法对属性进行明确设置,能够使代码更易理解和调试。其语法格式如下: SqlConnection 连接对象名 = new SqlConnection(); 连接对象名.ConnectionString = 连接字符串;,10.3.3 Connection对象的属性和方法 1Connection对象的属性,2Connection对象的方法,(1)Open()方法 使用Open()方法打开一个数据库连接。为了减轻系统负担,应该尽可能晚地打开数据库。语法格式如下: 连接对象名.Open() 连接对象名:创建的Connection对象的名称。 (2)Close()方法 使用Close()方法关闭一个打开的数据库连接。为了减轻系统负担,应该尽可能早地关闭数据库。语法格式如下: 连接对象名.Close() 注意:如果连接超出范围,并不会自动关闭,而是会浪费掉一定的系统资源。因此,必须在连接对象超出范围之前,通过调用Close()或Dispose()方法,显式地关闭连接。,(3)CreateCommand()方法 使用CreateCommand()方法创建并返回一个与该连接关联的Command对象。语法格式如下: 连接对象名.CreateCommand() 返回值:返回一个Command对象。 示例:创建一个连接到SQL Server数据库,SqlConnection对象名为conn的SqlCommand对象cmd。 SqlCommand cmd = conn.CreateCommand();,10.3.4 连接到数据库的基本步骤 在ADO.NET中连接到数据库的基本步骤如下。 根据连接的数据源,添加相应的命名空间,见表10-1。例如,连接SQL Server 2005/2008数据库,则添加命名空间如下: using System.Data; using System.Data.SqlClient; /如果连接Access数据库,则改为using System.Data.OleDB; using System.Configuration; 设置(例如在web.config中)和获取连接字符串。 创建一个Connection对象,并设置Connection对象的连接字符串属性(ConnectionString)。使用Command对象。 使用Open()方法或Close()方法打开或关闭连接。,【例10-1】本例演示如何创建并打开与SQL Server 7.0或更高版本的数据库的连接。连接第6章创建的SQL Server数据库StudentDB。在Label控件中显示连接字符串和打开、关闭当前数据库的连接状态,页面显示如图10-3所示。 设计页面。新建一个ASP.NET网站,向页面中添加一个Label控件。 在web.config文件中添加连接字符串。按照如图10-2所示中的代码,在web.config文件中添加连接字符串。 编写事件代码。 在命名空间区域中添加如下内容: using System.Data; using System.Data.SqlClient; using System.Configuration; Default.aspx页面装入时执行的事件过程代码如下: protected void Page_Load(object sender, EventArgs e) string connStr = /获取连接字符串 ConfigurationManager.ConnectionStrings“StudentDBConnectionString“.ToString(); using (SqlConnection connection = new SqlConnection(connStr) Label1.Text= connStr +“; Label1.Text = Label1.Text+connection.State.ToString() + “; connection.Open(); Label1.Text = Label1.Text+connection.State.ToString(); ,更改命名空间: using System.Data.OleDb; 在web.config文件中更改连接字符串: Default.aspx页面装入时执行的事件过程代码中,修改下面这行: using (OleDbConnection connection = new OleDbConnection(connStr),10.3.5 关闭连接 建议在使用完连接后一定要关闭连接。如果代码中存在using块,将自动断开连接,发生无法处理的异常。 也可以使用适合所使用的提供程序的连接对象的Close()或Dispose()方法。 通过在解决方案资源管理器中右击数据库并从快捷菜单中执行“分离”命令,或者在服务器资源管理器中右击数据库并从快捷菜单中执行“关闭连接”命令,可以关闭由Visual Studio占有的连接。当运行或调试Web应用程序时,Visual Studio将自动关闭任何打开的数据库连接。,10.4 执行数据库命令Command对象,10.4.1 Command对象概述 根据所用的.Net Framework数据提供程序的不同,Command对象也分为4种:SqlCommand对象、OleDbCommand对象、OdbcCommand对象和OracleCommand对象。在编程时应根据访问的数据源的不同,选用相应的Command对象。,10.4.2 创建Command对象 Command对象有两种创建方式。 1使用Command对象的构造函数创建Command对象 可以使用构造函数创建Command对象。构造函数可以采用可选参数,例如,要在数据源中执行的SQL语句、Connection对象或Transaction对象,分为以下两种情况。 (1)执行SQL字符串时的创建SqlCommand对象的构造函数 使用构造函数创建SqlCommand对象,并通过该对象的构造函数参数来设置特定属性值,其语法格式如下: SqlCommand 命令对象名 = new SqlCommand(“SQL字符串“, 连接对象名); 命令对象名:创建的Command对象的名称。 例如,下面代码: SqlCommand cmd = new SqlCommand( “SELECT * FROM StudentInfo“, conn );,也可以先使用构造函数创建一个空Command对象,然后设置属性值。这种方法对属性进行明确设置,能够使代码更易理解和调试。其语法格式如下: SqlCommand 命令对象名 = new SqlCommand(); /创建一个空的命令对象 命令对象名.Connection = 连接对象名; /设置连接对象 命令对象名.CommandType = CommandType.Text; /定义为使用SQL语句,可省略 命令对象名.CommandText = “SQL字符串“; /定义要执行的SQL语句 例如,下面的代码片段在功能上与第一种方法是等效的: SqlCommand cmd = new SqlCommand(); /创建一个空的命令对象cmd cmd.Connection = conn; /设置连接对象,conn是前面创建的连接对象名 cmd.CommandText = “SELECT * FROM StudentInfo“; /定义要执行的SQL语句,(2)执行存储过程时的创建SqlCommand对象的构造函数 执行没有参数的存储过程 语法格式如下: SqlCommand 命令对象名 = new SqlCommand(“存储过程名“, 连接对象名); 命令对象名.CommandType=CommandType.StoredProcedure; /定义为使用存储过程 或者 SqlCommand 命令对象名 = new SqlCommand(); /创建一个空的Command对象 命令对象名.Connection = 连接对象名; /设置Command对象的Connection属性 命令对象名.CommandType = CommandType.StoredProcedure; /定义为使用存储过程,不能省略 命令对象名.CommandText = “存储过程名“; /定义要执行的存储过程的名称 然后根据需要选择执行Command对象的Execute方法。, 执行有参数的存储过程 执行有参数的存储过程,在上面命令后面添加参数即可,语法格式如下: SqlParameter 参数对象1 = new SqlParameter(“参数名1“, Sql数据类型, 长度); /添加参数 参数对象1.Value = 值; /给参数赋值 命令对象名.Parameters.Add(参数对象1); /添加参数1,2使用Connection对象的CreateCommand()方法创建Command对象 也可以使用Connection对象的CreateCommand()方法创建用于特定连接的Command对象。Command对象执行的SQL语句可以使用CommandText属性进行配置。 使用Connection对象的CreateCommand()方法创建SqlCommand对象的语法格式如下: SqlCommand 命令对象名 = 连接对象名.CreateCommand(); 命令对象名.CommandType = CommandType.Text 或 .StoredProcedure; /SQL命令或存储过程 命令对象名.CommandText = “SQL字符串“ 或 “存储过程名“; 例如,通过Command对象的CommandText属性来执行一条SQL语句,代码如下: string connStr = ConfigurationManager.ConnectionStrings“StudentDBConnectionString“.ToString(); SqlConnection conn = new SqlConnection(connStr); /创建Connection对象:conn string sqlstr=“SELECT * FROM StudentInfo“; /SQL字符串 SqlCommand cmd = new SqlCommand(sqlstr, conn); /创建Command对象,并初始化SQL字符串 或者使用Connection对象的CreateCommand()方法,上面的一行代码改为如下两行代码: SqlCommand cmd = conn.CreateCommand(); /创建Command对象:cmd cmd.CommandText= sqlstr; /初始化Command对象的SQL字符串,10.4.3 Command对象的属性和方法 1Command对象的属性 Command对象的常用属性及说明,见表10-7。,2Command对象的方法 Command对象的方法统称为Execute方法,常用方法及说明见表10-8。,(1)ExecuteScalar()方法 Command对象的ExecuteScalar()方法的语法格式如下: 命令对象名.ExecuteScalar(); private static void CreateCommand(string queryString,string connectionString) SqlConnection connection = new SqlConnection(connectionString); /创建Connection对象 connection.Open(); /打开connection对象 queryString=SQL字符串; /创建command对象,并初始化SQL字符串 SqlCommand command = new SqlCommand(queryString, connection); command.ExecuteScalar(); /执行Command命令. ,【例10-2】使用SqlCommand对象的ExecuteScalar()方法来返回表中记录的数目(SELECT语句使用COUNT聚合函数返回指定表中的行数的单个值)。 protected void Page_Load(object sender, EventArgs e) string connString = ConfigurationManager.ConnectionStrings“StudentDBConnectionString“.ToString(); Int32 count = 0; /统计得到的学生人数 using (SqlConnection conn = new SqlConnection(connString) /创建Connection对象conn string sqlstr = “SELECT COUNT(*) FROM StudentInfo“; /SQL字符串 /创建Command对象ordersCMD,并初始化SQL字符串 SqlCommand ordersCMD = new SqlCommand(sqlstr, conn); try conn.Open(); count = (Int32)ordersCMD.ExecuteScalar(); /将返回的记录数强制转换成整型 catch (Exception ex) /捕捉错误 Response.Write(ex.Message); /显示出错信息 Response.Write(“学生总数为“ + count.ToString() + “人!“); /显示“学生总数为XX人!” ,(2)ExecuteNonQuery()方法 Command对象的ExecuteNonQuery()方法的语法格式如下: 命令对象名.ExecuteNonQuery(); 以下代码示例执行一个INSERT语句,然后使用ExecuteNonQuery()方法将一个记录插入数据库中。 connection.Open(); /假设连接是一个有效的SqlConnection string queryString = “INSERT INTO StudentInfo“ + “(StudentID, StudentName) Values(200902602030, 白雪)“; SqlCommand command = new SqlCommand(queryString, connection); Int32 recordsAffected = command.ExecuteNonQuery(); /执行方法并保存受影响的记录个数,(3)ExecuteReader()方法 Command对象的ExecuteReader()方法(即创建SqlDataReader对象)的语法格式如下: SqlDataReader数据阅读器对象名 = 命令对象名.ExecuteReader(); 数据阅读器对象名:是创建的DataReader对象的名称。,创建一个SqlCommand对象,然后使用ExecuteReader()方法创建DataReader对象来对数据源进行读取,代码如下: private static void CreateCommand(string queryString,string connectionString) SqlConnection connection = new SqlConnection(connectionString); /创建Connection对象 connection.Open(); /打开Connection对象 queryString=SQL字符串; /创建command对象,并初始化SQL字符串 SqlCommand command = new SqlCommand(queryString, connection); /通过ExecuteReader()方法创建DataReader对象 SqlDataReader reader = command.ExecuteReader(); while (reader.Read() Response.Write(reader0+“ “+reader1+“ “+reader2+“); /显示第1、2、3列 ,10.5 读取数据DataReader对象,创建用于SQL Server的SqlDataReader对象的语法格式如下: SqlDataReader 数据阅读器对象名 = 命令对象名.ExecuteReader(); 或者先创建DataReader对象的实例,然后再调用Command对象的ExecuteReader()方法,并把返回的DataReader对象赋值给DataReader对象的实例,语法格式如下: SqlDataReader 数据阅读器对象名; 数据阅读器对象名 = Command对象名.ExecuteReader(); DataReader对象名:创建的DataReader对象的名称。,10.5.3 DataReader对象的属性和方法 1DataReader对象的属性,2DataReader对象的方法,(1)Read()方法 Read()方法的语法格式如下: 数据阅读器对象名.Read() 返回值:如果存在多个行,则为True;否则为False。,10.5.4 关闭DataReader对象 实例中相应的代码如下: myDataReader.Close(); myConnection.Close();,10.6 数据适配器DataAdapter对象,下面以创建SqlDataAdapter对象为例,介绍使用DataAdapter类的构造函数创建DataAdapter对象的方法,有以下几种。 初始化SqlDataAdapter类的新实例。 SqlDataAdapter数据适配器对象名 = new SqlDataAdapter(); 数据适配器对象名:创建的DataAdapter对象的名称。 将指定的SqlCommand对象作为SelectCommand属性,初始化SqlDataAdapter类的新实例。 SqlDataAdapter数据适配器对象名 = new SqlDataAdapter(SqlCommand对象名或SelectCommand字符串); 用SelectCommand字符串和SqlConnection对象初始化SqlDataAdapter类的新实例。 SqlDataAdapter数据适配器对象名 = new

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论