当前位置:文档之家› 数据库访问

数据库访问

第10章https://www.doczj.com/doc/6916649213.html,和https://www.doczj.com/doc/6916649213.html,数据库开发技术

本章主要介绍https://www.doczj.com/doc/6916649213.html,和https://www.doczj.com/doc/6916649213.html,基础知识,https://www.doczj.com/doc/6916649213.html,连接数据库方法,https://www.doczj.com/doc/6916649213.html,读取和操作数据库数据等基于.NET数据库开发技术。并以https://www.doczj.com/doc/6916649213.html, 2005作为开发平台,结合实例介绍DataSet、GridNew、DataList等常用数据服务控件。

10.1 https://www.doczj.com/doc/6916649213.html,基础知识

https://www.doczj.com/doc/6916649213.html,是Microsoft公司推出的用于编写动态网页的一项功能强大的新技术,是Microsoft公司的动态服务器页面(ASP)和.NET技术的集合。它与以前的网页开发技术相比有了很大的进步。

Visual https://www.doczj.com/doc/6916649213.html, 是一套完整的开发工具,用于生成ASP Web应用程序、XML Web services、桌面应用程序和移动应用程序。Visual https://www.doczj.com/doc/6916649213.html,、V isual C++.NET、VisualC# .NET和V isual J#.NET全都使用相同的集成开发环境(IDE),该环境允许它们共享工具并有助于创建混合语言解决方案。另外,这些语言利用了.NET Framework的功能,此框架提供对简化ASP Web应用程序和XML Web Services开发的关键技术的访问。

10.1.1Visual Studio .NET 的特色

Visual J#、智能设备应用程序、https://www.doczj.com/doc/6916649213.html,移动设计器、Windows窗体、XML Web Services以及XML支持是Visual https://www.doczj.com/doc/6916649213.html,的一些新工具和新技术。

(1)Visual J#

Visual J#是一种开发工具,供熟悉Java语言语法的开发人员在.NET Framework上生成应用程序和服务时使用。该工具将Java语言语法集成到Visual https://www.doczj.com/doc/6916649213.html,集成开发环境(IDE)中。Visual J#还支持V isual J++ 6.0中具有的大多数功能,包括Microsoft 扩展。Visual J# 是一种用于开发在Java虚拟机上运行的应用程序的工具。使用V isual J# 生成的应用程序和服务只在.NET Framework上运行。

(2)智能设备应用程序

Visual https://www.doczj.com/doc/6916649213.html,集成开发环境现在包括开发智能设备(如Pocket PC)应用程序的工具。通过使用这些工具和.NET Framework精简版,您可以在个人数字助理(PDA)、移动电话和其他资源受约束的设备中,创建、生成、调试和部署在.NET Framework精简版上运行的应用程序。

(3)https://www.doczj.com/doc/6916649213.html,移动设计器

https://www.doczj.com/doc/6916649213.html,移动设计器扩展了https://www.doczj.com/doc/6916649213.html,和.NET Framework,可用来生成移动电话、个人数字助理(PDA)和寻呼机的Web应用程序。此设计器集成在Visual Studio IDE中。您可以创建移动Web 应用程序,使用移动设计器修改移动Web窗体,然后生成和运行该应用程序,所有这些操作都是在Visual Studio中完成的。

(4)Web窗体

Web窗体是用于创建可编程Web页的https://www.doczj.com/doc/6916649213.html,技术。Web窗体将自己呈现为浏览器兼容的HTML和脚本,这使任何平台上的任何浏览器都可以查看Web页。使用Web 窗体,通过将控件拖放到设计器上然后添加代码来创建Web页,与创建V isual Basic窗体的方法相似。

(5)Windows窗体

Windows窗体是用于Microsoft Windows应用程序开发的、基于.NET Framework的新平台。此框架提供一个有条理的、面向对象的、可扩展的类集,使您能够开发功能丰

富的Windows应用程序。另外,Windows窗体可作为多层分布式解决方案中的本地用户界面。

(6)XML Web Services

XML Web Services是可以通过HTTP使用XML接收请求和数据的应用程序。XML Web Services不受特定组件技术或对象调用约定的制约,因此可由任何语言、组件模型或操作系统访问。在Visual https://www.doczj.com/doc/6916649213.html,中,可以使用Visual Basic、V isual C#、JScript、C++的托管扩展或A TL Server快速创建和包含XML Web Services。

(7)XML支持

可扩展标记语言(XML)提供描述结构数据的方法。XML是SGML的子集,非常适合在Web上传送。万维网联合会(W3C)定义了XML标准以使结构化数据保持统一并独立于应用程序。Visual https://www.doczj.com/doc/6916649213.html,完全支持XML,提供了XML设计器以使编辑XML和创建XML架构更容易。

10.1.2 .NET Framework

.NET Framework是用于生成、部署和运行XML Web Services和应用程序的多语言环境。它由三个主要部分组成:

1.公共语言运行库

运行库实际上在组件的运行时和开发时都起到很大的作用。在组件运行时,运行库除了负责满足此组件在其他组件上可能具有的依赖项外,还负责管理内存分配、启动和停止线程和进程,以及强制执行安全策略。在开发时,运行库的作用稍有变化;由于做了大量的自动处理工作(如内存管理),运行库使开发人员的操作非常简单,尤其是与今天的COM相比。特别是反射等功能显著减少了开发人员为将业务逻辑转变为可重用组件而必须编写的代码量。

2.统一编程类

该框架为开发人员提供了统一的、面向对象的、分层的和可扩展的类库集(API)。目前,C++开发人员使用Microsoft基础类,而Java开发人员使用Windows基础类。框架统一了这些完全不同的模型并且为Visual Basic和JScript程序员同样提供了对类库的访问。通过创建跨所有编程语言的公共API集,公共语言运行库使得跨语言继承、错误处理和调试成为可能。从JScript到C++的所有编程语言具有对框架的相似访问,开发人员可以自由选择它们要使用的语言。

3.https://www.doczj.com/doc/6916649213.html,

https://www.doczj.com/doc/6916649213.html,是建立在.NET Framework的编程类之上,它提供了一个Web应用程序模型,并且包含使生成ASP Web应用程序变得简单的控件集和结构。https://www.doczj.com/doc/6916649213.html,包含封装公共HTML用户界面元素(如文本框和下拉菜单)的控件集。但这些控件在Web服务器上运行,并以HTML的形式将它们的用户界面推送到浏览器。在服务器上,这些控件公开一个面向对象的编程模型,为Web开发人员提供了面向对象的编程丰富性。https://www.doczj.com/doc/6916649213.html,还提供结构服务(如会话状态管理和进程回收),进一步减少了开发人员必须编写的代码量并提高了应用程序的可靠性。另外,https://www.doczj.com/doc/6916649213.html,使用这些同样的概念使开发人员能够以服务的形式交付软件。使用XML Web Services功能,https://www.doczj.com/doc/6916649213.html,开发人员可以编写自己的业务逻辑并使用https://www.doczj.com/doc/6916649213.html,结构通过SOAP交付该服务。

.NET Framework旨在实现下列目标:

(1)提供一个一致的面向对象的编程环境,而无论对象代码是在本地存储和执行,还是在本地执行但在Internet上分布,或者是在远程执行的。

(2)提供一个将软件部署和版本控制冲突最小化的代码执行环境。

(3)提供一个保证代码(包括由未知的或不完全受信任的第三方创建的代码)安全执行的代码执行环境。

(4)提供一个可消除脚本环境或解释环境的性能问题的代码执行环境。

使开发人员的经验在面对类型大不相同的应用程序(如基于Windows的应用程序和基于Web的应用程序)时保持一致。

按照工业标准生成所有通信,以确保基于.NET Framework的代码可与任何其他代码集成。

10.1.3 https://www.doczj.com/doc/6916649213.html,开发环境介绍

https://www.doczj.com/doc/6916649213.html,与Visual https://www.doczj.com/doc/6916649213.html,良好地集成,可以使开发效率快速高效。V isual https://www.doczj.com/doc/6916649213.html,是开发https://www.doczj.com/doc/6916649213.html,最理想的工具,适合开发大型应用程序。另外https://www.doczj.com/doc/6916649213.html, Web Matrix,也是Microsoft公司专门为开发https://www.doczj.com/doc/6916649213.html,应用程序而开发的辅助设计工具。

10.2 https://www.doczj.com/doc/6916649213.html,介绍

https://www.doczj.com/doc/6916649213.html,是由Microsoft ActiveX Data Objects(ADO)改进而来,它提供平台互用和可收缩的数据访问功能。https://www.doczj.com/doc/6916649213.html,使用户可以同关系数据库和其他数据源进行交互。简单来讲,https://www.doczj.com/doc/6916649213.html,是https://www.doczj.com/doc/6916649213.html,应用程序用来与数据库进行通信的技术。这种通信通常可以包括添加新的顾客记录或者显示产品目录等。

同ADO相比,https://www.doczj.com/doc/6916649213.html,是更好的数据访问解决方案。

https://www.doczj.com/doc/6916649213.html,允许在数据集中包含多个表,并包含这些表之间的关系;ADO只允许包含一个表。

https://www.doczj.com/doc/6916649213.html,提供断开连接数据访问。https://www.doczj.com/doc/6916649213.html,提供了一个记录导航范例,允许进行无序的数据访问,并可以利用数据和表之间的关系访问各个数据表。https://www.doczj.com/doc/6916649213.html,使用XML 传送数据,能够提供比ADO更丰富的数据类型,获得更好的数据访问性能。

10.2.1 https://www.doczj.com/doc/6916649213.html,与数据管理简介

几乎所有的软件都要处理数据。事实上,一个典型的Internet应用程序常常只是位于某个复杂数据库程序上面的用户接口命令解释程序,其中的数据库程序可以对Web 服务器上数据库中的数据进行读写操作。一个最简单的数据库程序可以使用户进行简单的查询并将查询结果显示在格式化的表格中。更为复杂一些的https://www.doczj.com/doc/6916649213.html,应用程序可以利用一个后台数据库检索信息,然后对这些信息进行处理并以适当的格式和位置在浏览器中显示出来。

在大多数https://www.doczj.com/doc/6916649213.html,应用程序中,需要利用一个数据库完成多项任务。下面列举的例子是一些数据驱动的https://www.doczj.com/doc/6916649213.html,应用程序:

(1)电子商务网站涉及管理销售、顾客和库存信息。这些信息可以直接显示在屏幕上,或者以一种不明显的方式记录交易或顾客信息。

(2)联机知识库和定制的搜索引擎涉及许多连到不同文档和资源的链接。

基于信息的站点(例如Web用户网站)不能被轻易升级或管理,除非它们使用的所有信息以某种严格定义的、一致的格式存储。这样的站点通常与另一个https://www.doczj.com/doc/6916649213.html,程序相匹配,该程序使某个经过授权的用户可以通过某个浏览器接口修改相应的数据库记录,从而添加或更新显示的信息。

10.2.2 https://www.doczj.com/doc/6916649213.html,命名空间

在ASP.ENT文件中通过https://www.doczj.com/doc/6916649213.html,访问数据需要引入几个命名空间,https://www.doczj.com/doc/6916649213.html,命名空间如表10.1所示。

表10.1 https://www.doczj.com/doc/6916649213.html,命名空间

https://www.doczj.com/doc/6916649213.html,命名空间说明

System.Data 提供https://www.doczj.com/doc/6916649213.html,构架的基类

System.Data.OleDB 针对OLEDB数据源所设计的数据存取类

System.Data.SqlClient 针对Microsoft SQL Server 数据源所设计的数据存取类

10.3 连接数据库

本节主要介绍https://www.doczj.com/doc/6916649213.html,如何连接到Microsoft SQL Server、Microsoft Access 数据库。

10.3.1 连接Microsoft SQL Server 数据库

数据访问时,首先要建立到数据库的物理连接。https://www.doczj.com/doc/6916649213.html,使用Connection对象标识与一个数据的物理连接,但实际https://www.doczj.com/doc/6916649213.html,中并设有一个名字为Connection的类用来创建Connection对象。每个数据提供程序都包含自己特有的Connection对象。当使用SQL https://www.doczj.com/doc/6916649213.html,数据提供程序时,应该使用位于System.Data.SqlClient命名空间下的SqlConnection类对象,而使用https://www.doczj.com/doc/6916649213.html,数据提供程序时,则使用System.Data.OleDB 命名空间下OleDbConnection类对象。

1.SqlConnection类

为了连接SQL Server,必须实例化SqlConnection对象,并调用此对象的Open()方法。当不再需要连接时,应该调用这个对象的Close()方法关闭连接。可以通过下面两种方法连接实例化。

SqlConnection conn=new SqlConnection();

Conn.ConnectionString=ConnectionString;

Conn.Open();

Conn.Close();

或者:

SqlConnection conn=new SqlConnection(ConnectionString);

Conn.Open();

Conn.Close();

SqlConnection常用属性和方法分别如表10.2、10.3所示。

表10.2 SqlConnection常用属性

属性说明

ConnectionString 用于指定连接字符串

CooectionTimeout 用于指定连接超时。单位为秒,默认值为15秒

Database 用于指定连接的数据库

DataSource 用于指定连接的数据源

Password 用于指定登录到SQL Server服务器的密码

ServerV ersion 用于获取SQL Server服务器的版本信息

UserID 用于指定登录到SQL Server 服务器的用户名

表10.3 SqlConnection的常用方法

方法说明

Open 打开连接

Close 关闭打开的连接

Dispose 消除连接的对象

Clone 克隆一个连接

通过上面介绍的SqlConnection的属性和方法,可以创建连接学生成绩数据库的代码如下:

Using System.Data.SqlClient;

SqlConection conn=new SqlConnection();

conn.ConnectionString=”server=localhost;uid=sa;pwd=sa;database=studb”;

conn.Open();

//添加访问、操作数据库的事件;

conn.Close();

2.连接SQL Server的数据访问实例

例10.1编写一个应用程序来连接数据库名studb的SQL Server数据库,并根据连接结果输出一些信息。

步骤如下:

(1)运行“开始|Microsoft V isual Studio 2005|Microsoft V isual Studio 2005”,在出现的“选择默认环境设置”中选择“Visual C#开发设置”选项,点击下方的“启动Visual Studio”命令按钮,进入“Microsoft V isual Studio”起始页。如图10.1所示。

(2)从图10.1“Microsoft V isual Studio”起始页的左上侧“最近的项目”列表中点击“创建”中的“网站”选项,进行“新建网站”对话框。在“新建网站”对话框中“模板”列表表点取“https://www.doczj.com/doc/6916649213.html,网站”,在“位置”后面的组合框中输入,新建网站的路径名,例如为sample_10.1,如图10.2所示。

图10.1“Microsoft V isual Studio”起始页

图10.2新建https://www.doczj.com/doc/6916649213.html,网站

(3)在打开Default.aspx的设计页面,从工具箱中拖出一个Label和一个Button控件到设计界面,可以右击控件的快速菜单,从中选择“样式”菜单项,从出现“样式生成器”列表中选取“位置”选项,在“位置模式”组合框中选取“绝对位置”,即可对控制的位置进行任意拖放,同时可对其它样式进行设置。也快速菜单中选择“属性”菜单项,在“属性”对话框中可以对控件属性进行设置,例如将Button1控件的Text属性修改为“连接数据库”。如图10.3所示。

图10.3事例sample_10.1的设计界面

(4)双击空白页面切换到后台编码文件Default.aspx.cs,添加如下命名空间:using System.Data.SqlClient;

(5)双击Button控件切换到后台编码文件Default.aspx.cs,系统自动添加了与该按钮的Click事件相关处理程序Button1_Click。在事件处理程序Button1_Click中添加如下代码:

try

{

SqlConnection coon = new SqlConnection();

coon.ConnectionString = "server=localhost;uid=sa;pwd=sa;database= studb";

//SQL Server 和Windows混合模式

//coon.ConnectionString = "server=localhost;database= studb;Integrated Security=SSPI";

//仅Windows身份验证模式

coon.Open();

Label1.Text = "连接成功";

}

catch

{

Label1.Text = "连接失败";

}

注:如果是SQL Server 和Windows混合模式这里的server是SQL Server服务器名,uid、pwd、database分别为SQL Server用户名、密码、数据库名。

如果是仅Windows身份验证模式,则不用写uid、pwd,而是用Integrated Security=SSPI连接字符串代替用户名和密码。

(6)Ctrl+F5运行,在运行的页面中点击“连接数据库”命令按钮,如果连接成功,则显示label标签显示“连接成功”;如果连接不成功,则显示“连接失败”。运行结果如图10.4所示。

图10.4事例sample_10.1运行结果

10.3.2连接到Microsoft Access数据库

OLE https://www.doczj.com/doc/6916649213.html,数据提供程序设计为连接实用OLE DB提供者的数据库。如,目前在网络上很流行的小型数据库Access,就应该使用OLE https://www.doczj.com/doc/6916649213.html,数据提供程序来访问。OLE https://www.doczj.com/doc/6916649213.html,数据提供程序在System.Data.OleDb命名空间中定义,也包含在System.Data.Dll文件中。

OleDbConnection也定义了两个构造函数,一个没有参数,一个接受字符串。使用OLE https://www.doczj.com/doc/6916649213.html,数据提供程序时需要指定底层数据库特有的OLE DB Provider,如,连接到Access数据库库的连接字符串格式为:

Provider=Microsoft.Jet.OLEDB.4.0;Data Source=mydb.mdb;user Id=;password=;

其中,Provider和Data Source是必须项。

下面是连接到Access数据库的例子

String ConnectionString;

OleDbConnection Connection=new OleDbConnection();

ConnectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=";

ConnectionString+=Server.MapPath("studb.mdb");

Connection.ConnectionString=ConnectionString;

10.4读取和操作数据

https://www.doczj.com/doc/6916649213.html,中的Command类,即SqlCommand和OleDBCommand,可以通过数据读取器读取只读数据,执行Insert、Update、Delete以及其他不返回值的语句,返回聚合结果,或者检索数据的XML表示。SqlCommand和OleDbCommand也可以同数据读取器一起工作、用数据填充数据集、或者用数据集里已更新一个后台数据库。SqlCommand 和OleDbCommand类可与SQL语句或者存储过程一起工作。下面主要介绍一下作使用SqlCommand类的常用方法。

Command的常用属性如表10.4所示。

表10.4 Command的常用属性

属性说明

CommandText 获取或设置要对数据源执行的Transact-SQL语句或存储过程

CommandTimeout 获取或设置在终止执行命令的尝试并生成错误之前的等待时间CommandType 获取或设置一个值,该值指示如何解释CommandText属性

Connection 数据命令对象所使用的连接对象

Parameters 参数集合(OleDbParameterCollection或SqlParameterCollection)

其中CommandText属性存储的字符数据依赖于CommandType属性的类型。例如当CommandType属性设置为StoreProcedure时,表示CommandText属性的值为存储过程的名称;而当CommandType属性设置为TableDirect时,CommandText属性应设置为要访问的一个或者多个表的名称;如果CommandType设置为Text,CommandText则为SQL 语句。CommandType默认为Text。如表10.5所示,列举了CommandType的所有值。

表10.5 CommandType枚举

成员名称说明

StoredProcedure 存储过程的名称

TableDirect 表的名称

Text SQL文本命令(默认)

下面介绍SqlCommand类。首先创建一个Command对象,Command的构造函数可以分为4种,部分构造函数可以直接初始化这些属性值。

(1)构造函数不带任何参数

Sqlcommand cmd=new Sqlcommand();

cmd.Connection=ConnectionObject;

https://www.doczj.com/doc/6916649213.html,mandText=”select * from S”;

CommandText可以是从数据库检索数据的SQL Select语句:

String CommandText=”select * from S”;

许多关系型数据库,如SQL Server 和Oracle,都支持存储过程。可以把存储过程的名称指定为命名文件。例如,

String CommandText=”GetAllStudent”;

https://www.doczj.com/doc/6916649213.html,mandType=CommandType.StoredProcedure;

(2)构造函数可以接受一个命令文本

SqlCommand cmd=new SqlCommand(CommandText);

cmd.Connection=ConnectionObject;

上面代码实例化Command对象,并传递CommadnText,对Command对象的CommandText属性初始化。然后对Connection属性赋值。

构造函数接受一个Connection对象和一个命名文本。

SqlCommand cmd=new SqlCommand(CommandText,ConnectionObject);

其中,第一个参数为string型的命令文本,第二个为Connection对象。

构造函数接受三个参数,第三个参数是SqlTransaction对象,这里不作讨论。

SqlCommand提供了4个执行方法。

1)ExecuteNonQuery:执行不返回结果的命令。通常使用这个方法执行插入、更新或者删除操作。

2)ExecuteScalar:执行返回单个值的命令。

3)ExecuteReader:执行命令,并使用结果集填充DataReader对象。

4)ExecuteXMLReader:该方法执行返回XML字符串的命令。它将返回一个包含所返回的XML的System.Xml.XmlReader对象。这是SqlCommand特有的方法,OleDbCommand无此方法。

下面详细讲解下ExecuteNonQuery方法和ExecuteScalar方法。

1.ExecuterNonQuery方法

ExecuteNonQuery方法主要用来更新数据。通常使用它来执行Update、Insert和Delete 语句。该方法返回值含义如下,对于Update、Insert和Delete语句,返回值为该命令所影响的行数。对于所有其他类型的语句,返回值为-1。

Command对象通过ExecuteNonQuery方法更新数据库的过程非常简单,需要进行的步骤如下:

1)创建数据库连接。

2)创建Command对象,并指定一个Insert、Update、Delete查询或存储过程SQL 语句。

3)把Command对象依附到数据库连接上。

4)调用ExecuteNonQuery方法。

5)关闭连接。

可以使用EcecuteNonQuery方法向数据表中插入、删除、更新记录。例如,在表S 里插入一条记录,SNO='S12',SNAME='李四',代码如下:

string createdb = "use studb INSERT INTO S(SNO,SNAME) V ALUES('S12','李四');";

string ConnectionString = "server=localhost;uid=sa;pwd=sa";//SQL Server 和Windows混合模式

//string ConnectionString = "server=localhost;Integrated Security=SSPI";//仅Windows 身份验证模式

SqlConnection conn=new SqlConnection();

conn.ConnectionString=ConnectionString;

SqlCommand cmd=new SqlCommand(createdb,conn);

conn.Open();

int RecordsAffected = cmd.ExecuteNonQuery();

conn.Close();

2.ExecuteScalar方法

ExecuteScalar方法执行返回单个值的命令。下面通过一个事例来演示ExecuteScalar 方法。

例10.2用ExecuteScalar方法获取studb数据库S表中学生的总人数。

(1)新建一个名为sample_10.2的https://www.doczj.com/doc/6916649213.html,网站。

(2)打开default.aspx的设计页面,从工具箱中拖出2个Label和1个Button控件到设计界面,设置这些控件的ID、Text属性。如图10.5所示。

图10.5事例sample_10.2的设计界面

(3)双击空白页面切换到后台编码文件Default.aspx.cs,添加如下命名空间:using System.Data.SqlClient;

(4)在事件处理程序Button1_Click中添加如下代码:

try

{

string createdb = "use studb Select count(*)From S;";

string ConnectionString = "server=localhost;uid=sa;pwd=sa";//SQL Server 和Windows混合模式

//tring ConnectionString = "server=localhost;Integrated Security=SSPI";//仅Windows身份验证模式

SqlConnection conn = new SqlConnection();

conn.ConnectionString = ConnectionString;

SqlCommand cmd = new SqlCommand(createdb, conn);

conn.Open();

string number = cmd.ExecuteScalar().ToString();

conn.Close();

Label2.Text = number;

}

catch

{

Label2.Text = "查询失败";

}

(5)Ctrl+F5运行,在运行的页面中点击“查询”命令按钮,如果查询成功,则显示“学生数目5”;如果连接不成功,显示“查询失败”,运行结果如图10.6所示。

图10.6事例sample_10.2运行结果

10.5 数据集(DataSet)

数据集即DataSet类。DataReader类和DataSet类是https://www.doczj.com/doc/6916649213.html,处理数据的两种主要方法。DataSet类为数据提供了一种与数据无关的内存驻留表示形式。这些数据通过合

适的DataAdapter来显示和更新后台数据库。DataSet类也可以从XML文件和Stream对象中读取。

通过在数据集中插入、修改、删除DataTable、DataColumns和DataRows,可以实现编程构建和操作数据集。也可以用这样的数据集更新后台数据库,只要使用数据集中的Update方法即可。

类型化数据集使代码易于阅读,并且不易出错。也可以用一个DataView来过滤用于显示或者计算的数据集的内容。

10.5.1 使用DataAdapter类

DataAdapter类即数据适配器,它是将后台数据库的数据写入数据集,并用数据集中的数据更新数据库。.NET框架安装了两个数据适配器:SqlDataAdapter和OleDBDataAdapter。每个DataAdapter都使用适当的Connection类和Command类获取和更新数据。

DataAdapter包含由4个Command类的实例组成的一个集合:SelectCommand、InsertCommand、UpdateCommand和DeleteCommand。当使用SqlDataAdapter时,这4个类为SqlCommand类;当使用OleDBCommand时,这4个类为OleDBCommand类。

SqlDataAdapter类和OleDBDataAdapter类的Fill方法使用的对象Command,由DataAdapter的SelectCommand属性指定,数据集用后台数据库的结果填充。

下面的代码创建一个连接,然后创建一个新的SqlDataAdapter,并把它的SelectCommand属性设置为新创建的SqlCommand对象,这个对象使用由SQL参数指定的查询。最后,代码创建了一个新数据集,并用SqlDataAdapter的Fill方法填充它,然后关闭这个连接。

string SQL = "use studb Select count(*)From S;";

string ConnStr = "server=localhost;uid=sa;pwd=sa";

SqlConnection mySqlConn = new SqlConnection(ConnStr);

mySqlConn.Open();

SqlDataAdapter mySqlAdapter = new SqlDataAdapter();

mySqlAdapter.SelectCommand = new SqlCommand(SQL, mySqlConn);

DataSet myDS = new DataSet();

mySqlAdapter.Fill(myDS);

mySqlConn.Close();

这样,数据集里的数据就可以被更新、删除、插入。

10.5.2 使用DataT ables、DataColumns和DataRows

填充数据集的另外一种方法就是编程创建它的表、列或行。这样不必连接一个后台数据库就可以创建数据集。假设创建的表的构架与数据库匹配,就可以连接数据库并根据程序添加到数据集中的行来更新数据库。

例10.3 在数据库studb的S表中插入一条新记录。

这里使用SqlCommandBuilder对象来自动创建UpdataCommand(当SqlAdapter的Update方法被调用时,这个命令就被调用)。

(1)新建一个名为sample_10.3的https://www.doczj.com/doc/6916649213.html,网站。打开default.aspx的设计页面,从工具箱中拖出5个Label1、5个TextBox、1个Button控件和1个GridView控件到设计界面,设置这些的ID、Text属性。如图10.7所示。

图10.7事例sample_10.3的设计界面

(2)双击空白页面切换到后台编码文件Default.aspx.cs,添加如下命名空间:using System.Data.SqlClient;

(3)在事件处理程序Button1_Click()中添加如下代码:

protected void Button1_Click(object sender, EventArgs e)

{

string SQL = "use studb select * from S";

string myStr = "server=localhost;database=studb;uid=sa;pwd=sa";//SQL Server 和Windows混合模式

//string myStr = "server=localhost;Integrated Security=SSPI";//仅Windows身份验证模式

SqlConnection myConnection = new SqlConnection(myStr);

myConnection.Open();

SqlDataAdapter mySqlDA = new SqlDataAdapter(SQL, myConnection);

SqlCommandBuilder mySqlCB = new SqlCommandBuilder(mySqlDA);

DataSet myDS = new DataSet();

DataTable STable;

DataRow SRow;

mySqlDA.Fill(myDS);

STable = myDS.Tables[0];

SRow = STable.NewRow();

SRow["SNO"] = TextBox1.Text;

SRow["SNAME"] = TextBox2.Text;

SRow["AGE"] = TextBox3.Text;

SRow["SEX"] = TextBox4.Text;

SRow["DNAME"] = TextBox5.Text;

STable.Rows.Add(SRow);

mySqlDA.Update(myDS);

GridV iew1.DataSource = myDS.Tables[0].DefaultV iew;

GridV iew1.DataBind();

myConnection.Close();

}(4)Ctrl+F5运行,在运行的页面中点击“添加”命令按钮,则将插入的新记录添加到数据表S中,并在右侧的GridView1控件中显示表S信息。运行结果如图10.8所示。

图10.8事例sample_10.3运行结果

10.6 DataReader类

如果需要对数据的更新、返回以及读写构架等有严格的控制,则数据集是最佳的选择,但如果只需要迅速有效地显示某一些数据,使用DataReader比较方便。

DataReader对象提供一个只读的、单向向前移动的记录集。使用DataReader对象可以有效地节约内存,因为内存中一次只会保存一条记录,而不是将所有的记录都装入。DataReader分为SqlDataReader和OleDBReader两种,它们分别基于SQLServer数据库和OLEDB数据库。

DataReader对象的常用属性和方法如表10.6和10.7所示。

表10.6DataReader对象的属性

属性说明

FieldCount用于表明当前记录的字段(列)数量。只读属性

HasMoreRows 用于表明是否还有记录未被读取。只读属性

IsClosed 用于表明DataReader对象是否已经关闭。只读属性

Item 用于引用字段的内容,可以用字段名或字段序数来引用字段。只读属性

表10.7DataReader对象的方法

方法说明

Close 用于关闭DataReader对象

GetDataTypeName 用于获取字段的数据类型名

GetName用于获取字段名

GetOrdinal 用于获取字段序数

GetV alues 用于读取记录的所有字段的内容

IsNull 用于判断某个字段内容是否为空

Read用于表明是否还有记录能被读取,如果有,则读取下一条记录

例10.4使用DataReader读取数据库studb的S表中的数据。

步骤:

(1)新建一个名为sample_10.4的https://www.doczj.com/doc/6916649213.html,网站,打开Default.aspx的设计页面,从工具箱中拖出GridView控件到设计界面,如图10.9所示。

图10.9事例sample_10.4的设计界面

(2)双击空白页面切换到后台编码文件Default.aspx.cs,添加如下命名空间:using System.Data.SqlClient;

(3)在事件处理程序Page_Load()里添加如下代码:

string SQL = "use studb select * from S";

string myStr =

"server=localhost;database=studb;uid=sa;pwd=sa";//SQL Server 和Windows混合模式

//string myStr = "server=localhost;Integrated Security=SSPI";//仅Windows身份验证模式

SqlConnection myConnection = new SqlConnection(myStr);

myConnection.Open();

SqlCommand mySqlDA = new SqlCommand(SQL, myConnection);

SqlDataReader myDataReader = mySqlDA.ExecuteReader();

GridView1.DataSource = myDataReader;

GridView1.DataBind();

myConnection.Close();

(4)Ctrl+F5运行,则在GridView控件中显示表S中的数据。如图10.10所示。

图10.10事例sample_10.4运行结果

10.7 DataGrid和GridView控件

DataGrid控件是https://www.doczj.com/doc/6916649213.html,中功能强大也是最复杂的数据服务控件。可以用来显示和格式化数据表中的数据,并可以编辑数据表中的记录,可以实现数据的排序和分页。

GridView 控件是DataGrid 控件的后继控件。DataGrid和GridView 控件都是从

WebControl类派生的。虽然GridView控件与DataGrid控件具有类似的对象模型。与

DataGrid控件相似,GridView控件旨在HTML表中显示数据。但与DataGrid控件相比,GridView控件还具有许多新功能和优势,包括更丰富的设计时功能;改进的数据源绑定

功能;排序、分页、更新和删除的自动处理;其他列类型和设计时列操作;具有

PagerTemplate 属性的自定义页导航用户界面(UI)等。下面对GridView控件进行一些

简单的介绍。

首先介绍GridView分页显示时用到的一些属性,如表10.8 所示。

表10.8 GridView分页显示属性

属性说明

AllowPaging 表明是否允许对DataGrid控件进行页面导航。默认值为False

PageSize 获取或指定在一页上显示的记录数据量。默认值为10

PagerStyle 指定页面导航标志的风格

PagerSettings-Mode 指定页面导航标志使用的模式。可取值为NextPrev和NumericPages。默认为NextPrev PagerSettings-NextPageText 指定页面导航到下一页的按钮使用的文本

PagerSettings-PrevPageText指定页面导航到上一页的按钮使用的文本

PagerSettings-V isible 指定页面导航标志是否可见。默认值为True

例10.5 使用GridView将数据库studb中SC表分页显示。

步骤:

(1)新建一个名为sample_10.5的https://www.doczj.com/doc/6916649213.html,网站,打开Default.aspx的设计页面,从工具箱中拖出GridView控件到设计界面,将GridView1控件的AllowPaging属性值设置为True,将事件PageIndexChanging的方法设置为GridV iew1_PageIndexChanging值。如图10.11所示。

图10.11事例sample_10.5的设计界面

(2)双击空白页面切换到后台编码文件Default.aspx.cs,添加如下命名空间:using System.Data.SqlClient;

(3)在Page_Load()事件前添加一个自定义函数BindData()代码如下:

void BindData()

{

string myStr = "server=localhost;database=studb;uid=sa;pwd=sa";//SQL Server 和Windows混合模式

//string myStr = "server=localhost;Integrated Security=SSPI";//仅Windows身份验证模式

string SQL = "use studb select * from SC";

SqlConnection myConnection = new SqlConnection(myStr);

SqlDataAdapter myDataAdapter = new SqlDataAdapter(SQL, myConnection);

DataSet myDataSet = new DataSet();

myDataAdapter.Fill(myDataSet, "sc");

GridView1.DataSource = myDataSet;

GridView1.DataBind();

}

(4)在事件处理程序Page_Load()里添加如下代码:

if (!IsPostBack)

{

BindData();

}

(5)选择事件GridView1_PageIndexChanging(),并添加如下代码:

GridView1.PageIndex = e.NewPageIndex;

BindData();

事例sample_10.5的主要代码如下:

void BindData()

{

//string myStr = "server=localhost;database=studb;uid=sa;pwd=sa";//SQL Server 和Windows混合模式

string myStr = "server=localhost;Integrated Security=SSPI";//仅Windows身份验证模式

string SQL = "use studb select * from SC";

SqlConnection myConnection = new SqlConnection(myStr);

SqlDataAdapter myDataAdapter = new SqlDataAdapter(SQL, myConnection);

DataSet myDataSet = new DataSet();

myDataAdapter.Fill(myDataSet, "sc");

GridView1.DataSource = myDataSet;

GridView1.DataBind();

}

protected void Page_Load(object sender, EventArgs e)

{

if (!IsPostBack)

{

BindData();

}

}

protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)

{

GridView1.PageIndex = e.NewPageIndex;

BindData();

}

(6)Ctrl+F5运行,则在GridView1控件中分页显示表SC中的数据。如图10.12所示。

数据库实时同步技术解决方案

数据库实时同步技术解决方案 一、前言 随着企业的不断发展,企业信息化的不断深入,企业内部存在着各种各样的异构软、硬件平台,形成了分布式异构数据源。当企业各应用系统间需要进行数据交流时,其效率及准确性、及时性必然受到影响。为了便于信息资源的统一管理及综合利用,保障各业务部门的业务需求及协调工作,常常涉及到相关数据库数据实时同步处理。基于数据库的各类应用系统层出不穷,可能涉及到包括ACCESS、SQLSERVER、ORACLE、DB2、MYSQL等数据库。目前国内外几家大型的数据库厂商提出的异构数据库复制方案主要有:Oracle的透明网关技术,IBM的CCD表(一致变化数据表)方案,微软公司的出版者/订阅等方案。但由于上述系统致力于解决异构数据库间复杂的交互操作,过于大而全而且费用较高,并不符合一些中小企业的实际需求。 本文结合企业的实际应用实践经验,根据不同的应用类型,给出了相应的数据库实时同步应用的具体解决方案,主要包括: (1) SQLSERVER 到SQLSERVER 同步方案 (2) ORACLE 到SQLSERVER 同步方案 (3) ACCESS 到SQLSERVER/ORACLE 同步方案

二、异构数据库 异构数据库系统是相关的多个数据库系统的集合,可以实现数据的共享和透明访问,每个数据库系统在加入异构数据库系统之前本身就已经存在,拥有自己的DMBS。异构数据库的各个组成部分具有自身的自治性,实现数据共享的同时,每个数据库系统仍保有自己的应用特性、完整性控制和安全性控制。异构数据库的异构性主要体现在以下几个方面: 1、计算机体系结构的异构 各数据库可以分别运行在大型机、小型机、工作站、PC嵌入式系统中。 2、基础操作系统的异构 各个数据库系统的基础操作系统可以是Unix、Windows NT、Linux等。 3、DMBS本身的异构 可以是同为关系型数据库系统的Oracle、SQL Server等,也可以是不同数据模型的数据库,如关系、模式、层次、网络、面向对象,函数型数据库共同组成一个异构数据库系统。 三、数据库同步技术

2014浙大远程数据库系统概论在线作业

窗体顶端 您的本次作业分数为:100分单选题 1.根据SQL标准,要查询表student中所有年龄age小于所有学生的平均年龄的记录,下面哪条语句适用? A select * from student where age < avg(age) B select * from student having age < avg(age) C select * from student a where a.age < (select avg(b.age) from student b) D select * from student a where (select avg(b.age) from student b ) >= a.age 正确答案:C 单选题 2.在数据库的三级模式结构中,描述数据库用户能够看到和使用的局部数据的逻辑结构和特征描述的是指()。 A 模式 B 内模式 C 外模式 D 逻辑模式 正确答案:C 单选题 3.下列数据模型中,数据独立性最高的是()。 A 网状数据模型 B 关系数据模型 C 层次数据模型 D 非关系模型 正确答案:B 单选题 4.SQL中,下列涉及空值的操作,不正确的是()。 A AGE IS NULL B AGE IS NOT NULL C AGE = NULL

D NOT (AG E IS NULL) 正确答案:C 单选题 5.DBMS中实现事务隔离性的子系统是()。 A 安全性管理子系统 B 完整性管理子系统 C 并发控制子系统 D 恢复管理子系统 正确答案:C 单选题 6.如果一个关系中的属性或属性组并非该关系的码,但它是另外一个关系的主码,则称其为该关系的()。 A 码 B 外码 C 元组 D 主键 正确答案:B 单选题 7.如果事务T1封锁了数据R1,T2封锁了数据R2,然后T1又请求封锁R2。接着T2又申请封锁R1。这样就出现了T1在等待T2,而T2又在等待T1的局面,T1和T2两个事务永远不能结束,形成()。 A 活锁 B 死锁 C 乐观锁 D 悲观锁 正确答案:B 单选题 8.公司中有多个部门和多名职员,每个职员只能属于一个部门,一个部门可以有多名职员,从职员到部门的联系类型是()。 A 多对多

网络数据库Mysql介绍

网络数据库 网络数据库(network database) ●在网络环境中,为了提高系统的性能和可靠性,一般都采用具有“客户/服务器数据库引擎” 的大型关系数据库系统。 ●通常指跨越电脑在网络上创建、运行的数据库。 ●目前使用较为广泛的网络数据库平台有SQL Server、MySQL、Oracle等。 一、MySQL基础知识 ●作为开源软件的代表,MySQL数据库随着其功能的日益完善和可靠性的不断提高,已经成为互 联网平台上应用广泛的数据库软件。 ●特别是与Apache和PHP/PERL结合,为建立基于数据库的动态提供了强大动力。 主要容 1.MySQL数据库管理系统概述 2.MySQL安装与配置 3.MySQL图形化工具的使用 1、M Y SQL数据库管理系统概述 ●最近几年,随着it技术的发展,开源数据库逐渐流行; ●和传统的商业数据库相比,开源数据库具有完全免费、源码公开、随意下载等特点,并可以 用于各种商业目的。这使得开源软件被广泛应用在各个行业中,大大降低了企业的开发运营成本。 ●MySQL正是这些开源数据库中的杰出代表。 1)MySQL历史与发展 ●最早源于开源软件mSQL,由David Axmark等三个瑞典人于20世纪90年代开发的一个关系 型数据库; ●2000年开始使用GPL许可协议,成为开源软件的一分子; ●2001年开始引入InnoDB存储引擎,于2002年正式宣布MySQL全面支持事务,满足ACID属 性。 ●2003年,MySQL 4.0发布,开始支持集合操作; ●2004年, MySQL 4.1发布,增加对子查询的支持; ●2005年, MySQL 5.0发布,增加对视图(View)、存储过程(Procedure)、触发器(Trigger)、 服务器游标(Cursor)及分布式事务协议等高级特性的支持,至此,MySQL从功能上已经具备了支持企业级应用的主要特性。 ●在实际应用方面,LAMP(Linux + Apache + MySQL + Perl/PHP/Python)也逐渐成了IT业 广泛使用的Web应用架构。

7种方法连接数据库

连接数据库的方法小结 1.ODBC API ODBC(Open Database Connectivity,开放数据库互连)是微软公司开放服务结构(WOSA,Windows Open Services Architecture)中有关数据库的一个组成部分,它建立了一组规范,并提供了一组对数据库访问的标准API(应用程序编程接口)。这些API利用SQL来完成其大部分任务。ODBC本身也提供了对SQL语言的支持,用户可以直接将SQL语句送给ODBC。 一个基于ODBC的应用程序对数据库的操作不依赖任何DBMS,不直接与DBMS打交道,所有的数据库操作由对应的DBMS的ODBC驱动程序完成。也就是说,不论是FoxPro、Access , MYSQL还是Oracle数据库,均可用ODBC API 进行访问。由此可见,ODBC的最大优点是能以统一的方式处理所有的数据库。 2.MFC ODBC 由于直接使用ODBC API编写应用程序要编制大量代码,开发者往往需要花费很多的精力在非核心代码的维护上,而Visual C++提供了MFC ODBC类,封装了ODBC API,这使得利用MFC ODBC来创建ODBC应用程序非常简便。 3.DAO(Data Access Object) DAO提供了一种通过程序代码创建和操纵数据库的机制,多个DAO构成一个体系结构,在这个体系结构中,各个DAO对象协同工作。MFC DAO是Microsoft提供的用于访问Microsoft jet数据库文件的强有力的数据库开发工具,它通过封装DAO,向程序员提供了DAO操作数据库的手段。 4.OLE DB OLE DB(Object Linking and Embedding, Database, 又称为OLE DB或OLE-DB),一个基于COM的数据存储对象,能提供对所有类型的数据的操作,甚至能在离线的情况下存取数据(比方说,你使用的是你的便携机,你可以毫不费力地看到最后一次数据同步时的数据映像). OLEDB位于ODBC层与应用程序之间. 在你的ASP页面里,ADO是位于OLEDB之上的应用程序. 你的ADO调用先被送到OLEDB,然后再交由ODBC 处理. 你可以直接连接到OLEDB层,如果你这么做了,你将看到服务器端游标(recordset的缺省的游标,也是最常用的游标)性能的提升.

SQLSERVER2008开启远程数据库访问图解

SQL SERVER2008开启远程数据库访问图解moon.翘楚 2012-02-19 8:52 转载自zhangcheng1 最终编辑zhangcheng1 tag:sql server2008远程数据库,远程连sql,IP远程连SQL SERVER,1433端口映射 这篇文章不错,我试验了确实可以,moon.翘楚在这里再进行一下图文增补,让大家更加明白。 讲解SQL Server 2008开启远程连接 作者:blue1000出处:IT专家网论坛2010-06-23 07:00 sql server 2008默认是不允许远程连接的,sa帐户默认禁用的,如果想要在本地用SSMS连接远程服务器上的SQL Server 2008,需要做两个部分的配置: sql server 2008默认是不允许远程连接的,sa帐户默认禁用的,如果想要在本地用SSMS连接远程服务器上的SQL Server 2008,需要做两个部分的配置: 1,SQL Server Management Studio Express(简写SSMS) 2,SQL Server 配置管理器/SQL Server Configuration Manager(简写SSCM) 有两点要注意: 1,2005的外围应用配置器在2008中换了地方 2,有些设置生效需要重启一下SQL Server step 1: 打开SSMS,用windows身份连接数据库,登录后,右键选择“属性” step 2: 左侧选择“安全性”,选中右侧的“SQL Server 和 Windows 身份验证模式”以启用混合登录模式 step 3: 选择“连接”,勾选“允许远程连接此服务器”,然后点“确定” step 4: 展开“安全性”->“登录名”->“sa”,右键选择“属性” step 5: 左侧选择“常规”,右侧选择“SQL Server 身份验证”,并设置密码 step 6: 选择“状态”,选中“启用”,点击“确定” step 7: 右击数据库选择“方面”

网络连接数据库

package day01; import java.sql.Connection; import java.sql.DriverManager; public class JDBCConnection { public static void main(String[] args) throws Exception { //注册驱动 Class.forName("oracle.jdbc.driver.OracleDriver"); //连接 Connection conn=DriverManager.getConnection( "jdbc:oracle:thin:@192.168.7.134:1521:orcl", "system","tarena"); System.out.println(conn); } } NetCTOSS 电信运营支撑系统 资费管理模块资费: cost/fee 主要功能: 针对资费信息的CURD(增删改查)操作. 常见的企业级应用 OSS : 运营支撑系统 CRM: 客户关系管理 ERP: 企业资源规划 技术: JavaEE开发、JavaWeb开发 JavaSE JavaEE Web技术数据库 常见的软件架构体系: (1) C/S client/server客户端/服务架构 client 需要单独安装客户端软件QQ serve 服务器端软件 优点: 客户端可以单独开发,功能和界面可以非常丰富 缺点: 软件的升级成本高 (2)B/S browser/server浏览器/服务架构 是一种特殊的c/s结构 client: 浏览器Browser IE/Firefox/chrome server: 服务器Web服务器 http协议超文本传输协议简单、无状态的协议请求request和应答response

数据库访问技术简介

数据库访问技术简介 数据库中的数据存放在数据库文件中,我们要从数据库文件中获取数据,先要连接并登陆到存放数据库的服务器。一般来说,访问数据库中的数据有两种方式:一是通过DBMS (Data Base Management System,数据库管理系统)提供的数据库操作工具来访问,如通过SQL Server 2000的查询设计器来提交查询,或者通过SQL Server 2000的企业管理工具来访问。这种方式比较适合DBA对数据库进行管理;二是通过API(Application Programming Interface, 应用编程接口)来访问数据库,这种方式适合在应用程序中访问数据库。 在数据库发展的初期,各个开发商为自己的数据库设计了各自不同的DBMS,因此不同类型的数据库之间数据交换非常困难。为了解决这个问题,Microsoft提出了ODBC(Open Data Base Connectivity,开放数据库互连)技术,试图建立一种统一的应用程序访问数据库接口,使开发人员无需了解程序内部结构就可以访问数据库。 1、Microsoft提出的系列数据库访问技术 1.1、ODBC ODBC是微软公司开放服务结构中有关数据库的一个组成部分,它建立了一组规范,并提供了一组对数据库访问的标准API。应用程序可以使用所提供的API来访问任何提供了ODBC驱动程序的数据库。ODBC规范为应用程序提供了一套高层调用接口规范和基于动态链接的运行支持环境。ODBC已经成为一种标准,目前所有的关系数据库都提供了ODBC 驱动程序,使用ODBC开发的应用程序具有很好的适应性和可移植性,并且具有同时访问多种数据库系统的能力。这使得ODBC的应用非常广泛,基本可用于所有的关系数据库。 要使用ODBC,先要了解以下概念:ODBC驱动管理器、ODBC驱动程序、数据源。它们都是ODBC的组件。ODBC组件之间的关系如图1所示。

用PLSQL远程连接Oracle数据库

PL/SQL Developer 远程连接Oracle数据库 1、配置服务器tnsnames.ora文件,如果本机上没有安装oracle,可以从安 装了oracle的机上拷贝一个(tnsnames.ora文件)放在指定目录下,因为我已安装oracle,所以直接配置该文件。 # tnsnames.ora Network Configuration File: D:\Oracle11g\product\11.2.0\dbhome_1\network\admin\tnsnames.ora # Generated by Oracle configuration tools. LISTENER_ORCL = (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521)) ORACLR_CONNECTION_DATA = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521)) ) (CONNECT_DATA = (SID = CLRExtProc) (PRESENTATION = RO) ) ) ORCL = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.25.224)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orcl) ) ) orcl为远程Oracle数据库的实例名,IP地址和端口也要配置正确。 2、配置完成后,Oracle客户端应该可以连接到远程Oracle 数据库上。

2015年浙江大学远程-数据库系统概论在线作业

1.若事务T对数据对象 A 进行读取和修改操作,且其它任何事务都不能访问 A, 此时事务 T需对数据对象A加上()。 ? A 读锁 ? B 死锁 ? C 写锁 ? D 活锁 正确答案:C ? 单选题 2.在SQL语言中授权的操作是通过()语句实现的。 ? A CREATE ? B REVOKE ? C GRANT ? D INSERT 正确答案:C ? 单选题 3.如果事务T获得了数据项Q上的排它锁,则T对Q()。 ? A 只能读不能写 ? B 只能写不能读 ? C 既可读又可写

? D 不能读不能写 正确答案:C ? 单选题 4.根据SQL标准,创建一个视图abc,通过该视图只能对表student中系dept 为‘IS’的记录进行更新操作。下面哪条语句适用? ? A create view abc as select * from student where dept=’IS’ ? B create view abc as select * from student where dept=’IS’ with check option ? C create view abc as student where dept=’IS’ ? D create view abc as select dept=’IS’ from student 正确答案:B ? 单选题 5.根据SQL标准,删除表student中对字段sno的唯一性约束,应该使用下面 哪条语句? ? A drop sno from table student ? B alter table student drop sno ? C alter table student drop unique(sno) ? D alter table student drop sno unique 正确答案:C

数据库系统的访问

第7章数据库系统的访问 对于那些相对独立的软件供应商而言,经常要为每一个DBMS编写一个版本的应用程序,或者为每个要访问的DBMS编写针对DBMS的代码。这就意味着,大量的资源都耗在了编写和维护DB的访问上,更不用说应用程序了。此时应用程序的评价标准不再是质量,而是它能否在给定的DBMS中访问数据库。 这就需要开放的数据库连接,就是人们需要用一种新的方法来访问不同的数据库。为此,在C/S,B/S系统中必须广泛使用访问接口技术,以隐藏各种复杂性,屏蔽各种系统之间的差异。常见的数据库访问接口的技术有固有调用、ODBC、JDBC、OLE DB、DAO、ADO、https://www.doczj.com/doc/6916649213.html, 以及基于XML的数据库访问等几种流行的方式。这其中以ODBC技术和JDBC技术应用最广泛,也是目前最为优秀的访问接口方式。 本章主要对几种常见的数据库访问技术(如固有调用、ODBC、JDBC、OLE DB、DAO、ADO、https://www.doczj.com/doc/6916649213.html,以及基于XML的数据库访问等)进行介绍。 7.1 数据库的访问接口 所谓访问接口是指分布式环境中保证操作系统、通信协议、数据库等之间进行对话、互操作的软件系统。 访问接口的作用是保证网络中各部件(软件和硬件)之间透明地连接,即隐藏网络部件的异构性,尤其保证不同网络、不同DBMS和某些访问语言的透明性,即下面三个透明性。 ⑴网络透明性:能支持所有类型的网络。 ⑵服务器透明性:不管服务器上的DBMS是何种型号(ORACLE、SYBASE、DB2等),一个好的访问接口都能通过标准的SQL语言与不同DBMS上的SQL语言连接起来。 ⑶语言透明性:客户机可用任何开发语言进行发送请求和接受回答,被调用的功能应该像语言那样也是独立的。 应用系统访问数据库的接口方式有多种,本节介绍固有调用、ODBC和JDBC。 7.1.1 固有调用 每个数据库引擎都带有自己的包含用于访问数据库的APl函数的动态链接库DLL,应用程序可利用它存取和操纵数据库中的数据。如果应用程序直接调用这些动态链接库,就说它执行的是“固有调用”,因为该调用对于特定的数据库产品来说是“固有” (专用)的。 固有调用接口的优点是执行效率高,由于是“固有”,编程实现较简单。但它的缺点也是很严重的:不具通用性。对于不同的数据库引擎,应用程序必须连接和调用不同的专用的动态链接库,这对于网络数据库系统的应用是极不方便的。 7.1.2 ODBC ODBC是“开放数据库互连”(Open Database Connectivity)的简称。ODBC是Microsoft 公司提出的、当前被业界广泛接受的应用程序通用编程接口(API)标准,它以X/Open和ISO/IEC的调用级接口(CLI)规范为基础,用于对数据库的访问。我们可以用如下图示来说明ODBC概念。

数据库访问技术

7.2 数据库访问技术 访问数据库中的数据对象时,一般可采用两种访问方式:一是登录用户直接借助DBMS 的数据操纵工具,通过图形或SQL命令接口联机访问;另外一种为程序代码通过应用程序编程接口(Application Programming Interface,API)进行数据库连接验证以及数据操作。两种数据库访问方式,可以抽象为图7.5的层次结构,从中可见中间的接口组件是数据库访问的桥梁与核心,本节主要就该部分的通用接口技术(即API访问方式)部分进行介绍。 图7.5 数据库访问结构示意 根据底层数据操作模式的差异,数据库接口可简单分为:本地(Local)数据库接口和客户机/服务器(Client/Server)数据库接口。 1.本地数据库接口 通过DBMS将用户数据请求转换成为简单的磁盘访问命令,并交由操作系统的文件管理系统执行;然后DBMS从文件管理系统得到数据响应并加以处理。由于DBMS数据文件组织结构的差异,本地型DBMS只能够读取特定的数据源。 2.客户机/服务器数据库接口 数据处理工作分散到工作站和服务器上处理。工作站通过特定的数据库通信API,把数据访问请求传给相应的服务器的后端数据驱动程序。由于不同客户机/服务器数据库管理系统通信机制的差异,异构数据库之间也难以实现透明通信互访。 因此,仅依靠特定DBMS提供的数据库访问接口难以支撑透明的、通用的异构数据库访问。后台数据库管理系统的变更或升级,需要程序员对特定API的重新学习,以及对应用程序代码的改写;而市场上DBMS产品众多,必将进一步加大系统开发人员的学习和维护压力,应用程序与数据源间的独立性难以真正实现。为此,建立更为通用的数据访问技术规范,为程序用户提供一套完整、统一的数据库访问接口,得到了数据库业界广泛认同与支持,并由此产生了众多成熟的数据库访问接口应用技术规范。 到目前为止,主流的数据库访问技术包括ODBC、MFC ADO、RDO、OLE DB、ADO、https://www.doczj.com/doc/6916649213.html,以及JDBC等通用技术标准。这些通用数据库访问技术的出现与发展大大降低了数据库系统开发与维护门槛,改善了数据库系统的移植性、扩展性,极大推动了数据库技术的发展与普及。下面就主流数据库访问技术发展与演化进行介绍。

SQL2000数据库实现远程连接

SQL 2000数据库怎么实现远程连接 SQL Server 2000无论是个人版、企业版还是标准版,只要细版本在8.00.1760以下,均不提供远程数据库连接,即使服务器端工具和客户端工具的设置均有TCP/IP设置和数据库连接属性也设置了RPC远程连接,仍然不能实现远程连接。该怎么解决呢? 解决方案如下: 首先,需要打SP4补丁,该补丁包含了以前sp1、2、3的补丁,安装此补丁后一般要重新启动计算机,再进行远程连接就可以了,如再企业管理器可远程注册服务器、查询分析可连接远程服务器、ODBC可连接远程服务器。 要点: 1.确认服务器端SQL服务端口号是否为:1433 2.如果不是1433,配置客户端 3.建立服务器端登录帐号,确保角色及管理数据库 一、查看服务器端情况 1. 看ping 服务器IP能否ping通。 这个实际上是看和远程sql server 服务器的物理连接是否存在。如果不行,请检查网络,查看配置,当然得确保远程sql server 服务器的IP拼写正确。 2. 在Dos或命令行下输入telnet 服务器IP 端口,看能否连通。 如telnet 202.114.100.100 1433 通常端口值是1433,因为1433是sql server 的对于Tcp/IP的默认侦听端口。如果有问题,通常这一步会出问题。通常的提示是“……无法打开连接,连接失败"。 如果这一步有问题,应该检查以下选项。 1) 检查远程服务器是否启动了sql server 服务。如果没有,则启动。 2) 检查sql server服务器端有没启用Tcp/IP协议,因为远程连接(通过因特网)需要靠这个协议。检查方法是,在服务器上打开开始菜单->程序->Microsoft SQL Server->服务器网络实用工具,看启用的协议里是否有tcp/ip协议,如果没有,则启用它。 3) 检查服务器的tcp/ip端口是否配置为1433端口。仍然在服务器网络实用工具里查看启用协议里面的tcp/ip的属性,确保默认端口为1433,并且隐藏服务器复选框没有勾上。 事实上,如果默认端口被修改,也是可以的,但是在客户端做telnet测试时,写服务器端口号时必须与服务器配置的端口号保持一致。如果隐藏sql server服务器复选框被勾选,则意味着客户端无法通过枚举服务器来看到这台服务器,起到了保护的作用,但不影响连接,但是Tcp/ip协议的默认端口将被隐式修改为2433,在客户端连接时必须作相应的改变(具体方式见二:设置客户端网络实用工具)。

网络数据库应用大作业

潍坊学院 计算机工程学院2011-2012学年第 2学期《网络数据库技术》 大作业报告 专业: 班级: 学号: 姓名:

2011-2012年度第二学期 《网络数据库技术》大作业内容及考核方法1.考查任务内容 1.1以s+自己的学号后2位为数据库名建立数据库 (以下以23号为例) 1.2在创建的数据库上使用SQL语言创建下列关系表:( 主键:(S_No, Course_no)

(2)CLASS表(班级表) (4)DEPARTMENT表(系部表) 主键:DEPT_NO (5)STUDENT表(学生表) 主键:S_NO (6)TEACHER表(教师表)

(7)TEACHING表(教师授课表) 1.3各关系表的约束要求 外键约束: (1 (2)CHOICE——STUDENT关系 (3)CLASS——DEPARTMENT关系 (4 (5 (6 检查性约束: STUDENT表的S_SEX字段和TEACHER表的T_SEX字段取值均为’男’或’女’。

1.4使用SQL语言插入下列所示的数据

1.5 完成以下查询要求,给出实现该要求的SQL语句 (1)查询入学总分高于平均总分的学生的学号、姓名、总分、班级编号、班级名信息,并将显示结果按班级编号、学号排序。 (2)创建一个名为STUDENT_NEW的新表,将STUDENT表中的记录复制到该新表中。(3)将STUDENT中叫“丁一”的学生的学号修改为“040102”,班级编号修改为“0401”。(4)列出《计算机文化》课程的成绩高于“王五”的学生名单。 (5)分组统计选修各门课程的学生人数。 1.6 完成以下PL/SQL编程的相关要求 (1)设计一个存储过程,用来接受用户输入的学号,然后显示出该学号对应学生的所有选修课程名及课程成绩。 (2)设计一个函数/存储过程,用来接受用户输入的课程名,然后显示出所有选修了该课程学生的成绩的平均成绩。 (3)设计一个触发器,用于在更新了课程表内容后,更新与课程表有关联的表的内容。1.7 将创建的数据库进行完全备份 1.8 将备份的数据库进行恢复 2. 考核要求 1.所有以上内容,要求全部采用SQL和PL/SQL语言完成。 2.成绩评定标准: (1)大作业报告 (2)答辩情况 3. 完成时间第11-14周

Labview中远程数据库访问技术

摘要:介绍了在Labview中应用ADO技术访问本地和远程数据库的方案。对在局域网中以网络 共享方式访问远程Access数据库进行了详细介绍,最后给出了应用该方法开发的一个实例。关 键词:LabviewADO远程数据库引言Labview是美国NI公司开发的一种图形化编程语言,其主 要用于数据采集、仪器控制、过程监控等领域。Labview具有丰富的采集与分析函数库,在Labview环境下可以方便快捷地开发监控系统软件。现代监控系统一般构建于局域网内,且 摘要:介绍了在Labview中应用ADO技术访问本地和远程数据库的方案。对在局域网中以网络共享方式访问远程Access数据库进行了详细介绍,最后给出了应用 该方法开发的一个实例。 关键词:Labview ADO 远程数据库 引言 Labview 是美国NI公司开发的一种图形化编程语言,其主要用于数据采集、仪器控制、过程监控等领域。Labview具有丰富的采集与分析函数库,在Labview 环境下可以方便快捷地开发监控系统软件。现代监控系统一般构建于局域网内,且监控系统自身也是企业生产管理系统的一个子系统,因此不可避免地要访问本地或远程数据库。Labview开发版中并没有提供直接与通用数据库接口的工具,但可以 通过以下方法解决:购买NI公司开发的附加软件工具包;利用其它语言如VC++编写DLL访问数据库;利用ADO控件访问数据库。[1]Labview支持Activex控件,与其它方法相比基于ADO技术构建本地或远程数据库访问接口不失为一种简单而又经济 的方法。 1 ADO技术简介 ADO(Activex Data Objects)是Microsot为OLE DB设计的应用层接口,它为一致的数据访问接口提供了良好的扩展性而不局限于单一的数据源。ADO接口编程模型中包括连接(connection)、命令(command)、参数(parameter)、 记录集(recordset)、字段(field)、错误(error)、属性(property)、集合(collection)、事件(event)等元素。其中connection、command、recordset是三个主体对象,parameters、fields、errors、properties、是四个集合对象。ADO的一般操作方式为:1 连接到数据源;2 指定访问数据源的命令;3 执行命令;4 将命令执行后产生的结果保存在缓存中;5 更新数据源。ADO接口继承了OLE DB的高速性,可以高速访 问本地或远程的数据源。 2在Labview 中使用ADO接口 在Labview 中使用ADO接口访问数据库一般包括以下几个步骤:建立ADO控件;连接到数据源;生成SQL命令;执行命令;关闭连接。具体步骤如图1 所示。 2.1建立ADO控件 在前面板控件模板中选择Activex子模板单击Automation Refnum项,右键单击Select Activex Class的Browse从类型库中选择 Microsoft Activex Data Objects 2.7 library Version 2.7,之后可以向框图程序中加 入connection、command、recordset等对象。 2.2连接到数据源 首先在Diagram中单击鼠标右键,从Function模板选择communication 子模板,从中选择Activex项的Automation Open 与ADODB_Connection相连即 可打开连接。接着同样从communication子模板的Activex项中选择 Invoke node (方法节点)并与Automation Open 相连,在其上单击右键选择methods项的Open方法即出现图1中所示的节点。其中“Open”表示该节点为打开“连接对象”,“ConnectionString”是连接到数据源的字符串,“UserID”和“Password”

中石油远程教育-数据库课程设计

中国石油大学远程教育学院《数据库课程设计》 题目:学生管理系统 专业:计算机科学与应用 班级:1109 学生姓名:逐风者 学号:0000 2013 年05 月

1 开发背景 (3) 1.1 时代背景[1] (3) 1.2 开发环境与开发工具 (3) 1.3 设计内容 (3) 2 功能描述 (4) 2.1 系统需求分析 (4) 2.2 功能需求分析 (4) 2.3 系统功能模块设计 (5) 3 数据分析 (6) 3.1数据字典 (6) 4 概念模型设计 (7) 5 逻辑模型设计和优化 (10) 5.1 数据库初始关系模式 (10) 5.2 规范化处理 (10) 6 课程设计总结和体会 (11) 参考文献 (12)

1 开发背景 1.1 时代背景[1] 2013年是移动互联网、电子商务、大数据业务蓬勃发展的一年,抛去这些光环的头衔,对于计算机而言,这一切的核心都离不开数据库设计。 数据库系统设计是把现实世界的具体事物和具体业务虚拟化成计算机可以识别的逻辑,简单的说就是对现实世界的实例化。优秀的数据库模式能够有效存储数据,满足用户信息要求和处理要求。为了使数据库应用系统开发设计合理、规范、有序、正确、高效进行,现在广泛采用的是工程化6个阶段开发设计过程与方法,它们是需求分析阶段、概念结构设计阶段、逻辑结构设计阶段、物理结构设计阶段、数据库的实施、数据库系统运行与维护阶段。 1.2 开发环境与开发工具 本课程设计使用的是MYSQL 数据库,开发语言的使用的是java, 前端界面使用的是Netbeans,这是一款可视化的java 开发工具。 1.3 设计内容 设计内容:学生学籍和活动的管理,统计学校专业的选课和学生工会(团体)的选择情况。

第七讲 VB访问SQL Server2000数据库的方法

第七讲 VB访问SQL Server2000数据库的方法 一、ODBC数据源设置 1、ODBC简介 ODBC Open DatabaseConnectivity开放式数据库互连)是Mircosoft公司有关数据库的一个组成部分,它建立了一组规范,并提供了一组对数据库访问的标准API Application应用程序编程接口)。这些API利用SQL来完成大部分的任务。ODBC本身提供对SQL语言的支持,用户可以直接将SQL送给ODBC一个基于ODBC的应用程序对数据库操作不依赖于任何DBMS,不直接与DBMS打交道,所有数据库操作由ODBC驱动程序完成。 2、ODBC数据源的创建(建立ODBC数据源) 前台系统Windows 2000 professional系统,后台Windows 2000 Server系统。以Windows 2000 professional为例: (1)单击“开始”/设置/控制面板/管理工具/数据源ODBC,打开“ODBC数据源管理器”,选择“用户DSN or 系统DSN”,单击【添加】按钮,打开“创建用户数据源”对话框,选择“SQL Server”,单击【完成】按钮。

(2)打开“创建新的数据源到SQL Server”窗口: ○1你想用什么名称命名数据源:在名称框中输入xn。 ○2服务器:为网络中数据库服务器(默认是本地服务器Local,可选远程服务器IP)。 ○3登陆ID:xn密码:xn(取决于安装SQL时所指定的密码)。特别注意此处为确保数据库安全起见,数据库管理员可以给用户指定一个用户名及密码。这里为简便起见使用管理员用户名及密码。 ○4更改数据库为:aa(所要使用的数据库)。

数据库访问类

本文由星野看星贡献 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; using System.Data.SqlClient; namespace Mysqlserver { ///  /// SqlServerDataBase 的摘要说明 ///  public class SqlServerDataBase { private string strError = null; private int intCount = 0; public SqlServerDataBase() { // // TODO: 在此处添加构造函数逻辑 // } ///  /// 公开方法DBConn,返回数据库连接 ///  /// <returns></returns> public SqlConnection DBconn() { string strConn = "Server=(local);Database=GlobalMeetings;Uid=sa;pwd="; try { return new SqlConnection(strConn); } catch (Exception) { return null; } } ///  /// 公开属性ErrorMessage,返回错误信息 ///  public string ErrorMessage { get { return strError; }

远程访问数据库

远程访问数据库 对于oracle数据库,可以通过建立dblink的方式,在一个数据库中访问获取另一个数据库的数据,具体实现方式如下: 1.建立DATABASE LINK: 在本机数据库中执行如下语句: Create public database link ERPDATABASE–远程数据库连接名 Connectto apps identifiedby apps Using '(DESCRIPTION = (ADDRESS_LIST= (ADDRESS = (PROTOCOL = TCP) (HOST = 192.168.0.100) (PORT = 1521) ) ) (CONNECT_DATA = (SERVICE_NAME = ERPTEST) ) ) ' ; 蓝色部分可以从数据库安装目录\product\10.2.0\db_1\network\ADMIN的路径下找到,拷贝tnsnames.ora文件中的对应信息。 以上连接信息可以用oracle客户端的Net Manager工具生成:

2.查看数据 成功之后,可以在本机数据库中查看ERPTEST数据库的数据: 其中需要注意的有: 1)ygfm为数据库用户名,因为dblink的连接信息中使用的apps用户是数据库dba,所以可以方位ygfm的数据,这里要注意的是apps需要有ygfm的访问权限。 2)注意需要使用’ @ERPDATABASE’标识远程数据库。 3.建立同义词 可以建立同义词减少输入: 执行以下语句: Create synonym ygfm_analyse_base for ygfm.ygfm_analyse_base@ERPDATABASE; 查询: select * from ygfm_analyse_base; 需要注意的是:这里建立的DATABASE LINK 不同于tnsnames.ora文件中的连接信息,这里是在数据库中保存连接信息,而tnsnames.ora文件中的连接信息是在数据库层面之上的。

数据库大型应用解决方案

数据库大型应用解决方 案

随着互联网应用的广泛普及,海量数据的存储和访问成为了系统设计的瓶颈问题。对于一个大型的互联网应用,每天百万级甚至上亿的PV无疑对数据库造成了相当高的负载。对于系统的稳定性和扩展性造成了极大的问题。 [@more@] 一、负载均衡技术 负载均衡集群是由一组相互独立的计算机系统构成,通过常规网络或专用网络进行连接,由路由器衔接在一起,各节点相互协作、共同负载、均衡压力,对客户端来说,整个群集可以视为一台具有超高性能的独立服务器。 1、实现原理 实现数据库的负载均衡技术,首先要有一个可以控制连接数据库的控制端。在这里,它截断了数据库和程序的直接连接,由所有的程序来访问这个中间层,然后再由中间层来访问数据库。这样,我们就可以具体控制访问某个数据库了,然后还可以根据数据库的当前负载采取有效的均衡策略,来调整每次连接到哪个数据库。 2、实现多据库数据同步 对于负载均衡,最重要的就是所有服务器的数据都是实时同步的。这是一个集群所必需的,因为,如果数不据实时、不同步,那么用户从一台服务器读出的数据,就有别于从另一台服务器读出的数据,这是不能允许的。所以必须实现数据库的数据同步。这样,在查询的时候就可以有多个资源,实现均衡。比较常用的方法是 Moebius for SQL Server集群,Moebius for SQL Server集群采用将核心程序驻留在每个机器的数据库中的办法,这个核心程序称为Moebius for SQL Server 中间件,主要作用是监测数据库内数据的变化并将变化的数据同步到其他数据库中。数据同步完成后客户端才会得到响应,同步过程是并发完成的,所以同步到多个数据库和同步到一个数据库的时间基本相等;另外同步的过程是在事务的环境下完成的,保证了多份数据在任何时刻数据的一致性。正因为Moebius 中间件宿主在数据库中的创新,让中间件不但能知道数据的变化,而且知道引起数据变化的SQL语句,根据SQL语句的类型智能的采取不同的数据同步的策略以保证数据同步成本的最小化。

VB访问数据库的方法及接口分析

摘要:本文介绍了几种Visual Basic访问数据库的方法,对这些数据接口的性能进行了比较,并提出相互的转化关系。 1VB访问数据库的方法 VB访问数据库的方法很多,一般情况下分成两大类,而每一类又有很多方法。下面以列表的方式列出每一类,及每一类包含的方法。 1.1接口对象法(API) VBSQL:通过DB-Library访问微软的SQL Server。 ODBC API:任何一种ODBC数据源16位和32位。 DAO/Jet:本地的Jet/Access.MDB、顺序索引数据库(ISAM)和任何ODBC数据源。 DAO/ODBC Direct:任何一种ODBC数据源(经过RDO)。 RDO2.0:任何一种ODBC数据源(LevelⅠ或Ⅱ)。 ADO:任何一种ODBC数据源和任何经过OLE DB界面接口的数据源。 1.2数据控件法 Data Control:DAO/Jet数据界面接口。 Data Control/ODBC Direct:DAO/ODBC Direct数据界面接口。 RemoteData Control/RDC:RDO数据界面接口。 Advanced Data Connector/ADC:ADO数据界面接口。 2几种接口的比较 ADC(Advanced Data Connector):高级数据连接器。提供绑定ADO数据源到窗体的数据绑定控件上。ADC主要是一种直接访问或者通过ADO访问远程OLE DB对象的一种技术,它也支持主要应用在微软IE浏览器上的数据绑定控件。它是特地为Web上的浏览器为基础的应用程序而设计的。 ADO(Active Data Objects):Active数据对象。是DAO/RDO的后继产物,ADO“扩展”了DAO和RDO所使用的对象模型,这意味着它包含较少的对象、更多的属性、方法(和参数),以及事件。ADO实际是一种提供访问各种数据类型的连接机制。ADO设计为一种极简单的格式,通过ODBC的方法同数据库接口。可以使用任何一种ODBC数据源,即不止适合于SQL Server、Oracle、Access等数据库应用程序,也适合于Excel表格、文本文件、图形文件

相关主题
文本预览
相关文档 最新文档