第1章
第一个 C#程序
一..NET 是 Microsoft.NET 的简称,是基于 Windows 平
二.Program.cs:该文件是项目的启动文件,在该文件中
定义项目的启动入口,即 Main()方法。在 C#中,程序
源文件以.cs 作为扩展名。
三.HelloWorld.exe:这个文件位于 bin\Debug 目录下,
是项目编译后的可执行文件,可以直接运行。
四.C#关键字
1.namespace 关键字:namespace(命名空间)是 C#
中组织代码的方式,它的作用类似于 Java 中的 package
(包) 这样我们就可以把密切相关的一些代码放在同,
一个命名空间中,大大提高管理和使用的效率。
2.using 关键字:
使用 Using 关键在来引用其他命名空间。
3.class 关键字:
不要求类名必须与源文件的名字一样。
4.Main()方法:是程序运行的入口
5.关键代码:
Console.WriteLine();
//从控制台输出内容
Console.ReadLine();
五.C#中数据类型
//从控制台输入
1.整型:int。2.浮点型:float。3.双精度型:double。
4.字符串:string。5.布尔型:bool。
六.C#中变量命名的规则:
1.组成: 个英文字母52(A-Z、 、 个数字a-z) 10(0-9)、
下划线(_),除此之外不能包含其他字符。
2.开头:只能以字母或下划线开头。
3.不能使用的:不能使用 C#中的关键字。
七.常用的输出方法有两个:
1.Console.WriteLine(),输出后换行
2.Console.Write(),输出后不换行
第2章
一.switch 结构:
C#语法快速热身
switch (int/char/string 表达式)
{
Case 常量表达式 1:
语句 1;
break; //必须有
}
二.一维数组:
数据类型[ ]
数组名;
//创建一个含有
//省略数组长度
//省略 new 关键
1.Int[ ] array=new int[5]{0,1,2,3,4,};
五个整型数组的数组
2.int[ ] arra1=new int[] { 0,1,2,3,4};
3.int[ ] arra2={0,1,2,3,4};
字
三.通过数组的 Length 属性,可以获得数组长度,通常
会用它来作为循环终止条件
语法:数组名.Length;
同 Java 一样,访问数组的元素使用的形式如下,下标
从 0 开始,C#中我们也把下标叫做索引。数组名[下标]
四.foreach 循环:
each 是每个的意思, foreach 结构用于遍历一个数据
集(如数组)的每一项,需要设置一个标识符(变量)
语法:
Foreach(类型 元素 in 集合或者数组)
{
代码块
}
语法中的“元素”是一个只读变量
五.循环应用的区别如下:
1.while 循环是先判断条件表达式是否成立。若成立则
实行循环体;否则结束循环
2.do-while 循环先执行一次循环体再判断条件表达是
否成立。若成立则继续循环,否则结束循环
3.for 循环必须使用整型变量做循环计算器,通过条件
表达式限定计数器变量值来控制循环
4.foreach()自动遍历给定集合的所有值
六.冒泡排序算法:
1.N 个数字来排队,两两相比小靠前
2.外层循环 N-1,内层循环 N-1-i;
3.如果要降序排序,只要把程序中的大于号换成小于
号就行了
第3章
使用属性升级 MyBank
一.访问修饰符:访问修饰符是用来修饰类成员字段和
方法的符号,依次限定类成员的可访问级别
private(私有的)
如果将类的成员(变量或者方法)声明为 public,就
表示这些成员可以被其他类访问。如果使用 private 限
定类成员的访问权限,那么这些类成员就只能在该类
里面使用,其他类对它们没有访问权限
如果将某个字段或者方法声明为 public,就表示其他
类可以访问这个字段和方法;如果声明为 private,那
么该字段或者方法只能在本类中使用,其他类不能访
问
二.C#中的访问修饰符:
1.public 不受任何限制访问级别最高
2.private 只有类的内部可以使用访问级别最低
注:如果在成员定义之钱没有制定访问修饰符,那么
这个类成员的访问权限默认为 internal,它只能在本项
目内访问
三.this 关键字:
this 是指当前对象本身,通过 this 可以引用当前类的
成员变量和方法,使用 this 关键字可以解决成员变量
和局部变量名称冲突问题
四.用属性实现字段分装:
1.C#的属性:
如果要访问类中的字段,需要通过 get 和 set 访问器实
现,这种结合了字段和方法的实现方式我们成为属性
(property)。
2.get 访问器用来返回相应的私有字段的值,get 访问器
与方法相似,必须用 return 语句返回字段的值
3.set 访问器用来设定希相应的私有字段的值,set 访
问器类似于返回类型为 void 的方法,它使用一个隐含
的输入参数 value
4.属性的数据类型:
定义类中的一个属性是,属性的数据类型必须与它所
访问的字段类型一致
5.属性的访问类型:
只读属性:只包含 get 访问器
只写属性:值包含 set 访问器
读写属性,包含 get 和 set 访问器
五.编程规范:
1.在为类的私有字段命名时,要以下划线“_”开头,
随后出现的英文字母采用 Camel 命名法,即以第一个
单词的首字母小写,如果字段由多个单词组成,其后
单词的首字母大写
2.在为类的属性命名时,采用 Pascal 命名法。即组成
属性名称的多个单词的首字母要大写
3.封装字段的快捷键是:Ctrl+R+E
六.封装的优点:
1.避免使用非法数据赋值
2.保证数据的完整性
3.避免内部发生修改时,导致整个程序的修改
六.按引用传递参数:
要想使参数按引用传递,需要使用 ref 关键字来修饰
参数
第4章
1.bool Equals(string
深入 C#的 String 类
value):比较一个字符串与另一个
一.常用的字符串处理方法
字符串 value 的值是否相等,如果二者相等返回 true,
如果不相等返回 false,该方法的作用与运算符“==”
相同
2.int Compare(string str A ,string str B):比较两个字符串
的大小关系,返回一个整数,如果 str A 小于 str B,返
回值小于 0,如果 str A 等于 str B,返回值为 0,如果
str A 大于 str B,返回值大于 0
3.int IndexOf(string value):获取指定的 value 字符串在
当前字符串中第一个匹配项的位置,如果找到了 value,
就返回它的位置,如果没有找到就返回-1.
4.int
LastIndexOf(string
value):获取指定的字符串
value 在当前字符串字符串中最后一个匹配项的位置,
如果找到了 value,就返回它的位置,如果没有找到,
就返回-1.
5.string Join(string
separator, string[] value):把字符串
数组 value 中的每个字符串用指定的分割符 separator
连接,返回连接后字符串
6.string[] Split(char
7.string
8.string
9.string
10.string
separator): 用 制 定 的 分 割 符
separator 分割字符串,返回分割后的字符串数组
Substring(int startdex, int length):从制定的位
ToLower():获取字符串的小写形式
ToUpper():获取字符串的大写形式
Trim():去掉字符串前后两端多余的空格
置 startIndex 开始检索长度为 length 的子字符串
二.运算符==和 String 类方法 Equals()的区别如下:
1.==通常用来比较 int,double 等数值类型的数据是否
相等
2.Equals()通常用来比较两个对象的值是否相等
三.“”和 String.Empty 的区别如下:
1.“”为 String 对象分配一个长度为零的储存空间
2.String.Empty 不会为对象分配储存空间
四.Foramt 格式化:
String myString=String.Format(“格式字符串” 参数列
表);
五.格式化数值结果表:
C:货币格式
D:十进制格式
F:小数点后的位数固定
N:用逗号(,)隔开的数字
P:百分比计数法
X:十六进制格式
五.简单的类型转换:
1.隐式类型转换
2.显示类型转换
六.数值类型与字符串之间的转换
1.字符串转换为数值型:
控制台接收整数:
int.Parse(Console.ReadLine());
字符串转换为整型的代码:
Int.Parse(string);
字符串转换为单精度浮点型的代码:
float.Parse(string);
字符串转换为双精度浮点型:
Double.Parse(string);
2.数值型转换为字符串:
第6章
程序数据集散地:数据库
一.使用数据库的必要性:
1.可以结构化存储大量的数据信息,方便用户进行有
效的检索和访问
2.可以有效地保持数据信息的一致性,完整性,降低
数据冗余
3.可以满足应用的共享和安全方面的要求
4.数据库技术能够方便智能化地分析,产生新的有用
信息
二.数据库的基本概念:
1.实体:是所有客观存在的,可以被描述事物,这些
都被称为实体
2.记录:每一“行”实际上对应一个实体,这样的一
行,在数据库中,通常叫做一条记录
3.表格中的每一“列” 如编号,,姓名,年龄,民族等,
在数据库中,通常叫做“列”,也可称之为“字段”
三.数据库管理系统和数据库系统
1.数据库管理系统、DBMS 是一种系统软件,由一个
互相关联的数据集合和一组访问数据的程序构成。数
据库管理系统的主要功能是维护数据库,并有效的访
问数据库中各个部分的数据。
2.数据库系统、DBS、是一个实际可运行的系统,可以
对系统提供的数据进行存储,维护和应用,它是有存
储介质,处理对象和管理系统共同组成的集合体,通
常有软件、数据库和数据管理员组成
3.数据库管理员、DBA 在数据库系统中负责创建,监
控和维护整个数据库,使数据能被有权使用的人有效
使用
四.数据冗余和数据完整性
1.在数据库系统中,数据重复的现象就是数据冗余
2.数据的完整性是指数据库的准确性
五.数据库按照用途可以划分为如下两种
1.系统数据库 2.用户数据库
系统数据库是管理和维护 SQL
六.数据库操作权限:
1.db_backupoperator 权限可以备份数据库
2.db_datareader 可以读取数据库中的数据
3.db_denydatareader 不允许读取数据
七.创建数据库
1.数据库文件:一个数据库可以有一个后多个数据库
文件,一个数据库文件只属于一个数据库,当有多个
数数据库文件时,有一个文件被定义为主数据库文件,
主数据库文件的扩展名为.mdf,它用来存储数据库的
启动信息数据。一个数据库只能有一个主数据库文件,
其他数据库文件被称为次数据库文件。
Server 所必须的数据
库,用户数据库是用户自己建立的数据库
2.事物日志文件:事物日志文件用来记录数据库的更
新情况,在对数据库进行操作的时候,数据库中内容
更改的操作信息都会记录在此文件中,事物日志文件
的文件扩展名为.ldf,一个数据库可以有一个或多个事
物日志文件
3.文件组:类似于文件夹,文件组主要用于分配磁盘
空间并进行管理,每个文件组有一个组名,与数据库
文件一样,文件组也分为主文件组和此文件组
八.数据库关注选项:
1.兼容级别 2.数据库为只读 3.访问限制 4.自动关闭 5.
自动收缩
九.数据库的管理和维护
1.分离和附加数据库:移动数据库分亮不进行,首先
是分离数据库,然后是附加数据库
2.备份和还原数据库:
四种数据库备份方式:1.完全备份 2.差异备份 3.事物
日志备份 4.文件和文件组备份
第7章
一.数据完整性
用表组织数据
1.实体完整性约束:要求表中的每一行数据都反应不
同的实体,不能存在相同的数据行,通过索引、唯一
约束、主键约束或标识列属性,可以实现表的实体完
整性
2.域完整性约束:域完整性指的是给定列输入的有效
性,通过限制数据类型、检查约束、输入格式、外键
约束,默认值、非空约束等多种方法,可以实现表的
完整性
3.引用完整性约束:在输入或删除数据行时,引用完
整性约束来保持表之间已定义的关系
4.自定义完整性约束:
二.主键和外键
1.主键:需要一个列,这个列的值用来标识表中的每
一行,用于强制表的实体完整性,这样的列定义为表
的主键,一个表只能有一个主键
2.外键:外键用来强制引用完整性,一个表可以有多
个外键
三.确定列的数据类型:1.二进制数据类型 2.文本数据
类型 3.日期和数据类型 4.数字数据类型 5.货币数据类
型 6.bit 数据类型
第8章
操纵语言
用 SQL 语句操作数据
一.SQL 的组成:1.DML:数据操作语言,也成为数据
2.DDL:数据定义语言 3.DQL 数据查询语言 4.DCL 数据
控制语言
二.SQL 中的预算符
1.算数运算符 2.赋值运算符 3. 比较运算符 4. 逻辑运
算符
三.使用 T_SQL 插入数据
1.使用 INSERT 插入数据:
语法:INSERT
列表 )
2.一次插入多行数据:通过 INSERT SELECT 语句将现
有表中的数据添加到已存在的表中
例:INSET INTO AddressList (姓名、地址、电子邮件)
SELECT SName, SAdress, SEmail
FROM Students
3.通过 SELECT INTO 语句将现有表中的数据添加到新
表中:
语法:SELECT
增长量)AS 列名
IDENTITY(数据类型,标识种子,标识
[INTO]
表名[列名列表] VALUES
(值
INTO 新表
FROM 原始表
4.通过 UNION 关键字合并数据进行插入
5.使用 UPDATE 更新数据:
语法:UPDATE 表名 SET 列名 = 更新值 [WHERE 更新
条件]
6.使用 T_SQL 删除数据
语法:DELETE
[FROM]
表名 [WHERE<删除条件>]
7.使用 TRUNCATE TABLE 删除数据
第9章
语法:
SELECT <列名>
FROM<表名>
数据查询基础
一.使用 SELECT 语句进行查询
[WHERE<查询条件表达式>]
[ORDER BY<排序的列名>[ASC 或 DESC]]
1. 查询所有的数据行和列:
SELECT * FROM Students
2. 查询部分行或列
3. 在查询中使用列的别名
4. 查询空值:在 SQL 语句中采用“IS NULL”或者“IS
NOT NULL”来判断是否为空:
SELECT
IS NULL
5. 在查询中使用常量列
6. 查询返回限制的行数
二.查询排序
如果需要按照一定顺序排列查询语句选中的行,则
需要使用 ORDER
BY 子句,并且排序可以是升序
(ASC)或者降序(DESC)如果不指定 ASC 或者 DESC,,
记录集按默认 ASC 升序排序
三.在查询中使用函数
1.字符串函数:
CHARINDEX:用来寻找指定的字符串在另一个字符
串中的起始位置
LEN:返回传递给它的字符串长度
RIGHT:从字符串右边返回指定数目的字符,右边去字
符
REPLACE:替换一个字符串中的字符
2.日期函数:
GETDATE:取得当前的系统日期
DATEADD:将指定的数值添加到指定的日期部分后的
SName
FROM Students
WHERE SEmail
日期
DATEDIFF:两个日期之间的指定日期部分间隔
DATENAME:日期中指定部分的字符串形式
DATEPART:日期中指定日期部分的整数形式
3.数学函数:
RAND:返回从 0 到 1 之间的随机 float 值
CEILING:向上取整,取大于或等于指定数值,表达式
的最小整数、大于它的最小整数
FLOOR:向下取整数,取小于或等于指定表达式的最
大整数、小于它的最大整数
ROUND:将数值表达式四舍五入为指定精度
4.系统函数:
CINVERT:用来转变数据类型
第 10 章
来进行
模糊查询和聚合函数
一.模糊查询:模糊查询可以使用 LIKE 关键字,通配符
1.通配符:通配符是一类字符,它可以代替一个或多
个真正的字符,查找信息时作为替代字符出现
-:一个字符
CS、Cd 等
示例:A LIKE
’C_’,则符合条件的 A 如
%:任意长度的字符串
如 CONST、COKE 等
B LIKE ‘CO%’,则符合条件的 B
C LIKE ’WO[1-2]’,
D LIKE
[]:括号中所指定范围内的一个字符
则符合条件的 C 如 9W01 或 9W02
[^]:不在括号中所指定范围内的任意一个字符
二.使用 BETWEEN:在某个范围内进行查询:
‘9W0[^1-2]’,则符合条件的 D 如 9W03 或 9W07 等
例:查询分数在 60(含)到 80(含)之间的信息:
SELECT *FROM
Score BETWEEN 60 AND 80
三.使用 IN 在列举值内进行查询:
例: 查询北京、广州、或者上海的学生姓名:
SELECT SName AS 学生姓名 FORM Students WHERE
SAdress
IN(‘北京’,’广州’,’上海’)ORDER BY SAdress
四.聚合函数:
1.SUM():返回表达式中所有数值的总和
2.AVG():返回表达式中所有数值的平均值
3.MAX():返回表达式中的最大值
4.MIN():返回表达式中的最小值
5.COUNT():返回提供的组或记录集中的计数,另外也
可以使用星号(*)作为 COUNT 的表达式
第 11 章
联接查询和分组查询
一.使用 group by 进行分组查询
二.使用 having 子句进行分组筛选
group by 后面一般跟字段
--------------------------------------------------
----having 分组后筛选 、where 查询后筛选
--where 子句:用来筛选 from 子句中指定的操作所产生
的行
--group by 子句:用来分组 where 子句的输出
--having 子句:用来从分组的结果中筛选行
--------------------------------------------------
--------总结(内联查询)
三.多表联接查询:
--1.inner join .... on
select a 表.列名,b 表.列名
from a 表 inner join b 表
on a 表.主键=b 表.外键
where 条件 and ......
--2.where
select a 表.列名,b 表.列名
from a 表,b 表
where a 表.主键=b 表.外键 and .......
--交叉查询 cross join
--完整联接 Full join
--总结
--左外联 left join ...on(会把 left 左边表的数据全部显
示)null
--右外联 right join ...on(会把 rigth 左边表的数据全部
显示)null
第 14 章
使用 ADO.NET 访问数据库
一.ADO.NET 的主要组件:
1..NET Framework 数据库提供程序:专门为数据处理
以及快速地只进、只读访问数据而设计的组建。
2.DataSet(数据集):是专门为独立于任何数据源的数
据访问而设计的
二..NET Framework 数据提供程序的四个核心对象:
1.Connection:建立与特定的数据源的连接
2.Command:对数据源执行命令
3.DataReader:从数据源中读取只进且只读的数据流
4.DataAdapter:用数据源填充 DataSet 并解析更新
总结:
一.查询单个值:
1.创建连接字符串
string
str="server=.;database=
数
据
库
名;uid=sa;pwd=sa";
2.创建 connection 对象
SqlConnection connection=new SqlConnection(str);
3.打开数据库连接
connection.Open();
4.创建 Sql 语句
string sql="";
5.创建 command 对象
SqlCommand
SqlCommand(sql,connection);
6.执行 sql 命令
int
result=Convert.ToInt32(command.ExecuteScalar());
(转换)
7.关闭数据库连接
connection.Close();
二.查询若干条记录:
需要使用 Command 对象的 ExecuteReader()方法,步
骤如下:
1.创建 Connection 对象
2.拼写 SQL 查询语句
command=new
3.使用 SQL 语句和 Connection 对象创建 Command 对
象
4.打开数据库连接,调用 Connection 对象的 Open()方
法
5.调用 Command 对象的 ExecuteReader()方法,返回一
个 DataReader 对象
6.在循环中使用 DataReader 对象的 Read()方法,逐行
读取记录。如果读到记录则返回 true,否则返回 false。
7.使用(type)dataReader[列名或索引]的方式读取这一
行中某一列的值
8.调用 DataReader 对象的 Close()方法,关闭 DataReader
对象
9.操作完成后关闭数据库连接,调用 Connection 对象
的 Close()方法
三.数据更新操作:
对数据库执行数据更新操作时(包括增加,修改,删
除数据)都使用 Command 对象的 ExecuteNonQuery()
方法,步骤如下:
1.创建 Connection 对象
2.拼写 SQL 增删改语句
3.使用 SQL 语句和 Connection 对象创建 Command 对
象
4.打开数据库连接,调用 Connection 对象的 Open()方
法
5.调用 Command 对象的 ExecuteNonQuery()方法执行
命令,返回数据库中受影响的行数
6.操作完成后关闭数据库连接,调用 Connection 对象
的 Close()方法
Command 对象的三种方法的对比如下所示:
ExecuteScalar()方法:执行查询操作,并返回结果集中
的第一行和第一列
ExecuteReader()方法:执行查询操作,返回 DataReader
对象
ExcutenNonQuery()方法:执行添加、修改、删除操作、
返回受影响的行数