===========================NET==================================
NET框架的组成
--类库
--公共语言运行时
类型的分类
--值:存放实际的值,堆栈中(大多数类型/枚举/结构体)
--引用:存放地址,堆中(类/接口/数组/字符串)
装箱:值-->引用
拆箱:引用-->值(强转)
NET原理
NET语言----------->MSIL------------------------>机器代码
C# 微软中间代码 JIT即时编译
VB.NET exe,dll
C++
面向对象的三大特性
--继承
--封装
--多态
多态:不同对象相同方法的不同实现
命名空间:
--作用:1.解决命名冲突 2.条理和结构清晰
--定义:namespace 名称{}
--导入:
--using 命名空间;
--using 别名=命名空间.命名空间;
属性:1.自定义访问权限 2.验证数据的有效性
属性的公式:
public 类型 属性名
{
get { return ...; } // 取值
set { ... = value; } // 赋值
}
value关键字获得等号右边的值
索引器:能够用对象来方便访问数组或集合
注意:
--1.名称只能为this
--2.支持重载
公式:
public 类型 this[类型 标识符]
{
get { return ...; } // 取值
set { ... = value; } // 赋值
}
举例:假定类A中有数组strs,则访问方式如下:
正常:A a = new A(); a.strs[0] = "ABC";
索引器:A a = new A();a[0] = "ABC";
枚举 (enum):一组已命名的常量
注意点:
--1.初始值从0开始 (也可以帮它赋值)
--2.后一个在前一个基础上加1
公式:
public enum 枚举名称 : 数字的基础类型 (不能为char类型)
{
名称=初始值,
名称=初始值
}
转换:
枚举->String:枚举.ToString()
枚举->数字:(数字)枚举;
数字->枚举:(枚举)数字;
String->枚举:(枚举)Enum.Parse(typeof(枚举),字符串);
方法的重载:不同的数据实现相同的功能
--方法名称相同
--参数不同
--参数的个数
--参数的类型
方法的重写(override):子类从写父类的方法
只能重写abstract、virtual和override声明的方法
new关键字用来隐藏基类的成员
抽象类:
1.不能实例化的类
2.组成
--非抽象方法
--抽象方法:只有方法的定义,没有方法的实现
3.实现一种规范、约束
4.子类必须重写(override)抽象方法
(除非子类也是抽象类)
虚方法:
1.用virtual声明
2.virtual方法必须在基类中实现
3.子类可以重写(override)
构造函数:
1.与类名相同,无返回值
2.无显示的构造函数时,编译器会自动的创建无参的构造函数
3.在实例化时,自动调用
4.支持重载
继承:用现有类创建新类的过程,少写和重用代码
公式:
public class 子类: 父类,接口1,接口2...
{}
构造函数的顺序:父类->子类
base访问基类成员
sealed密封类不允许被继承
集合:管理一组对象
集合:System.Collections;
--ArrayList:以索引维护
--Hashtable:以Key-Value对维护
泛型集合:System.Collections.Generic;
--List<>:以索引维护
--Dictionary<,>:以Key-Value对维护
泛型的优点:
--1.类型安全性(编译时就会检查类型)
--2.性能高(没有装箱和拆箱)
--3.重用性
进程:程序在内存中的实例
线程:程序中单独的执行路径
进行包含一个或多个线程
线程
--导入命名空间:System.Threading;
--停顿:Thread.Sleep(毫秒);
文件的操作:System.IO;
--File:对文件操作
--Directory:对文件夹操作
文本文件的操作
--写:
// 定义文件流
FileStream fs = new FileStream(文件名,FileMode.Create);
// 定义写入器
StreamWriter sw = new StreamWriter(fs,Encondig.Default);
// 写入内容
sw.Write(内容);
// 关闭流
sw.Close();
fs.Close();
--读:
// 定义文件流
FileStream fs = new FileStream(文件名,FileMode.Open);
// 定义读取器
StreamReader sr = new StreamReader(fs,Encondig.Default);
// 读取内容
txtContent.Text = sr.ReadToEnd();
// 关闭流
sr.Close();
fs.Close();
设置MDI窗体
--父:IsMdiContainer = true;
--子:窗体 obj = new 窗体();
obj.MdiParent = this;
obj.Show();
异常Exception
--SystemException:系统异常
--ApplicationException:自定义异常
ADO.NET组件(NET程序访问数据的组件)
--DataSet数据集
--DataSet:数据集(内存中的数据库)
--DataTable:数据表
--NewRow():已表结构产生新行
--Rows:行集合
--Columns:列集合
--DataColumn:数据列
--ColumnName:列名
--DataType:数据类型
--MaxLength:最大长度
--AllowDBNull:是否允许为空
--DefaultValue:默认值
--Unique:是否唯一
--DataRow:数据行
--DataView:数据视图
--RowFilter:行筛选
--Sort:排序
--NET数据提供程序
--Connection:连接(程序和数据库之间的桥梁)
--Command:命令(能够执行数据的操作)
--CommandText:命令文本(SQL语句或存储过程名称)
--CommandType:命令类型(Text或StoredProcedure)
--ExecuteNonQuery:执行操作(添加/修改/删除),返回受影响的行数
--ExecuteReader:执行查询,返回DataReader
--ExecuteScalar:执行查询,返回第一行第一列
--DataReader:读取器(一条条读取,只读只进)
--DataAdapter:适配器(数据集和数据源之间的桥梁)
--Fill:填充(把数据源的数据填充到数据集)
--Update:更新(把数据集中的数据更新到数据源中)
从网格DataGridView获得内容:
--dataGridView1[列索引,行索引].Value
从数据集获得内容
--ds.Tables[索引|表名].Rows[行索引][列索引]
连接字符串
--服务器:server/data source
--登录名:uid/user id
--密码:pwd/password
--数据库:database/initial catalog 初始目录
--Windows集成验证:Integrated Security=SSPI
OleDb嵌入式连接方式
--SQLServer:Provider=sqlOledb;uid=sa;pwd=sa;database=pubs
--Access:Provider=Microsoft.jet.oledb.4.0;data Source=AAA.mdb
方法的输出:
--ref:引用,侧重于值的修改
--out:输出,侧重于值的输出(退出方法时,out参数必须赋值)
类中成员的访问:
--静态成员:类.成员;
--实例成员:类 obj = new 类(); obj.成员;
常量:不能修改的值
公式:const 类型 常量名=初始值;
Xml:可扩展标记语言(文本格式)
用途:
--1.标准的通信格式
--2.小型的DB
组成:
--声明:<?xml version="1.0" encoding="GB2312"?>
--元素:<名称 属性="值">文本</名称>
注意点:
--1.有且只有一个根元素
--2.区分大小写
程序对XML的操作:
--XmlDocument:xml文档
--Load:加载Xml文件
--DocumentElement:获得XML文件的根元素
--XmlNode:xml节点
--Name:名称
--InnerText:内部文本
--ChildNodes:子节点集合
--Attributes:属性集合
泛型接口:
1.自定义对象的比较(默认Sort方法就是对元素进行比较)
--1)实现IComparable<>接口
--2)实现CompareTo方法
具体如下:
public class 类:IComparable<类型>
{
public int CompareTo(类型 other)
{
// 实现比较
}
}
2.自定义的比较器
--1)创建类,实现IComparer<>
--2)实现Compare方法
--3)调用:Sort(new 比较器());
具体如下:
public class 类:IComparer<类型>
{
public int Compare(类型 obj1,类型 obj2)
{
// 实现比较
}
}
调用:集合.Sort(new 类());
接口:
--1.实现一种规范、约束
--2.接口是一种特殊的抽象类(接口里面全部是抽象方法)
--3.接口是对抽象类的扩展(可以多实现接口)
抽象类和接口选择的原则
--抽象类:is a
--接口:can do
序列化的公式:
// 产生文件流
FileStream fs = new FileStream("文件名",FileMode.Create);
// 产生二进制格式化器
BinaryFormatter bf = new BinaryFormatter();
// 将对象已二进制格式写入文件
bf.Serialize(fs,对象);
// 关闭流
fs.Close();
注意点:序列化的自定义对象,一定要加[Serializable]特性
如:
[Serializable]
public class 类{}
反序列化的公式:
// 产生文件流
FileStream fs = new FileStream("文件名",FileMode.Open);
// 产生二进制格式化器
BinaryFormatter bf = new BinaryFormatter();
// 将文件中的二进制数据重新构建为对象
类 对象 = (类)bf.Deserialize(对象);
// 关闭流
fs.Close();
修饰符:
--public:公共,所有地方都可以访问
--protected:保护,只有自己和派生类可以访问
--private:私有,只有自己可以访问
--internal:内部,只有本程序集可以访问
三层的优势:
1)开发时便于人员分工
2)方便维护和扩展
三层的结构:
表示层--------------------业务逻辑层-----------数据访问层------------- 模型层
与用户交互的界面 数据处理和传递 数据库操作 类库
WinForm 类库 类库 类库
**BLL **DAL **Model
**Manager **Service **
============================SQLServer============================
E-R图:实体关系图
--矩形:实体
--椭圆:属性
--菱形:关系
三大范式:
--1NF:有主键,列不可再分
--2NF:满足1NF,没有部分依赖(一个表只描述一件事情)
--3NF:满足2NF,没有传递依赖(非主键字段不能被非主键字段推出)
数据库的三类文件
--主数据文件:mdf(1个)
--次要数据文件:ndf(0-N个)
--日志文件:ldf(1-N个)
创建数据库
if exists(select * from sysdatabases where name='数据库名')
drop database 数据库名
go
create database 数据库名
on
(
name=逻辑名,
filename=物理名称,
size=初始化大小,
maxsize=最大大小,
filegrowth=文件增长大小/文件增长率
),
(
... -- 次要数据文件
)
log on
(
... -- 日志文件
)
创建表
if exists(select * from sysobjects where name='表名')
drop table 表名
go
create table 表名
(
字段1 类型 约束,
字段2 类型 约束,
...
)
go
添加约束
alter table 表名 add
constraint pk_列名 primary key(主键列), -- 主键
constraint uq_列名 unique(列), -- 唯一
constraint df_列名 default(默认值) for 列, -- 默认
constraint ck_列名 check(检查条件), -- 检查
constraint fk_列名 foreign key(外键) references 主表(主键) -- 外键
go
变量
--局部变量
--定义:declare @变量名 类型
--赋值:
--set @变量名 = 值,直接赋值
--select @变量名 = 值,从查询结果中赋值
--全局变量
--@@error:获得最后一句SQL的错误号
>0:错误
=0:正确
--@@rowcount:获得最后一句SQL受影响的行数
--@@identity:获得最新的自动编号
显示
--Print:文本显示
--Select:网格显示
别名
--Select 别名=值
--Select 值 as 别名
类型转换
--Cast(值 as 类型)
--Convert(类型,值)
查询公式:
select 字段
from 表
where 条件
group by 分组
having 分组后的条件
order by 排序
select 字段 into 新表
from 旧表
insert into 旧表1
select 字段 from 旧表2
事务的公式:
begin transation -- 开始事务
declare @errSum int
set @errSum = 0
操作1
set @errSum = @errSum + @@error
操作2
set @errSum = @errSum + @@error
...
if (@errSum <> 0)
rollback transaction -- 回滚事务
else
commit transaction -- 提交事务
go
索引的分类:
--聚集索引:数据的顺序和键的顺序一致(1个)
--非聚集索引:和数据的顺序无关(249个)
创建索引
if exists(select * from sysindexes where name='索引名')
drop index 表名.索引名
go
create nonclustered|clustered index 索引名
on 表(字段)
with fillfactor = 填充因子的数字
go
select * from 表(index=索引名)
创建视图
if exists(select * from sysobjects where name='视图名')
drop view 视图名
go
create view 视图名
as
查询语句
go
创建存储过程
if exists(select * from sysobjects where name='存储过程名')
drop procedure 存储过程名
go
create procedure 存储过程名
@参数 类型 [=默认值] [output],
@参数 类型 [=默认值] [output]
..
as
SQL语句
go
调用:
--默认:exec 存储过程名
--带返回参数
declare @变量 类型
exec 存储过程名 @变量 output
--带返回值
declare @变量 类型
exec @变量=存储过程名 参数1,参数2
分享到:
相关推荐
总结,ASP.NET提供了强大的工具和框架,让开发者能够快速构建功能丰富的Web应用程序。掌握页面生命周期、控件事件、视图状态和数据绑定等核心概念,以及熟练使用各种控件和WebPart技术,对于提升ASP.NET开发效率和...
**JDBC连接数据库经验总结** Java Database Connectivity (JDBC) 是Java编程语言中用于与关系数据库交互的标准API。它提供了一种规范,使得Java开发者能够使用标准的Java语句来执行SQL命令,从而实现对数据库的操作...
### TransCAD 学习经验总结知识点详述 #### 一、路网的建立 - **直接在 TransCAD 内新建**:适用于简单的路网构建,直接利用 TransCAD 的绘图工具绘制路网和分区。 - **从 AutoCAD 导入**: - 首先在 AutoCAD 中...
以下是一些关于PCB板绘制的关键经验总结: 1. **使用网络(NET)标注而非文本(TEXT)**:在绘制原理图时,确保所有管脚都用网络标注,而不是文本。这是因为网络标注在导入PCB时能自动匹配对应的电气连接,而文本...
### Protel使用经验总结 #### 一、元器件标号管理 在Protel的设计过程中,元器件标号的管理非常重要,正确的标号不仅方便后期的焊接与调试,还能提高电路板的整体美观度。 - **自动产生或重置元器件标号**:可以...
### PCB绘制经验总结 #### 一、概述 在电子产品的设计与制造过程中,PCB(Printed Circuit Board,印刷电路板)的设计占据了极其重要的地位。本文档基于Altium Designer 9(简称AD9)对PCB设计过程中的关键步骤与...
以下是对【InstallShield经验总结.doc】中提到的问题及解决方法的详细说明: 1. **安装模式选择**: - **Basic MSI Project** 适合对用户界面自定义需求不高的情况,它基于Windows Installer技术,提供简洁的安装...
在.NET领域,面试通常会涵盖多个关键知识点,包括但不限于基础语法、面向对象编程、框架理解、设计模式、数据库操作、网络编程、并发处理...同时,实践项目经验、问题解决能力和团队协作能力也是面试官通常关注的重点。
本学习笔记和经验总结将深入探讨Node.js的核心概念、主要特性、常用模块以及实战技巧,帮助你从零基础到熟练掌握Node.js。 一、Node.js核心概念 1. 非阻塞I/O模型:Node.js采用事件驱动、非阻塞I/O模型,提高了...
### .NET技术总结 #### 一、.NET与C#的发展历程 .NET Framework是由微软公司开发的一个软件框架,旨在提供一套全面的开发环境,支持多种编程语言,其中C#是最为重要的语言之一。C#是一种现代、面向对象的编程语言...
### 关于JSP做网站的经验总结 在进行JSP网站开发的过程中,经常会遇到各种各样的问题,例如TOMCAT突然挂掉、配置错误等。本文将根据个人经验,分享一些解决这些问题的方法,希望能对同样面临这些问题的开发者有所...
(含演示的demo)进阶项目实战经验总结,含常用框架、库介绍,从编码到服务端部署运维。目录介绍内置模块资源压缩-zlib(ok)文件系统操作-fs域名解析-dns(ok)网络服务-http(ok)网络服务-http-req(ok)网络服务-...
总结来说,这次.NET实习不仅为中南民族大学工商学院08级计算机应用专业的学生提供了一个宝贵的将课堂理论知识转化为实践技能的机会,还让他们认识到了实际工作中需要不断提升的动手能力和问题解决能力。通过这次实习...
总结来说,这篇文档主要分享了用友UAP报表.net控件开发的经验和知识,其中包括了存储过程的编写方法、报表控件的开发技巧、以及控件编译的详细步骤。开发者通过这些内容可以了解到在用友UAP报表工具下进行二次开发的...
本资源包是一个深度学习与计算机视觉的综合总结,旨在帮助初学者理解和掌握这个领域的基础知识。 首先,我们从基础的卷积神经网络(CNN)开始。CNN是一种专门处理二维图像数据的神经网络结构,通过卷积层、池化层...
PCB板的绘制经验总结: (1):画原理图的时候管脚的标注一定要用网络 NET不要用文本TEXT否则导PCB设计的时候会出问题 (2):画完原理图的时候一定要让所有的元件都有封装,否则导PCB的时候会找不到元件 ...
计算机NET专业实习总结 在为期两周的实习过程中,我们对所学的计算机NET专业课程进行了实践性的回顾和深化理解。实习不仅巩固了我们的理论知识,还让我们有机会将这些知识应用于实际项目中,尤其是针对网站的设计、...
### .NET平台与C#编程概述 #### 一、.NET框架简介 .NET框架是由微软公司推出的一个软件框架,它的核心目标在于为...无论是对于初学者还是经验丰富的开发者来说,掌握.NET框架的基本原理和高级特性都是非常有价值的。