- 2022-08-30 发布 |
- 37.5 KB |
- 62页
申明敬告: 本站不保证该用户上传的文档完整性,不预览、不比对内容而直接下载产生的反悔问题本站不予受理。
文档介绍
计算机ASPNET框架
第7章ADO.NET操作SQLServer数据库\n内容提要本章主要介绍SQLServer2000的基本使用。介绍SQLServer2000集成开发环境的使用。介绍了如何在SQLServer2000中使用查询分析器建立数据库和数据库表,如何使用ADO.NET操作数据库表。重点介绍如何使用ADO.NET的命名空间“System.Data.SqlClient”操作SQLServer的存储过程。\nSQLServer简介与Access相比较,它具有更好的应用特征,如下所示。(1)支持企业级运算、支持C/S模型、更好的性能和更方便的操作。(2)功能增强:海量数据存储、数据复制、数据转换服务、分布式事务、全文检索。(3)支持多种协议(TCP/IP、NETBEUI)和支持分布式计算,分布式计算模型。(4)ANSI/92标准兼容并进行T-SQL(TransactSQL,事务SQL语言)的增强。\nSQLServer的集成环境介绍SQLServer2000提供强大的GUI(GraphicUserInterface,图形用户接口)界面,用户可以直接通过界面或者通过T-SQL语句操作数据库。常用的图形界面包括:SQLServer服务管理器、企业管理器、查询分析器、事件查看器和联机帮助,等等。\nSQL服务管理器\n企业管理器\n查询分析器\n事件探查器\n联机帮助\n创建数据库案例名称:创建单数据文件的数据库程序名称:7-01.sqlCREATEDATABASEMySalesON(NAME=Sales_dat,FILENAME='c:\programfiles\microsoftsqlserver\mssql\data\Mysaledat.mdf',SIZE=2,MAXSIZE=2,FILEGROWTH=2)LOGON(NAME='Sales_log',FILENAME='c:\programfiles\microsoftsqlserver\mssql\data\Mysalelog.ldf',SIZE=1MB,MAXSIZE=1MB,FILEGROWTH=1MB)GO\n案例名称:创建多数据文件的数据库程序名称:7-02.sqlCREATEDATABASEArchiveONPRIMARY(NAME=Arch1,FILENAME='c:\programfiles\microsoftsqlserver\mssql\data\archdat1.mdf',SIZE=1MB,MAXSIZE=1,FILEGROWTH=1),(NAME=Arch2,FILENAME='c:\programfiles\microsoftsqlserver\mssql\data\archdat2.ndf',SIZE=1MB,MAXSIZE=1,FILEGROWTH=1),(NAME=Arch3,FILENAME='c:\programfiles\microsoftsqlserver\mssql\data\archdat3.ndf',SIZE=1MB,MAXSIZE=1,FILEGROWTH=1)LOGON(NAME=Archlog1,FILENAME='c:\programfiles\microsoftsqlserver\mssql\data\archlog1.ldf',SIZE=1MB,MAXSIZE=1,FILEGROWTH=1),(NAME=Archlog2,FILENAME='c:\programfiles\microsoftsqlserver\mssql\data\archlog2.ldf',SIZE=1MB,MAXSIZE=1,FILEGROWTH=1)GO\n删除数据库删除数据库的关键词是:DROPDATABASE。比如要删除名为TEST1的数据库,可以利用语句“DROPDATABASETEST1”。不要轻易删除数据库,否则将导致所有数据完全丢失!\nSQLServer提供的数据类型数据类型描述需要空间Binary固定长度的二进制数据,最大长度为8000字节0到8000字节Char固定长度的非Unicode字符数据,最大长度为8000个字符0到8000字节Datetime日期和时间数据8字节Int整型数据,从–231到231–14个字节Money货币数据值,从–263到263–18字节Smallint整型数据,从–215到215–12字节Varchar可变长度的非Unicode数据,最大长度为231–1个字符存储大小是输入数据的实际长度Uniqueidentifier存储作为全局惟一标识(GUID)的16字节的二进制数值。GUID是确保惟一性的二进制数字16字节\n创建数据库表表是关系型数据库中的逻辑单元,用于存储实体数据。表由行和列组成。行描述实体的实例,列定义实体的属性。表命名时必须确保表名称在数据库中是惟一的,并且应遵循标识符命名规则。对表的命名约定有4条:(1)可以包含1到128个字符,包括字母、符号和数字。(2)第一个字符必须是字母、下划线(_)、@符号。(3)首字母之后的字符可以包括字母、数字或#、$符号及其_。(4)除非在引号内定义对象名称,否则不允许有空格。\n案例名称:创建数据库表案例名称:创建数据库表程序名称:8-03.sqlCREATETABLEMyTable(MyNameCHAR(10)NOTNULL,MyBorthDayDATETIME,)\n修改表结构案例名称:添加列程序名称:7-04.sqlALTERTABLEMyTABLEADDMySistNameCHAR(20)\n删除列案例名称:删除列程序名称:7-05.sqlALTERTABLEMyTABLEDROPCOLUMNMySistName\n删除数据库表使用“企业管理器”或者用DropTable语句删除SQLServer中的表。语法:“DropTabletable_name”比如删除MyTable表,利用语句“DropTableMyTable”。\n数据完整性一旦创建并填充完数据库,应确保存储数据的可靠性,这对于任何企业都很关键。因此必须在设计数据库的时候考虑数据完整性。数据完整性指数据库中存储数据的一致性。常规数据库管理系统需要在每个应用程序中编码实现数据完整性逻辑。\n实现数据完整型利用三种方法。(1)使用Identity属性。(2)使用Uniqueidentifier数据类型和NEWID()函数。(3)使用六大约束。\n使用Identity属性表中一般会包含连续值的列,将Identity属性添加到该列上,SQLServer可自动生成这些值。Identity属性生成的值惟一地标识表中的每一行,每次表中插入一行时,该属性就会自动生成值。在创建表的时候创建Identity列,定义Identity列的语法如下:Identity[(Seed,Increment)]参数Seed(种子)指定Identity列的初始值。参数Increment指定每次自动增加多少。Seed和Increment参数是可选的,如果没有指定,则两个参数都默认为1。\n创建Identity列案例名称:创建Identity列程序名称:7-06.sqlCREATETABLEStudent(StudIDintIdentity(101,5),FirstNameVarchar(20),LastNamevarchar(20))InsertintoStudent(FirstName,LastName)Values('runfa','zhou')Select*fromstudentAlterTableStudentaddStudIDintIdentity(101,5)\n使用Uniqueidentifier类型案例名称:创建Uniqueidentifier类型程序名称:7-07.sqlCREATETABLEMYFRIEND(NIDUNIQUEIDENTIFIER,STUDENTXINGVARCHAR(20),STUDENTMINGVARCHAR(20))GOINSERTMyFriendValues(NEWID(),'周','润发')GOINSERTMyFriendValues(NEWID(),'周','敏')Select*fromMyFriend\n使用六大约束对表强制执行完整性的最常用方法是使用约束,限制表或列中的值。约束有六种,分别是:主键约束(PrimaryKey)、外键约束(Foreignkey)、惟一约束(Unique)、非空约束(NotNull)、检查约束(Check)和默认约束(Default)。\n1.主键约束案例名称:使用主键程序名称:7-08.sqlCREATETABLESTUDENT_PRI(STUDIDINTPRIMARYKEY,FIRSTNAMEVARCHAR(20),LASTNAMEVARCHAR(20),)InsertintoSTUDENT_PRIValues(1001,'runfa','zhou')\n2.外键约束外键(Foreignkey)约束定义列值与另一个表的主键相匹配。使用外键时应该注意:Foreignkey约束必须引用另一个表的主键列或者Unique列。案例名称:使用外键程序名称:7-09.sqlCreateTablebasicinfo(stu_idintIdentity(1001,1)PrimaryKey,FirstnameVarchar(10),LastnameVarchar(10))CreateTablehistory(historyidintPrimaryKey,stu_idint,stu_gradeintforeignkey(stu_id)referencesbasicinfo(stu_id))\n3.惟一约束案例名称:使用惟一约束程序名称:7-10.sqlCreateTabletestUnique(stu_idintIdentity(1001,1)PrimaryKey,FirstnameVarchar(10)Unique,LastnameVarchar(10))InsertintotestUniqueValues('runfa','zhou')\n4.非空约束案例名称:使用非空约束程序名称:7-11.sqlCreateTabletestNotNull(FirstnameVarchar(10)NotNull,LastnameVarchar(10))InsertintotestNotNull(lastname)Values('zhou')\n5.检查约束案例名称:使用检查约束程序名称:7-12.sqlCreateTabletestCheck(stu_idintIDENTITY(100000,1)PrimaryKey,FirstnameVarchar(10)notnull,lastnameVarchar(10)notnull,ageintCHECK(age>6),sexVarchar(30)CHECK(sexin('M','F')))InsertIntotestCheckValues('runfa','zhou',5,'M')InsertIntotestCheckValues('runfa','zhou',7,'A')\n6.默认约束案例名称:使用默认约束程序名称:7-13.sqlCreateTabletestDefault(stu_idintIDENTITY(100000,1)PrimaryKey,FirstnameVarchar(10)notnull,LastnameVarchar(10)notnull,SexVarchar(30)Default'M')InsertintotestDefault(Firstname,Lastname)Values('runfa','zhou')Select*fromtestDefault\nADO.NET对象操作SQLServer数据库ADO.NET中操作SQLServer的命名空间是:“System.Date.SqlClient”主要包括:SqlConnection对象、SqlCommand对象、SqlDataReader对象、SqlDataAdapter对象。\n建立SQLServer数据库表案例名称:新建数据库表程序名称:7-14.SQLusepubsgoCreateTablegrade(学号intIdentity(100,1),性别Varchar(30)CHECK(性别in('男','女')),姓名Varchar(10),语文intdefault0,数学intdefault0,英语intdefault0)\n添加测试数据记录案例名称:添加测试数据记录程序名称:7-15.SQLinsertintogradevalues('男','小俞',100,80,70)insertintogradevalues('女','小徐',90,80,60)insertintogradevalues('男','小包',50,60,90)insertintogradevalues('男','小王',79,90,50)insertintogradevalues('男','小栗',89,90,91)insertintogradevalues('女','小卢',90,91,92)insertintogradevalues('男','小李',89,91,95)\n使用ADO.NET对象总体上,操作SQLServer的程序和操作Access的程序方法一致。只需要做3个地方的修改,就可以把操作Access数据库的程序改成操作SQLServer的程序。(1)修改引入的命名空间。操作Access数据库使用的是“System.Data.OleDb”,改成“System.Data.SqlClient”。(2)修改ADO.NET的对象。分别把OleDbConnection、OleDbCommand、OleDbDataReader和OleDbDataAdapter等对象修改成SqlConnection、SqlCommand、SqlDataReader和SqlDataAdapter等对象。(3)修改Connection对象的数据库连接串。操作Access数据库一般用:“"Provider=Microsoft.Jet.OLEDB.4.0;DataSource="+Server.MapPath("person.mdb");”修改为SQLServer连接串:“"server=localhost;database=pubs;uid=sa;pwd=''"”。\n案例名称:使用DataView对象程序名称:7-16.aspx<%@PageLanguage="C#"%><%@ImportNamespace="System.Data"%><%@ImportNamespace="System.Data.SqlClient"%>调用SQLServer的存储过程
查看更多