• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >ASP.NET > 在ASP.NET 2.0中操作数据之七十:配置数据库连接和命令等级设置

在ASP.NET 2.0中操作数据之七十:配置数据库连接和命令等级设置

作者:heker2007 字体:[增加 减小] 来源:互联网 时间:2017-05-11

heker2007通过本文主要向大家介绍了数据库连接 asp.net,数据库asp.net,cmd.net安装asp命令,命令启用asp.net,asp.net等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

导言:

  在本系列我们用类型化的DataSets来构建数据访问层。就像在第一章探讨的那样,类型化DataSets的DataTables用作存储数据的“仓库”,而TableAdapters作为连接数据库的通道,以检索、修改数据.TableAdapters 将处理数据库的很多复杂的细节进行了封装,将我们解脱出来,免去了写代码连接数据库、发出命名、向DataTable填充数据的痛苦.

  不过在某些时候我们需要深入的探究TableAdapter,直接写代码处理ADO.NET对象.在第61章《在事务里对数据库修改进行封装》里我们向TableAdapter添加了多个方法以开启、提交、回滚ADO.NET事务.这些方法都使用内在的、手动创建的SqlTransaction对象来对TableAdapter的SqlCommand对象进行赋值.

  在本文,我们将考察如何访问TableAdapter的“数据库连接”和“数据库命令”级的设置.具体来说,我们将向ProductsTableAdapter添加函数,以访问“连接字符串”(connection string)和“命令过期时间”(command timeout)设置.

用ADO.NET处理数据

  微软.NET Framework包含了很多处理数据的特殊用途的类。这些类用System.Data namespace来进行创建,其中就包括ADO.NET classe类,一些ADO.NET名下的类需要依赖某个特定的data provider才能工作.你可以想象在ADO.NET classes类和某个数据存储(data store)之间,有一个data provider充当连接通道(communication channel)以供传递信息.data provider包括OleDb 、ODBC, 以及其它一些专门设计来连接某种特定数据库系统的data provider.举个例子,我们不能用OleDb来连接一个Microsoft SQL Server数据库.而SqlClient就可以,因为它是经过优化的专门设计来连接SQL Server的.

当编程访问数据时,通常使用下面的模式:

1.新建数据库连接
2.发出命令
3.用SELECT查询来返回记录

  以上3步每步都有单独的ADO.NET classes类来执行.比如连接数据库用SqlConnection class类;要发出INSERT, UPDATE, DELETE,或SELECT命令,用SqlCommand class类.

  除了第61章《在事务里对数据库修改进行封装》外,我们都没有自己写任何ADO.NET代码,因为TableAdapters自动生成的代码包含了一些必要的功能:连接数据库、发出命令、检索数据、填充DataTables.但是有时我们要自己定制这些设置.在接下来的几步我们将探究TableAdapters内部使用的ADO.NET对象.

第一步:考察Connection属性

  每个TableAdapter class类都有一个Connection属性,用于指定数据库连接信息.该属性的数据类型以及ConnectionString的值根据TableAdapter设置向导所做的配置而定.我们还记得,当向类型化的DataSet添加一个TableAdapter时,向导要我们指定数据源(见图1).在下拉列表里列出了web.config文件指定连接的数据库,以及服务器资源管理器的Data Connections里的数据库.如果我们要连接的数据库没有出现在下拉列表里,点“New Connection”按钮,以提供必需的连接信息.

http://files.weikejianghu.com/file_images/article/201605/2016051910520057.png
图1:TableAdapter设置向导的第一步

  我们化点时间来查看TableAdapter的Connection属性的代码,就像在第一章《创建一个数据访问层》里探讨的一样,我们可以在Class View窗口里查看自动生成的TableAdapter代码,转到相应的类,再双击成员名(member name)即可.

  打开“View”菜单,选中“Class View”(或按住Ctrl+Shift+C).在Class View窗口的上半部分里,选中NorthwindTableAdapters命名空间,再选中ProductsTableAdapter class类.这将在下半部分显示出ProductsTableAdapter的成员,如图2所示.双击Connection属性以查看代码。

http://files.weikejianghu.com/file_images/article/201605/2016051910520058.png
图2:双击Connection以查看自动生成的代码

TableAdapter的Connection属性以及其它与连接相关的代码如下:

private System.Data.SqlClient.SqlConnection _connection;

private void InitConnection() {
 this._connection = new System.Data.SqlClient.SqlConnection();
 this._connection.ConnectionString =
 ConfigurationManager.ConnectionStrings["NORTHWNDConnectionString"].ConnectionString;
}

internal System.Data.SqlClient.SqlConnection Connection {
 get {
 if ((this._connection == null)) {
  this.InitConnection();
 }
 return this._connection;
 }
 set {
 this._connection = value;
 if ((this.Adapter.InsertCommand != null)) {
  this.Adapter.InsertCommand.Connection = value;
 }
 if ((this.Adapter.DeleteCommand != null)) {
  this.Adapter.DeleteCommand.Connection = value;
 }
 if ((this.Adapter.UpdateCommand != null)) {
  this.Adapter.UpdateCommand.Connection = value;
 }
 for (int i = 0; (i < this.CommandCollection.Length); i = (i + 1)) {
  if ((this.CommandCollection[i] != null)) {
  ((System.Data.SqlClient.SqlCommand)
   (this.CommandCollection[i])).Connection = value;
  }
 }
 }
}

</div>

  当对TableAdapter class类进行“实例化”(instantiated)时,成员变量_connection的值等同为null.当访问Connection属性时,首先检查是否已经对成员变量_connection实例化,如果没有的话就调用InitConnection方法,该方法对_connection进行实例化,然后用TableAdapter设置向导指定的连接字符串对其赋值.

  同样可以用Connection属性对一个SqlConnection对象赋值,这样的话就可以将这个新的SqlConnection对象与TableAdapter的SqlCommand对象联系起来.

第二步:访问“数据库连接”级的设置

  数据库连接信息封装在TableAdapter内部,很难从应用程序的其它层对其进行访问.然而,在某些时候,某人查询、用户或ASP.NET页面需要对TableAdapter的连接信息进行访问或定制.

  让我们对Northwind数据集的ProductsTableAdapter进行扩展,以包含一个ConnectionString属性,以便于在业务逻辑层对TableAdapter用到的连接字符串进行读取和更改.

  注意:一个连接字符串是这样的一个字符串,它指定了数据库连接信息.比如,提供者provider、数据库的位置、身份验证,以及其它与数据库相关的设置.更多详情请参考网站ConnectionStrings.com

  就像在第一章《创建一个数据访问层》里讨论过的一样,类型化的DataSet自动生成的类可以通过使用部分类(partial classes)来进行扩充.首先,在~/App_Code/DAL文件夹里新建一个名为ConnectionAndCommandSettings的文件夹.

http://files.weikejianghu.com/file_images/article/201605/2016051910520059.png
图3:添加一个名为ConnectionAndCommandSettings的文件夹

在里面添加一个ProductsTableAdapter.ConnectionAndCommandSettings.cs文件,键入如下的代码:

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

namespace NorthwindTableAdapters
{
 public partial class ProductsTableAdapter
 {
 public string ConnectionString
 {
  get
  {
  return this.Connection.ConnectionString;
  }
  set
  {
  this.Connection.ConnectionString = value;
  }
 }
 }
}

</div>

  该局部类为ProductsTableAdapter class类添加了一个public类型的,名为ConnectionString的属性.该属性允许在任何层对TableAdapter用到的连接字符串进行读取和更改.

  当创建并保存该局部类后,打开ProductsBLL class类。打开其中的一个方法,键入Adapter,再输入其范围内的一个关键字以打开智能感知,你应该可以看到这个新添加的的ConnectionString属性出现在智能感知里,这就表明了我们可以在BLL层通过编程来读取或更改其值.

访问整个Connection对象

  该局部类扩展的只是connection对象众多属性中的一个:ConnectionString.如果你想在TableAdapter范围外访问整个connection对象的话,你可以改变Connection属性的保护等级.就像我们在第一步考察的那样,TableAdapter的Connection属性标明为internal,这就是说,只有在同级的类里才可以对其进行访问.不过我们可以通过TableAdapter的 ConnectionModifier属性来改变其访问范围.

  打开Nort

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • ASP.NET数据库操作类实例
  • ASP.NET保存PDF、Word和Excel文件到数据库
  • ASP.NET数据库存取图片的方法
  • ASP.NET中各种连接数据库的配置的方法及json数据转换
  • ASP.net与SQLite数据库通过js和ashx交互(连接和操作)
  • asp.net 获取数据库连接字符串
  • 在ASP.NET 2.0中操作数据之七十:配置数据库连接和命令等级设置
  • 在ASP.NET 2.0中操作数据之六十一:在事务里对数据库修改进行封装
  • asp.net实现Gradview绑定数据库数据并导出Excel的方法
  • ASP.NET连接数据库并获取数据方法总结

相关文章

  • 2017-05-11asp.net后台动态添加JS文件和css文件的引用实现方法
  • 2017-05-11解读ASP.NET 5 & MVC6系列教程(13):TagHelper
  • 2017-05-11.NET基础之自定义泛型分析
  • 2017-05-11ASP.NET实现二维码(QRCode)的创建和读取实例
  • 2018-08-20ASP.NET Core环境变量和启动设置的配置教程
  • 2017-05-11IP地址与整数之间的转换实现代码(asp.net)
  • 2017-05-11asp.net学习中发现的比较完整的流程
  • 2017-05-11ASP.NET2.0数据库入门之SqlDataSource
  • 2018-08-20MVC+EasyUI+三层新闻网站建立 主页布局的方法(五)
  • 2017-05-11asp.net调用系统设置字体文本框的方法

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • .Net core下直接执行SQL语句并生成DataTable的实现方法
    • asp.net jQuery Ajax用户登录功能的实现
    • 在.ashx文件中获取cookies值实现代码
    • asp.net中Fine Uploader文件上传组件使用介绍
    • asp.net中Timer无刷新定时器的实现方法
    • NopCommerce架构分析之(五)Model绑定Action参数
    • .NET framework 4.0 安装失败回滚问题
    • ASP.NET AJAX 1.0 RC开发10分钟图解
    • Visual Studio 2017通过SSH调试Linux上.NET Core
    • asp.net 中将表单提交到另一页 Code-Behind(代码和html在不同的页面)

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有