1、C#语言和数据库技术基础语言和数据库技术基础猛禽1 第第1章章 第一个第一个C#程序程序l.NET概述与C#应用.NET是Microsoft.NET的简称,是基于Windows平台的一种技术。它包含能在.NET Framework平台运行的所以编程语言。C#是微软将C,C+,Java等多种语言优点集于一身,专为.NET开发而设计的一种完全面向对象的编程语言。lIDE环境Visual Studio,它集成了.NET Framework,是目前最流行的.NET平台开发环境。2第第1章章 第一个第一个C#程序程序l新建程序1.启动Visual Studio 20102.新建项目3.生产可执行文件4.
2、开始运行经验l运行的快捷键:F5:启动。l运行的快捷键:Ctrl+F5:开始执行不调试3第第1章章 第一个第一个C#程序程序l认识控制台应用程序文件夹的结构Program.cs:该文件是项目的启动文件,在该文件中定义项目的启动入口,即Main()方法。HelloWorld.exe:这个文件位于binDebug目录下,是项目编译后生成的可执行文件,可以直接运行。l认识C#程序namespace l命名空间相当于Java中的packageusingl用来引用其他命名空间,相当于Java中的importclassl和Java一样表示类。Main()方法lstatic void Main(string
3、 args)lstatic void Main()lstatic int Main(string args)lstatic int Main()关键代码lConsole.WriteLine();/从控制台输出内容lConsole.ReadLine();/从控制台输入内容 4第第1章章 第一个第一个C#程序程序lC#中的数据类型C#中布尔类型为bool,字符串类型关键字为小写(string)。lC#中的变量语法l数据类型 变量名称;命名规则l组成:52个英文字母(AZ,az)、10个数字(09)、下划线(_),除此之外不能含有其他的字符。l开头:只能以字母或下划线开头。l不能使用的:不能是C#中
4、的关键字。l变量名称要语义化。l当多个单词组成变量名时,应该使用骆驼(Camel)命名法。5第第1章章 第一个第一个C#程序程序l常量定义:常量就是在程序运行过程中保持不变的值。语法lconst 数据类型 常量名称=值;命名规范l常量名称必须具有一定的实际意义。l常量名称最好以大写字母来命名,中间可以根据意义的连接性用下划线做连接,每个常量定义的右侧最好有一简单的注释,说明其作用。l常量名称最好不要超过25个字符,否则可读性差。6第第1章章 第一个第一个C#程序程序lConsole类C#向控制台输出(三种方式)lConsole.WriteLine();lConsole.WriteLine(要输
5、出的值);lConsole.WriteLIne(“格式字符串”,变量列表);C#向控制台读入lConsole.ReadLine();lint age=int.Parse(Console.ReadLine();7第第1章章 第一个第一个C#程序程序l自定义方法语法访问修饰符 返回类型 方法名(参数列表)/方法主体方法命名规范l方法名要有实际的含义,最好是动宾短语。l用Pascal命名法8第第1章章 第一个第一个C#程序程序l类和对象语法 访问修饰符 class 类名 /类的主体 l注释C#中行注释和块注释与Java是完全相同的,分别使用/和/*/。文档注释每一行都以”/”开头。l折叠把方法代码写
6、在#region和#endregion之间。9第第1章章 第一个第一个C#程序程序l调试程序的步骤如下:1.设置断点:按F9快捷键。2.启动调试:按F5快捷键。3.在监视窗口中查看变量的当前值。10第第2章章 C#语法快速热身语法快速热身lif条件结构简单if结构if(条件表达式)/代码块if-else结构if(条件表达式)/代码块1else/代码块2开始条件表达式代码块结束假真简单if结构的流程图开始条件表达式代码块1结束假真代码块2If-else结构的流程图11第第2章章 C#语法快速热身语法快速热身多重if结构if(条件表达式1)代码块1else if(条件表达式2)代码块2else i
7、f(条件表达式3)代码块3else代码块4If-else结构的流程图开始条件表达式1代码块1结束假真代码块2条件表达式2代码块3条件表达式3代码块4假假真真12第第2章章 C#语法快速热身语法快速热身 嵌套if结构 if(条件表达式1)if(条件表达式2)代码块1else代码块2 else 代码块3 开始条件表达式1代码块1结束假真代码块2条件表达式2代码块3真假嵌套if流程图13第第2章章 C#语法快速热身语法快速热身lif结构书写规范为了使if结构更加清晰,应该把每个if或else包含的语句都用大括号括起来。相匹配的一对if和else应该左对齐内层的if结构相对于外层的if结构要有一定的缩
8、进。l大括号按规范写法:C#中大括号“”和“”分别各占据新的一行。而 Jave中左大括号“”紧跟if结构的条件后面,右大括号“”则需要另起新的一行。lswitch结构switch结构中case字句的摆放是没有顺序的,可以把default字句放在最前面,但要注意任何两个case语句不能具有相同的值。case 中的值可以是 int,char,和string 类型,但必须是常量表达式,不允许使用变量。每个case和default语句中必须要有break语句。但如果case 字句不包含其他语句,就不需要break语句。14第第2章章 C#语法快速热身语法快速热身l一维数组 改错:int array=n
9、ew int50,1;l循环while循环 语法 while(条件表达式)代码块 do-while循环 语法 do 代码块 while(条件表达式);开始条件表达式代码块结束假真while循环的执行过程开始条件表达式代码块结束假真do-while循环的执行过程15第第2章章 C#语法快速热身语法快速热身 for循环 语法 for(表达式1,表达式2,表达式3)代码块 开始代码块结束假真for循环的执行过程条件表达式2条件表达式3条件表达式116第第2章章 C#语法快速热身语法快速热身lforeach循环 语法 foreach(类型 元素 in 集合或者组合)代码块 语法中的“元素”是一个只读变
10、量17第第2章章 C#语法快速热身语法快速热身l循环应用的区别如下while 循环是先判断条件表达式是否成立。若成立则执行循环体;否则结束循环。do-while循环先执行一次循环体再判断条件表达式是否成立。若成立则继续循环;否则结束循环。for循环必须使用整形变量做循环计算器,通过条件表达式限定计数器变量值来控制循环。foreach()自动遍历给定集合的所有值。18第第2章章 C#语法快速热身语法快速热身lbreak语句可以用在switch,for循环,foreach循环,while循环,do-while循环中lcontinue语句必须出现在for循环,foreach循环,do-while循环
11、,while循环中。l二重循环【代码演示】l冒泡排序外层循环n-1,内层循环n-1-I,【代码演示】19lC#中的访问修饰符lthis关键字 this关键字代表的是当前的对象。在类的内部,可以用this关键字访问它的成员。第第3章章 使用属性升级使用属性升级MyBank访问修饰符访问权限访问级别public 不受任何限制最高private只有类的内部可以使用最低20第第3章章 使用属性升级使用属性升级 MyBanklC#的属性这种结合了字段和方法的实现方式我们称为属性(propert)。语法 private string _name;public string Name get return
12、_name;set _name=value;属性的数据类型l属性的数据类型可以是一个类或一个数组。属性的访问类型l只读属性,只包含get访问器l只写属性,只包含set访问器l读写属性,包含get和set访问器封装字段快捷键lCtrl+R+E。21第第3章章 使用属性升级使用属性升级 MyBankC#中,一般为类的私有字段和属性的命名会采用不同的命名法。l在为类的私有字段命名时,要以下划线“_”开头,随后出现的英文字母采用Camel命名法。l在为类的属性命名时,采用Pascal命名法。C#中,字段和属性的区别:l通常将字段指定为private,在类内部使用。将属性指定为public,对外部公开,
13、通过get和set访问器对字段提供安全,有效范围的保护。C#中,属性和方法的区别:lC#中属性get访问器和set访问器后不需要使用“()”,因为访问器没有返回值,所以不需要指定void。22第第3章章 使用属性升级使用属性升级 MyBankl面向对象的特征之封装定义:封装是将数据和操作的方法保存在一起的技术,或是有选择地隐藏或公开类中的属性和方法的过程。封装为我们带来的好处l避免使用非法数据赋值l保证数据的完整性l避免类的内部发生修改时,导致整个程序的修改。l值传递和引用传递值传递是将变量的值复制一份传递给方法,使得改方法的形参和实参的值相同。在调用方法中修改形参也只是对实参复制品的数据更新
14、,并没有真正改变实参的值。引用传递是将要传递的对象的引用复制给方法的形参,使得被调用的方法直接对引用对象进行更改,会影响实参原来的值。(使用ref 关键字)23第第4章章 深入深入C#的的String 类类l常用字符串的处理方法Equals()Compare(string strA,string strB)IndexOf(string value)LastIndexOf(string value)Join(string separator,stringvalue)Split(char separator)Substring(int startIndex,int length)ToLower()
15、ToUpper()Trim()24第第4章章 深入深入C#的的String 类类l运算符=和String类方法Equals()的区别如下=:通常来比较int,double等数值类型的数据是否相等。Equals():通常用来比较两个对象的值是否相等。l“”和String.Empty的作用如下“”:为String对象分配了一个长度为0的存储空间。String.Empty:为对象分配了一个长度为0的存储空间。25第第4章章 深入深入C#的的String 类类lFormat格式化语法 String myString=String.Format(“格式字符串”,参数列表);其中格式字符串中包含固定文本和
16、格式项。格式项的形式如下:索引,对齐:格式字符串l格式化数值结果表26第第4章章 深入深入C#的的String 类类字符说明示例输出结果C货币格式String.Format(“0:C3”,2000)¥2000.000D十进制格式String.Format(“0:D3”,2000)2000F小数点后的位数固定String.Format(“0:F3”,2000)2000.000N用逗号(,)隔开的数字String.Format(“0:N”,250000)250,000.00P百分比计数法String.Format(“0:P3”,0.29768)29.768X十六进制格式String.Format(
17、“0:X000”,12)c27第第4章章 深入深入C#的的String 类类l简单的类型转换隐式类型转换l任何数值类型A,只要其取值范围完全包含在类型B的取值范围类,就可以隐式转换为类型B。显式类型转换lsum=(int)score+bonus;l注意:显式类型转换会丢失精度。l数值类型与字符串之间的转换字符串转换为数值型lint.Parse(string);lfloat.Parse(string);ldouble.Parse(string);数值型转换为字符串lstring myage=age.ToString();28第第4章章 深入深入C#的的String 类类l常用的Convert类的
18、类型转换方法 方法说明Conver.ToInt32()转换为整形(int型)Conver.ToSingle()转换为单精度浮点型(float型)Conver.ToDouble()转换为双精度浮点型(double型)Conver.ToString()转换为字符串类型(string型)29第第6章章 程序数据的集散地:数据库程序数据的集散地:数据库l什么是数据库?数据库是表和数据库访问对象的集合。其中表分类存储了不同的实体信息,每一行数据对应一个实体的描述信息。l当今常用数据库SQL ServerOracleDB2MySQL30第第6章章 程序数据的集散地:数据库程序数据的集散地:数据库l使用数据
19、库的好处:可以结构化存储大量的数据信息,方便用户进行有效的检索和访问。可以有效地保持数据信息的一致性,完整性,降低数据冗余。可以满足应用的共享和安全方面的要求。数据库技术能够方便智能化地分析,产生新的有用的信息。l实体实体是所有客观存在的、可以被描述的事物。l记录在数据库的表中,每一“行”(Row)实际上对应一个实体,这样的一行叫做“记录”(Record)。l字段表格中的每一列,通常叫做“列”,也可以称之为“字段”。31第第6章章 程序数据的集散地:数据库程序数据的集散地:数据库l数据库和数据库表数据库就是表的集合,逻辑上数据库包括数据表,存储表间关系的表以及各种关系对象l数据库管理系统和数据
20、库系统数据库管理系统(DBMS,DataBase Management System)是一种系统软件,由一个数据库和一组访问数据的程序构成。l数据库管理系统的基本目标是要提供一个可以方便有效地存取数据库信息的环境。l数据库管理系统的主要功能是维护数据库,并有效地访问数据库中各部分的数据。数据库系统(DBS,DataBase System)是一个实际可运行的系统,可以对系统提供的数据进行存储,维护和应用,它是由存储介质,处理对象和管理系统共同组成的集合体,通常由软件,数据库和数据库管理员组成。l数据库由数据库管理系统统一管理,数据的插入,修改,和检索都要通过数据库管理系统进行。l数据库管理员(D
21、BA,DataBase Administrator)在数据库系统中负责创建,监控和维护整个数据库,使数据能被有权限使用的人有效使用。32第第6章章 程序数据的集散地:数据库程序数据的集散地:数据库l数据冗余和数据完整性在数据库系统中,数据重复的现象就是数据冗余(Redundance)数据的完整性(Integrality)是指数据库中数据的准确性。l登陆SQL Server 数据库连接SQL Server 数据库时需要注意以下两点:l在连接SQL Server之前,SQL Server服务必须已经启动lSQL Server Management Studio 可以连接和管理多个其他计算机上的SQ
22、L Server数据库。SQL Server中数据库按照用途可以划分为如下两种:l系统数据库l用户数据库33第第6章章 程序数据的集散地:数据库程序数据的集散地:数据库lMicrosoft SQL Server 2008提供的系统数据库Master 数据库Tempdb数据库Model数据库Msdb数据库Resource数据库l新建数据库连接SQL Server支持两种身份认证lWindows 身份验证lSQL Server身份验证操作权限l固定的数据库操作权限有十个db_backupoperator权限可以备份数据库db_datareader可以读取数据库中的数据db_denydataread
23、er不允许读取数据34第第6章章 程序数据的集散地:数据库程序数据的集散地:数据库l创建数据库1.数据库文件(Database File)事务日志文件(Transaction Log File数据库文件是存放数据库数据和数据库对象的文件,一个数据库可以有多个数据库文件,一个数据库文件只属于一个数据库。当有多个数据库文件时,有一个文件被指定为主数据库文件(Primary Database File),主数据库文件的扩展名为.mdf,它用来存储数据库的启动信息数据。一个数据库只能有一个主数据库文件,其他数据库文件被称为次数据库文件(Secondary Database File)。2.事务日志文件
24、(Transaction Log File)事物日志文件用来记录数据库的更新情况。事物日志文件的文件扩展名为.ldf,一个数据库可以有一个或多个事物日志文件。35第第6章章 程序数据的集散地:数据库程序数据的集散地:数据库l数据库的选项兼容级别:数据库向以前的版本兼容的级别。数据库为只读:一般该选项都设置为False,如果设置为True,则该数据库将不允许再写入数据。访问限制:指定哪些用户可以访问该数据库,可能值有以下三种。lMultiple:数据库的正常状态,允许多个用户同时访问该数据库lSingle:用于维护操作的状态,一次只允许一个用户访问该数据库。lRestricted:只有管理员或者
25、特定的成员才能使用该数据库。自动关闭:如果设置为True的话,则最后一个用户退出后,数据库会关闭并且释放资源。对那些经常被使用 的数据库,此选项不要设置为True,否则会额外增加开关数据库带来的负担。自动收缩:如果设置为True的话,则该数据库将定期自动收缩,释放没有使用的数据库磁盘空间。36第第7章章 用表组织数据库用表组织数据库l数据完整性为了实现完整性,数据库需要做以下两方面的工作。l检验每行数据是否符合要求l检验每列数据是否符合要求为了实现以上要求,SQL Server提供了以下四种类型的约束(Constraint)。实体完整性约束l实体完整性约束要求表中的每一行数据都反映不同的实体,
26、不能存在相同的数据行。通过索引,唯一约束,主键约束,或标识列属性,可以实现表的实体完整性。域完整性约束l域完整性指的是给定输入的有效性。通过限制数据类型,检查约束,输入格式,外键约束,默认值,非空约束等多种方法,可以实现表的域完整性。引用完整性约束l在强制引用完整性时,SQL Server禁止用户进行下列操作当主表中没有关联的记录时,将记录添加到字表中。更改主表中的值并导致相关表中的记录孤立。从主表中删除记录,但是相关表中仍存在与该记录匹配的相关记录。l引用完整性通过主键和外键之间的引用关系来实现自定义完整性约束l用户自定义完整性用来定义特定的规则。37第第7章章 用表组织数据库用表组织数据库
27、l主键定义:主键用来唯一标识表中的每一行,用于强制表的实体完整性。一个表只能有一个主键,主键约束了表中的行是唯一的。在选择哪个列作为主键的时候,需要考虑以下两个原则:最少性和稳定性l最少性是指列数最少的键,如果可以从单个主键和组合主键中选择时,应该选择单个主键,这是因为操作一列比操作多列要快。当然该规则也有例外,例如,两个整数类型的列的组合比一个很大的字符类型的列要快。l稳定性是指列中数据的特征,由于主键通常用来在两个表之间建立联系,所以主键的数据不要经常更新,理想情况下,应该永远不改变。38第第7章章 用表组织数据库用表组织数据库l外键外键用来强制引用完整性。一个表可以有多个外键。lSQL
28、Server 中常用的数据类型binary,varbinary,image,char,varchar,nchar,nvarchar,text,ntext,datetime,int,smallint,tinyint,bigint,float,real,money,bit39第第7章章 用表组织数据库用表组织数据库l标识列标识列的数据是自动生成的,不能在该列上输入数据。l如果建立了主表和子表的关系,则有以下几种情况。子表中相关项目的数据在主表中必须存在。主表中相关项的数据更改了,则子表对应的数据项也应该随之更改。在删除子表之前,不能够删除主表。40第第8章章 用用SQL语句操作数据语句操作数据lS
29、QL简介SQL全称是“结构化查询语言(Structured Query Language)”SQL是针对数据库而言的一门语言,它可以创建数据库,数据表,可以针对数据库的数据进行增,删,改,查等操作,可以创建视图,存储过程,可以赋予用户权限等。lSQL的组成SQL语言主要由以下几部分组成。lDML(Data Manipulation Language,数据操作语言,也称为数据操纵语言):用来插入,修改和删除数据库中的数据,如INSERT,UPDATE,及DELETE等。lDDL(Data Definition Language,数据定义语言):用来建立数据库,数据库对象和定义其列,大部分是以CR
30、EATE开头的命令如CREATE TABLE,CREATE VIEW 及DROP TABLE等。lDQL(Data Query Language,数据查询语言):用来对数据库中的数据进行查询,如SELECT等。lDCL(Data Control Language,数据控制语言):用来控制数据库组件的存取许可,存取权限等,如GRANT,REVOKE等除此之外,T-SQL还包括变量说明,内部函数等其他的命令。41第第8章章 用用SQL语句操作数据语句操作数据lSQL中的运算符算术运算符+,-,*,/,%赋值运算符=比较运算符=,=逻辑运算符 AND,OR,NOTl使用INSERT插入数据语法lIn
31、sert into 表名(列名列表)values(值列表);l其中:into是可选的,也可以省略。表名是必须的表的列名是可选的,如果省略,将依次插入所有列。多个列名和多个值列表用逗号分隔。分号(;)是T-SQL语句终止符,分号不是必须的。42第第8章章 用用SQL语句操作数据语句操作数据l注意事项每次插入一整行数据,不可能只插入半行或者几列数据,但允许某些列为空或使用默认值。如果违反列的非空约束,那么插入语句会检验失败,不能成功插入数据。数据值的数目必须与列数相同,每个数据值的数据类型,精度和小数位数也必须与相应的列匹配。INSERT语句不能为标识列指定值,因为它的数字是自动增长的。对于字符类
32、型,日期类型的列,当插入数据的时候,用单引号()将其引起来。尽管可以不指定列名,但是最好明确指定插入的列和对应的值,以做到“心中有数”。如果在设计表的时候指定某列不允许为空,则该列必须插入数据,否则将报告错误信息。插入的数据项,要求符合检查约束的要求。(default可以为拥有默认值的列插入数据)43第第8章章 用用SQL语句操作数据语句操作数据l一次插入多行数据1.通过insert select 语句将现有表中的数据添加到已存在的表中注意查询得到的数据个数,顺序,数据类型等,必须与插入的项保持一致新表必须预先建好,并且具有列的相关属性。2.通过select into语句将现有表中的数据添加到
33、新表语法select identity(数据类型,标识种子,标识增长量)as 列名into 新表from 原始表注:该表不能预先存在3.通过union关键字合并数据进行插入44第第8章章 用用SQL语句操作数据语句操作数据l使用update更新数据语法update 表名 set 列名=更新值where 更新条件其中lset 后面可以紧随多个数据列的更新值,不限一个,使用逗号分隔。lwhere子句是可选的,用来限制更新数据的条件。如果不限制,则整个表的所有数据行将被更新。l使用delete删除数据语法delete from 表名where;提示delete语句只要删除就是删除整条记录,不会只删除
34、单个列,所以在delete后不能出现列名l使用truncate table删除数据truncate table删除表中的所以行,但是表的结构,列,约束,索引等不会被改动。truncate table 不能用于有外键约束引用的表,这种情况下,需要使用delete语句。truncate table 比delete执行速度快,使用的系统资源和事务日志资源更少,并且删除数据后表的标识列会重新开始编号。l导入和导出数据现场演示45第第9章章 数据查询基础数据查询基础l使用select语句进行查询语法 select from where order byASC或DESC1.查询所有的数据行和列 (*)2.
35、查询部分行和列 3.在查询中使用列的别名 (as)4.查询空值 (is null)5.在查询中使用常量列 6.查询返回限制的行数 (top)46第第9章章 数据查询基础数据查询基础lorder byASC 升序DESC 降序l在查询中使用函数常用的四类函数l字符串函数l日期函数l数学函数l系统函数47第第9章章 数据查询基础数据查询基础l部分常用的字符串函数charindex 用来寻找一个指定的字符串在另一个字符串中的起始位置len 返回传递给它的字符串长度upper 把传递给它的字符串转换为大写ltrim 清除字符左边的空格rtrim 清除字符右边的空格right 从字符串右边返回指定数目的
36、字符replace 替换一个字符串中的字符stuff 在一个字符串中,删除指定长度的字符,并在该位置插入一个新的字符串48第第9章章 数据查询基础数据查询基础l日期函数函数名函数名描述描述举例举例GETDATE取得当前的系统日期select getdate()返回:今天的日期例如:2009-12-25 12:00:00.000DATEADD将指定的数值添加到指定的日期部分后的日期select dateadd(mm,4,01/01/2009)返回:以当前的日期格式返回05/01/2009DATEDIFF两个日期之间的指定日期部分的间隔select datediff(mm,01/01/2009,0
37、5/01/2009)返回:4DATENAME日期中指定日期部分的字符串形式select datename(dw,01/01/2000)返回:Saturday或星期六DATEPART日期中指定日期部分的整数形式select datepart(day,01/15/2000)返回:1549第第9章章 数据查询基础数据查询基础l日期部分参数及其缩写日期部分参数缩写日期部分参数缩写yearyy,yyyyweekdaydw,wquarterqq,qhourhhmonthmm,mminutemi,ndayofyeardy,ysecondss,sdaydd,dmillisecondmsweekwk,ww50第
38、第9章章 数据查询基础数据查询基础l数学函数函数名描述举例RAND返回从0到1之间的随即float值select rand()返回:0.79288062146374ABS取数值表达式的绝对值select ABS(-43)返回:43CEILING向上取整,取大于或等于指定数值、表达式的最小整数select ceiling(43.5)返回:44FLOOR向下取整,取小于或等于指定表达式的最大整数select floor(43.5)返回:43POWER取数值表达式的幂值select power(5,2)返回:25ROUND将数值表达式四舍五入为指定精度select round(43.543,1)返回
39、:43.500SIGN对于正数返回+1,负数返回-1,对于0则返回0select sign(-43)返回:-1SQRT取浮点表达式的平方根select sqrt(9)返回:351第第9章章 数据查询基础数据查询基础l系统函数函数名描述举例CONVERT用来转变数据类型select convert(varchar(5),12345)返回:字符串12345CURRENT_USER返回当前用户的名字select current_user返回:你登录的用户名DATALENGTH返回用于指定表达式的字节数select datalength(中国A联盟)返回:5HOST_NAME返回当前用户所登陆的计算机
40、名字select host_name()返回:你所登录的计算机的名字SYSTEM_USER返回当前所登陆的用户名称select system_user返回:你当前所登录的用户名USER_NAME从给定的用户ID返回用户名select user_name(1)返回:从任意数据库中返回“dbo”52第第10章章 模糊查询和聚合函数模糊查询和聚合函数l模糊查询定义:模糊查询提取的数据不一定是确切的,查询者对查询条件也是模糊的,大概的,不特别明确的。模糊查询可以使用like关键字和通配符来进行。(is null查询严格来说也是一种模糊查询),模糊查询还可以基于某个范围内的查询和某些列举值内的查询53第
41、第10章章 模糊查询和聚合函数模糊查询和聚合函数l通配符定义:通配符是一类字符,它可以代替一个或多个真正的字符,查找信息时作为替代字符出现。通配符解释实例_一个字符A LIKE C_,则符合条件的A如CS,CD等%任意长度的字符串B LIKE CO%,则符合条件的B如CONST,COKE等括号中所指定范围内的一个字符C LIKE 9W01-2,则符合条件的C如9W01或9W02不在括号中所指定范围内的任意一个字符D LIKE 9W01-2,则符合条件的D如9W03或9W07等54第第10章章 模糊查询和聚合函数模糊查询和聚合函数l使用like进行模糊查询代码演示l使用between在某个范围内
42、查询区别 lbetween 20 and 40 lBetween 40 and 20l使用in在列举值内进行查询代码演示l聚合函数SUM()AVG()MAX()和MIN()COUNT()55第第11章章 联接查询和分组查询联接查询和分组查询l使用GROUP BY进行分组查询在select 列表中可以指定的列:l被分组的列l为每个分组返回一个值的表达式,如聚合函数计算出的列l使用HAVING子句进行分组筛选在select 语句中,WHERE,GROUP BY,HAVING子句和聚合函数的执行次序如下:WHERE子句从数据源中去掉不符合其搜索条件的数据;GROUP BY子句搜集数据行到各个组,HA
43、VING子句去掉不符合其他搜索条件的各组数据行。56第第11章章 联接查询和分组查询联接查询和分组查询l内联接定义:它根据表中共同的列来进行匹配。特别是两个表存在主外键关系时通常会使用到内联接查询1.在where 子句中指定联接条件2.在from子句中使用inner joinonInner join 用来联接两个表Inner可以省略On用来设置条件57第第11章章 联接查询和分组查询联接查询和分组查询l外联接查询外联接是至少返回一个表中的所有记录,根据匹配条件有选择性地返回另一张表的记录。1.左外联接查询lLeft joinonlJoin 后面的表是字表2.右外联接查询lRight joino
44、nlJoin后面的表是主表58第第14章章 使用使用ADO.NET访问数据库访问数据库lADO.NET简介ADO.NET是.NET Framework 中不可缺少的一部分,它是一组类。通过这些类,.NET可以与数据源进行连接并对数据进行增,删,改,查等操作。lADO.NET的主要组件.NET Framework 数据提供程序 包括以下四个核心对象lConnection 建立和特定数据源的连接lCommand 对数据源执行命令lDataReader 从数据源中读取只进且只读的数据流lDataAdapter 用数据源填充DataSet并解析更新DataSet 是专门为独立于任何数据源的数据访问而设
45、计的。使用它,可以不必直接和数据源打交道,可以大批量地操作数据,也可以将数据绑定在控件上。59第第14章章 使用使用ADO.NET访问数据库访问数据库lConnection对象作用:连接数据库连接数据库步骤:1.定义连接字符串l语法 Data Source=服务器名;Initial Catalog=数据库名;User ID=用户名;Pwd=密码;l创建Connection对象l语法 SqlConnection connection=new SqlConnection(connString);l打开和数据库的连接l语法connection.Open();60第第14章章 使用使用ADO.NET访
46、问数据库访问数据库lConnection对象常用的属性和方法属性说明ConnectionString设置/获取应用程序连接数据库的连接字符串方法说明Open()使用ConnectionString属性所指定的设置打开数据库连接Close()关闭与数据库的连接61第第14章章 使用使用ADO.NET访问数据库访问数据库l常见错误1.数据库连接字符串各参数之间的分隔符错误2.数据库连接字符串中参数名称拼写错误3.数据库连接字符串中引号出现的位置不正确l异常处理语法try/包含可能出现异常的代码catch(处理的异常类型)/处理异常的代码finally/无论异常是否发生,该段代码总会执行。62第第1
47、4章章 使用使用ADO.NET访问数据库访问数据库lCommand对象创建Command对象的方法语法SqlCommand command=new SqlCommand(SQL语句,Connection对象);使用Comman对象的步骤1.创建数据库连接 创建一个Connection对象2.定义执行的SQL语句 将对数据库执行的SQL语句赋给一个字符串3.创建Command对象 使用已有的Connection对象和SQL语句字符串创建一个Command对象4.执行SQL语句使用Command对象的某个方法执行命令。63第第14章章 使用使用ADO.NET访问数据库访问数据库lCommand对象
48、的主要属性和方法属性说明Connection Command对象使用的数据库连接CommandText执行SQL语句方法说明ExecuteNonQuery()执行不返回行的语句,如UPDATEExecuteReader()执行查询命令,返回DataReader对象ExecuteScalar()返回单个值,如执行COUNT(*)64第第15章章 使用使用ADO.NET查询和操作数据查询和操作数据lStringBuilder常用的属性和方法属性说明Capacity获取或设置可包含在当前对象所分配的内存中的最大字符个数Length获取或设置当前对象的长度方法说明Append()在结尾追加Append
49、Line()将默认的行终止符追加到当前对象的末尾AppendFormat()添加特定格式的字符串Insert()在指定位置插入指定字符串Remove()移除指定字符串65第第15章章 使用使用ADO.NET查询和操作数据查询和操作数据l注意:如果要将StringBuilder类对象转换为String类对象,唯一的方式是使用ToString()方法。StringBuilder类并不总能提高性能,它基本上在处理多个字符串时使用。如果只是连接两个字符串,使用System.String类会比较好。lDataReader 对象使用步骤1.创建Command对象2.调用Command对象的ExecuteR
50、eader()方法返回一个DataReader对象。3.调用DataReader 的Read()方法逐行读取查询结果集的记录。4.读取当前行的某列的数据。5.关系DataReader对象,调用它的Close()方法。66第第15章章 使用使用ADO.NET查询和操作数据查询和操作数据lADO.NET总结查询单个值需要使用Command对象的ExecuteScalar()方法创建Connection对象拼写SQL查询语句使用SQL语句和Connection对象创建Command对象打开数据库连接,调用Connection对象的Open()方法调用Command对象的ExecuteScalar()
©2010-2025 宁波自信网络信息技术有限公司 版权所有
客服电话:4008-655-100 投诉/维权电话:4009-655-100