C#基础.docx
- 文档编号:7009781
- 上传时间:2023-01-16
- 格式:DOCX
- 页数:21
- 大小:69.86KB
C#基础.docx
《C#基础.docx》由会员分享,可在线阅读,更多相关《C#基础.docx(21页珍藏版)》请在冰豆网上搜索。
C#基础
C#复习总结
C#是纯OOP语言(面向对象)
.netframework是运行平台
.net是基于C#的一门技术
.netframework集成了多语言开发工具
使用VisualStudio创建和运行C#控制台应用程序的步骤?
(1)启动VisualStudio2010
(2)新建项目
(3)生成可执行文件
(4)开始运行
C#采用命名空间组织程序,引入其他命名空间用using关键字
C#中namespace为命名空间,后接项目名
C#中的Main方法与java的区别:
Java中main方法只有一种写法
C#中Main方法首字母大写,且有四种写法
1.默认写法
2.有返回值
3.有参
4.无参
C#中的源文件扩展名为:
.cs
C#生成的可执行文件扩展名为:
.exe
C#中F5为调试启动(如果没有问题,程序一闪而过),Ctrl+F5为开始执行不调试(不闪)
Console.WriteLine();为换行打印
Console.Write();为不换行打印
Console.Read();输入返回一个int值
Console.ReadLine();输入返回String类型
C#常用数据类型
常用数据类型
Java
C#
举例
整型
int
int
年龄
浮点型
float
float
成绩
双精度型
double
double
圆周率
字符串
String
string
姓名
布尔型
boolean
bool
是否少数民族
C#中变量命名规范
1.变量名不能出现英文字母,数字,下划线以外的任何字符
2.变量名只能以字母或下划线开头
3.不能使用C#关键字
4.多个英文字母组成时,以骆驼命名法命名
什么是常量?
常量就是在程序运行过程中保持不变的值
如何定义常量?
Const数据类型常量名=值;
常量名命名规范
1,常量名要有意义
2,常量名以全大写命名,每个定义的常量要注释
3,常量名不宜过长,否则可读性差
C#中如何定义方法?
访问修饰符返回值类型方法名(参数列表)
{
方法体
}
方法命名规则
1.方法名要有意义
2.方法名以Pascal命名法命名
如何创建类?
访问修饰符class类名
{
类的主体
}
C#的注释
单行注释:
//
多行注释:
/**/
文档注释:
///
C#的分支结构及循环结构。
以及与java的异同点
if(true)
{
代码块
}
if语句中代码块,如果为true时,执行代码块,如果为false时,该语句直接结束
流程图
if–else语法
if(条件)
{
代码块1
}
else
{
代码块2
}
流程图:
多重if:
多重if用于解决连续区间值的判断
else只能有一个单独的,也可以省略
在编码前要想好代码的逻辑顺序安排,否则执行结果改变
句式:
if(条件1)
{
代码块1
}
elseif(条件2)
{
代码块2
}
else
{
代码块3
}
流程图
嵌套if书写规范:
1.避免错误,每个if和else及包含的代码块用大括号括起来
2.代码要有缩进.
3.相匹配的一对if和else应该左对齐
嵌套if句式
if(条件1)
{
if(条件2)
{
代码1
}
else
{
代码2
}
}
else
{
代码块3
}
流程图
switch语法
switch(int,char,string)
{
case常量表达式1:
语句1;
break;
case常量表达式2:
语句2;
break;
……
default:
语句n;
break;
}
C#中的switch注意事项
1.C#中可以有string类型的表达式
2.switch语句中,至少要有一个break
3.case后只要有语句,就必须加break;
4.C#中default必须有break,如果default放在第一个时,可以没有break
5.case后面的常量值不可以重复
C#中的数组
四种数组形式:
int[]arrs=newint[5];
int[]arrs=newint[5]{0,1,2,3,4};数组定义长度必须与元素个数一致
int[]arrs=newint[]{0,1,2,3,4};
int[]arrs={0,1,2,3,4};
while循环
特点:
先判断,后执行,如果条件不满足,退出循环
表达式中只能有bool值
使用循环是要检查循环是否能够正确安全退出
使用循环要遵循先找循环条件后找循环操作的原则
while循环的语法及流程图
while(循环条件表达式)
{
循环操作部分
}
do-while循环
特点:
先执行,后判断,无论任何情况都至少循环一次
do-while循环的语法及流程图
do
{
循环操作
}while(循环条件);
for循环
在循环固定的情况,首选for循环
for循环的步骤
1.初始部分
2.条件判断
3.循环操作
4.更新循环变量
注意:
变量有自己的作用域
for循环的语法:
for(表达式1;表达式2;表达式3)
{
循环操作部分
}
表达式1为初始部分
表达式2为循环条件
表达式3为迭代部分
注意点:
在程序运行结束时,迭代部分是自动累加的结果
如;
for(inti=1;i<=5;i++)
{
}
5次循环后,i的值为6
for循环语法中,表达式都可以省略,但不可以省略分号
如:
for(;;){
}
此情形下语法正确,但是缺少表达式2,表达式3会出现死循环
foreach循环:
foreach(数据类型元素in集合或数组)
{
代码块
}
foreach的循环是个只读循环
跳转语句:
1.break
在循环中遇到break,会结束当前循环,break改变程序控制流.
break后面跟代码无意义
特点:
break通常在循环中与条件语句一起使用
2.continue
continue表示结束本次循环,进入下次循环
特点:
大部分用在判断语句中,配合if结构
continue只能在循环中使用
什么是二重循环?
二重循环就是一个循环体中包含另一个完整的循环结构,各种循环都可以相互正确嵌套
二重循环中的跳转语句:
break:
表示结束本层循环,进入下一层循环
continue:
结束本次循环,进入下一次循环
break示意图
for(………)
{
for(……….)
{
……
break;
……
}
…..
}
continue示意图
for(………)
{
for(…….)
{
…….
continue;
…….
}
…….
}
冒泡排序:
冒泡排序外层循环因为需要与自己比,所以长度减1
内层循环因为已经找到最大或最小数,所以不需要再比一次,因此内层循环为长度-1-i
C#的字段及属性的封装
1.Public访问修饰符的成员可以被其他类访问,private访问修饰符修饰的成员只能被类本身访问。
this关键字代表的是当前的对象,在类内部可以用this访问它的成员。
C#属性可以利用get访问器获得字段的值,利用set访问器设置字段的值,在访问器中可以对数据进行约束。
语法:
privatestringname;
publicstringName
{
get{returnname;}
set{name=value;}
}
封装是将数据和操作的方法保存在一起的技术,或是由选择性地影藏公开类中的属性和方法的过程。
方法的参数传递有两种方式,即按值传递和按引用传递。
按值传递的是值,不会改变本身的值,引用传递,传递的是自身的地址,一旦修改,本身的值也发生变化
Ref关键字修饰的参数可以讲被调用的方法中的参数更新值传递回调用者。
注意方法定义处和调用处ref要一一对应
SQLServer数据库的使用
为什么使用数据库?
用数据库来管理数据,将使数据的存储,检索变得更加安全和高效
数据库是表和数据库访问对象的集合,其中表分类存储了不同的实体信息,每一行数据对应一个实体的描述信息
数据冗余
数据库中存在一些重复的数据,数据完整性是指数据库中的数据能够正确的反映实际情况,数据库中允许有一些数据冗余看,但是要保持数据的完整性
连接SQL之前应先启动服务,建库之前建好使用该数据库的用户
数据库的注意事项
检验每行数据是否符合要求
检验每列数据是否符合要求
实体完整性约束
实体完整性
是要求表中的每一行数据都反映不同的实体,不能存在相同的数据行
通过索引,唯一约束,主键约束,或标识列属性,可以实现表的实体完整性
域完整性约束
域完整性指的是给定列输入的有效性
通过限制数据类型,检查约束,输入格式,外键约束,默认值,非空约束等方法,可以实现表的域完整性
引用完整性约束
在输入或删除数据行,引用完整性约束用来保持表之间已定义的关系
引用完整性通过主键和外键之间的引用关系来实现
自定义完整性
用户自定义完整性来定义特定的规则
主键
用来唯一标识表中的每一行,用来强制表的实体完整性,这样列定义为表的主键,一个表只能有一个主键,主键约束确保了表中的行是唯一的
设置主键时要考虑最少性和稳定性
外键
建立一种引用的关系,确保字表中的某个数据项在主表中必须存在,避免以上错误发生
外键的值要求与主表的主键或者唯一键相对应,外键用来强制引用完整性,一个表可以有多个外键
标识列的实现方式
如果一列的数据属于数字类型,则可以吧该列定义为标识列
定义成标识列后,还需要分别制定标识种子和标识增量,默认值都是1
定义了标识列后,在以后每次输入数据的时候,该列岁数据行的增加而自动增加,并且不会重复,第一次的数字就是标识种子值,每次按照标识递增量增加数值
如果建立了主表和字表的关系,则有以下几种情况
1字表中相关项目的数据在主表中必须存在
2主表中相关项的数据更改了,则字表对应的数据项也应当随之更改
3在删除字表之前,不能够删除主表
SQL简称“结构化查询语言”
使用INSERT插入数据
Insertinto表名(列名列表)values值列表;
1其中into是可选的,也可以省略
2表名是必须的
3表的列名是可选的,可以省略,将依次插入所有列
4多个列名和多个值列表用逗号分隔
5分号是终止符,不是必须的
在插入数据的行数,需要注意以下事项
1每次插入一整行数据,不可能只插入半行或者几列数据,但允许某些列为默认值,如果违反列的非空约束,那么插入语句会检验失败,不能成功插入数据
2数据值的数目必须与列数相同,每个数据值的数据类型,精度和小数位数也必须与相应的列匹配
3insert语句不能为标识列指定值,因为它的数字数自动增长的
4对于字符类型,日期类型的列,当插入数据的时候,用单引号将其引起来
5尽管可以不制定列名,但是最好明确制定插入的列和对于的值
6如果在设计表的时候制定某列不允许为空,则该列必须插入数据,否则将报告错误信息
7插入的数据项,要求符合检查约束的要求
一次插入多行数据
1Insertinto表名(列名)
Select列名
From表名
插入注意:
1查询得到的数据个数,顺序,数据类型等,必须与插入的项保持一致
2表必须预先创建好,并且具有列
2通过selectinto语句将现有表中的数据添加到新表中
注意,这个新表是执行查询语句的时候创建的,不能够预先存在
2select列名into新表,from原始表。
这个插入不需要建表,系统会自动分配。
通过UNION关键字合并数据进行插入
Insert表名(列名)
Select……….union
最后不要union
使用UPDATE更新数据
Update表名set列名=更新值where更新条件
其中set后面可以紧随多个数据列的更新值,不限一个,用逗号分隔
Where是可选的,用来限制更新数据的条件,如果不限制,则整个表的所有数据行将被更新
TRUNCATETABLE用来删除表中的所有行,但是执行速度快,使用的系统资源和事务日志资源更少,并且删除后表的标识列会重新开始编号。
TRUNCATETABLE删除表中的所有行,但是表的结构,列,约束,索引不会被改动。
Deletefrom是删除整条记录,不会只删除单独列
使用select查询
Select列名
From表名
Where查询条件表达式
Orderby排序的列名
查询所有的数据行和列
Select*from表名
查询空值
Select列名from表名where列名isnull
查询返回限制的行数
Selecttop返回数字列名
From表名
Where条件
1.常用的字符串函数
函数名
作用
CHARINDEX
寻找一个指定的字符串在另一个字符串中的起始位置
LEN
返回传递给它的字符串长度
UPPER
把传递给它的字符串转换为大写
LTRIM
清除字符左边的空格
RTRIM
清除字符右边的空格
RIGHT
从字符串右边返回指定数目的字符
REPLACE
替换一个字符串中的字符
STUFF
在一个字符串中,删除指定长度的字符,并在该位置插入一个新的字符串
2.常用的日期函数
函数名
作用
GETDATE
取得当前的系统日期
DATEADD
将指定的数值添加到指定的日期部分后的日期
DATEDIFF
两个日期之间的指定日期部分的间隔
DATENAME
日期中指定日期部分的字符串形式
DATEPART
日期中指定日期部分的整数形式
2.常用的数学函数
函数名
作用
RAND
返回从0到1之间的随机float值
ABS
取数值表达式的绝对值
CEILING
取大于或等于指定数值、表达式的最小整数
FLOOR
取小于或等于指定表达式的最大整数
POWER
取数值表达式的幂值
ROUND
将数值表达式四舍五入为指定精度
SIGN
对于正数返回+1,对于负数返回-1,对于0则返回0
SQRT
取浮点表达式的平方根
通配符
‘_’
一个单个字符的模糊查询
‘%’
任意长度的字符的查询
[]
范围查询,查询的条件要满足[]中的范围的一个字符
[^]
范围查询,查询的条件要不包含[^]中的范围的一个字符
使用Like进行模糊查询
Select*fromstudentswhereSnamelike‘张’
使用between在某个范围内进行查询
Select*fromScorewhereScorebetween40and60
使用in在列举值内进行查询
SelectSnameas学生姓名fromstudentswhereSaddress
In(‘北京’,’广州’,’上海’)orderbySAddress
Sum
查询当前列的数值的总和
Avg
查询当前列的数值的平均值
Min
查询当前列的数值的最小值
Max
查询当前列的数值的最大值
Count
查询当前列满足条件的数值的出现次数
Groupby
先对所有表信息分组,如果有聚合函数,再进行函数运算的结果
使用Groupby关键字时,在select列表中可以指定的列是有限制的,仅允许以下几项
1被分组的列
2为每个分组返回一个值的表达式,例如聚合函数计算出的列
3Having字句
Having字句是用来对where分组后的数据进行筛选的
Where-----Groupby-----Having
在select语句中,Where,Groupby,Having子句和聚合函数的执行次序如下,where语句从数据源中去掉不符合其搜索条件的数据,Groupby子句搜集数据行到各个组中,统计函数为各个组计算统计值,Having子句去读奥不符合其组搜索条件的各组数据行
多表联接查询
需要从多个表中选择或者比较数据项
内联接
最典型的,最常用的联接查询,它根据表中共同的项来进行匹配,特别是两个表存在主外键关系时通常会使用内联接来查询
Select列名
From表名1,表名2
Where
或
Select列名
From表名1
Innerjoin表名2on条件
外联接
至少返回一个表中的所有记录,根据匹配条件有选择性的返回另一个表的记录,外联接可以使左外联接或者右外联接
内联接通常会用比较运算符来判断两列数据值是否相等。
使用innerjoinon关键字或者where子句来进行表之间的关联
内联接中
Innerjoin用来联接两个表
Inner可以省略
ON用来设置条件
As指定表的别名,如果查询的列名在用到的两个或多个表中不重复,则对这一列的引用不必用表名来限定
内联接的结果是从两个或两个以上表的组合中挑选出符合联接条件的数据,如果数据无法满足联接条件则将其丢弃。
在内部联接中,参与链接表的地位之平等的
与内部联接相对的方式称为外部联接。
在外部联接中参与联接的表又主从之分,以主表的每行数据匹配从表的数据列,将符合联接条件的数据直接返回到结果集中,对那些不符合联接条件的列,将被填上NULL(空值)后再返回到结果集中
左外联接的结果集包括leftjoin子句中指定的左表的所有行,而不仅仅是联接列所匹配的行,如果左表的某行在右表中没有匹配行,则在相关联的结果集行中右表的所有选择列均为空值。
左外联接使用leftjoinon或者leftouterjoinon关键字来进行表之间的关联
右外联接的结果集包括leftjoin子句中指定的右表的所有行,而不仅仅是联接列所匹配的行,如果右表的某行在左表中没有匹配行,则在相关联的结果集行中左表的所有选择列均为空值。
右外联接使用rightjoinon或者rightouterjoinon关键字来进行表之间的关联
ADO.NET基础
.ADO.NET是.NETFramework中的一组允许应用程序与数据库交互的类
ADO.NET的两个主要组件
.NETFramework数据提供程序和DataSet
NET四大核心对象
Connection:
建立与特定数据源连接
Command:
对数据源执行命令
DataReader:
从数据源中只读只进的数据流
DataAdapter:
用数据源填充DataSet并解析更新
Connection对象的用途
用于建立应用程序与数据库之间的连接,需要定义连接字符串,必须显示打开和关闭数据库连接。
Command对象的用途
允许向数据库传递请求,检索和操作数据库中的数据,即数据库的操作
Command对象的方法以及属性
属性:
Connection:
Command对象使用的数据库连接
CommandText:
执行的SQL语句
方法:
ExecuteNonQuery():
执行返回影响行数的语句
ExecuteReader():
执行查询命令,返回DataReader对象
ExecuteScalar():
返回单个值,如执行COUNT(*)
出现异常如何处理
可以使用try-catch-finally语句处理异常。
1.StringBuilder类与System.String类的区别
String类具有不变性;
StringBuilder类常用来处理字符串的修改删除等操作
关于SqlDataReader对象
DataReader对象是一个只进、只读的数据流,每次从数据源中提取一条记录。
使用DataReader对象可以获得一个数据集。
通过Command对象的ExecuteReader()方法返回一个SqlDataReader对象。
读取DataReader对象中的数据时,每调用一次Read()方法将获得一行数据
完成数据查询后的注意事项:
必须要使用Close()方法来关闭DataReader
使用Command对象的ExecuteNonQuery()方法可以执行数据源的增删改操作。
使用ExecuteNonQuery()方法返回受影响的行数
查询单个值的步骤
创建连接对象
加载字符串
创建SQL语句
打开连接
创建操作对象
使用Command的ExecuteScalar()方法执行并返回结果
关闭数据库连接
查询若干条记录的步骤:
创建连接对象
加载字符串
创建SQL语句
打开连接
创建操作对象
调用Command对象的ExecuteReader()方法,返回一个DataReader对象
在循环中调用DataReader对象的Read()方法,逐行读取记录,如果读到记录则返回true,否则false
使用(type)dataReader[列名或索引]的方式读取这一行某一列的值
调用DataReader对象的Close()方法,关闭DataReader
关闭数据库连接
数据更新操作步骤:
创建连接对象
加载字符串
创建SQL语句
打开连接
创建操作对象
调用Command对象的ExecuteNonQuery()方法执行命令,返回数据库中受影响的行数
关闭数据库连接
Command对象的三种方法
ExecuteScalar():
执行查询操作,并返回结果集中的第一行第一列。
ExecuteReader():
执行查询操作,返回DataReader对象。
ExecuteNonQuery():
执行添加、修改、删除操作,返回受影响的行数
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C# 基础