c#程序设计期末总复习.ppt_第1页
c#程序设计期末总复习.ppt_第2页
c#程序设计期末总复习.ppt_第3页
c#程序设计期末总复习.ppt_第4页
c#程序设计期末总复习.ppt_第5页
已阅读5页,还剩70页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C 程序设计总复习 计算机科学与技术张荣高 考试题型 1 单项选择题 本大题共15小题 每小题1分 共15分 2 填空题 本大题共10空 每空1分 共10分 3 简答题 本大题共5小题 每小题6分 共30分 4 程序阅读题 本大题共5小题 每小题6分 共30分 5 程序填空题 本大题共3小题 每小题5分 共15分 第1章概述 NET框架包括两个主要组件 公共语言运行库 简称运行库 类库VS NET2008常用应用程序模板 控制台应用程序 使用统一的重定向文本输出形式 在命令行方式下运行 用于交互操作不多 主要偏重与内部功能实现的场合 Windows应用程序 实现窗体形式操作界面 主要用于交互性操作较多场合 ASP应用程序 通过Internet传递可以被客户浏览的页面 如各类网站以及基于Web的网络办公系统等 第1章概述 在C 中 using关键字有3个用途 作为引用指令指明引用的命名空间作为别名指令 用来简化命名空间的表达形式作为语句 用于定义一个范围应用程序的入口点规定为MainMain方法声明为publicstatic 除非有特殊理由 一般不要更改Main方法的声明Main方法的返回值只能是void或者intMain方法可以放在任何一个类中一个应用程序中必须有一个类包含Main方法 第2章数据类型与流程控制 C 数据类型分为两类 值类型和引用类型 值类型 简单类型 整型 浮点 decimal char bool枚举类型 enum结构类型 struct可空类型引用类型 引用类型的变量又称为对象类 object class string接口 interface数组委托 delegate 第2章数据类型与流程控制 数值类型的变量和引用类型的变量 两者最根本区别在于 数值类型的变量本身包含他们的数据 而引用类型的变量包含的是 指向包含数据的内存的引用或者叫句柄 对于数值类型 每个变量有一份自己的数据复制 因而也就不能通过操作其中的一个来影响到另一个 而对于引用类型 两个变量有可能引用同一个对象 因而也就可能通过操作其中的一个变量来影响也被另一个变量引用的对象 第2章数据类型与流程控制 有两种转换方式 隐式转换与显式转换 如果是不同类型之间的转换 可以使用Convert类Object类型 是所有其他引用类型的基类装箱 将值类型转换为object类型拆箱 将object类型转换为值类型控制台输出Console Write Console WriteLine 控制台输入Console ReadKey Console ReadLine 第2章数据类型与流程控制 循环语句for语句while语句do while语句 循环体内的程序至少会执行一次foreach语句 对集合 数组进行操作foreach语句用于逐个提取集合中的元素 并对集合中每个元素执行语句序列中操作的场合 注意循环变量是一个只读型的局部变量 foreach 类型标识符in表达式 语句序列 第2章数据类型与流程控制 if语句 根据布尔表达式的值选择要执行的语句序列switch语句也叫case语句switch条件表达式的值和每个case后的常量表达式可以是string int char enum或其它值类型每个case块的最后一句一定要是break语句break语句功能 break语句只能出现在循环结构和switch结构中 退出break语句所在循环结构和多分支结构continue语句功能 continue语句只能出现在循环结构中 不执行循环体中的后续语句 返回循环的开头进行新的循环处理 只能结束本次循环 第2章数据类型与流程控制 try catch语句在程序运行正常的时候 执行try块内的程序 如果try块中出现了异常 程序就转移到catch块中执行 try catch finally语句throw语句 第3章常用数据类型的用法 String类的表示方法 stringstr C test first cs stringstr C test first cs 取字符串中的某个字符的方法 stringmyString sometext charchFirst myString 2 结果为mstring Compare 比较字符串的内容 string Copy 将一个字符串内容原样复制到一个新字符串中string Format 格式化字符串Contains 查找一个字符串中是否包含指定的子字符串IndexOf 求某个字符或者子串在字符串中出现的位置 第3章常用数据类型的用法 Substring 截取字符串Remove 删除指定数量的字符Replace 字符串替换Insert 插入字符串Trim 删除首部和尾部空格string Join 在数组的每个元素之间串联指定的分隔符 从而产生单个串联的字符串 语法为 publicstaticstringJoin stringseparator string value Split 将字符串按照指定的一个或多个字符进行分离 从而得到一个字符串数组 常用语法为 publicstring Split paramschar separator 第3章常用数据类型的用法 String类实际表示的是一系列不可变的字符 说其实例是 不可变的 是因为无法直接修改给该字符串分配的堆中的字符串 例如myString andabitmore 实际操作并不是在原来myString所占内存空间的后面直接附加上第二个字符串 而是返回一个新String实例 即重新为新字符串分配内存空间 classProgram staticvoidChangeString strings s newstring staticvoidMain string args strings oldstring ChangeString s Console WriteLine s 第3章常用数据类型的用法 数组是一种引用类型 而不是值类型C 中可以有一维数组 多维数组 交错数组在C 中 数组的下标默认是从0开始索引的 int a newint 30 int b newint 3 5 Array Sort 升序Array Reverse 倒序Contains IndexOf Average Sum Max Min 第3章常用数据类型的用法 枚举 enum 是一组命名常量的集合 称为枚举成员列表 可以为一组在逻辑上密不可分的整数值提供便于记忆的符号 从而使代码更清晰 也易于维护enumdays Mon Tue Wed Thu Fri Sat Enum GetNames Enum GetValues 第3章常用数据类型的用法 泛型 Generic 是具有占位符 类型参数 的类 结构 接口和方法 它与普通类的区别是泛型多了一个或多个表示类型的占位符 这些占位符用尖括号括起来 例如 publicclassMyClass publicTMyProp get set 定义属性MyProppublicvoidPrint Console WriteLine MyProp 第3章常用数据类型的用法 List泛型类表示可通过索引访问的强类型对象列表 该类提供了对列表进行搜索 排序和操作的方法 Add 将指定值的元素添加到列表中AddRange 将指定值的元素集合添加到列表中Insert 在列表的中间插入一个新元素Contains 测试该列表中是否存在某个元素Remove 从列表中移除带有指定键的元素Clear 移除列表中的所有元素 第3章常用数据类型的用法 Math类位于System命名空间下 为三角函数 对数函数和其他通用数学函数提供常数和静态方法 Math Min Math Abs Math Sqrt Math PIRandom类用于生成随机数默认情况下 Random类的无参数构造函数使用系统时钟生成其种子值 而参数化构造函数可根据当前时间的刻度数采用Int32值 常用方法 Randomr newRandom inti r Next 10 第4章面向对象编程基础 构造函数 对类的成员进行初始化构造函数特点 每个类至少有一个构造函数 若程序代码中没有构造函数则系统会自动提供一个默认的构造函数一个构造函数总是和它的类名相同构造函数不包含任何返回值 包括void 构造函数通常是public的 若是private类型的 则该类不能被实例化 常用于只含有静态成员的类构造函数中不要进行初始化以外的事情 不要尝试显示调用构造函数 构造函数在创建对象时被调用 第4章面向对象编程基础 重载构造函数有时候可能会遇到这样的情况 在一个类中的多个方法中都要用到某一个数据成员 而该成员值必须从其他类中传递过来 这时 无参数的构造函数就不能胜任了 解决这个问题最好的办法就是 重载构造函数当字段和局部变量名相同时 如果要引用静态字段 可以使用形式 类名 字段名如果是实例字段 则使用形式 this 字段名静态成员 指定类名调用实例成员 指定实例对象调用 第4章面向对象编程基础 C 中有以下成员访问修饰符 Private 私有成员 在类的内部才可以访问Protected 保护成员 该类内部和继承类中可以访问Public 公共成员 完全公开 没有访问限制Internal 在同一命名空间内可以访问 第4章面向对象编程基础 属性的作用 可以限制外部对类中成员变量的存取权限 属性的声明和定义指定字段级别的访问指定属性的类型和名称声明get访问器和set访问器get 用来读取数据成员的值set 用来设置数据成员的值使用value的隐含参数 publicclassMyClass privateintnumber 0 publicintNumber get returnnumber set if value 0 number value 第4章面向对象编程基础 结构struct是由一系列相关的 但类型不一定相同的变量组织在一起而构成的数据表示形式 所有结构类型都隐式地从类型object继承结构和类的区别 结构是一个值类型 保存在栈上 类是一个引用类型 保存在受管制的堆上对结构中的数据进行操作比对类或对象中的数据进行操作速度要快一般用结构存储多种类型的数据 当创建一个很多类或对象共用的小型对象时 使用结构效率更高 第4章面向对象编程基础 方法是一组程序代码的集合 每个方法都有一个方法名 便于识别和让其他方法调用对于方法 参数传递分为值传递和引用传递两种 值参数 值传递 形参不加任何修饰符 引用参数 ref传递 形参以ref修饰符声明注意 作ref传递的实参必须初始化 调用时实参必须指明ref 输出参数 out传递 形参以out修饰符声明 能返回一个或多个值给用户 调用时实参必须指明out 数组参数 param传递 形参以param修饰符声明 数组默认的参数传递方式 第4章面向对象编程基础 方法重载 指具有相同的方法名 但参数类型或参数个数不完全相同的多个方法可以同时出现在一个类中面向对象的基本特征封装 将描述对象的数据及处理这些数据的代码组装在一起 形成一个不可分割的独立单位 类 并尽可能地隐藏对象的内部细节 只保留有限的对外接口使之与外界发生联系继承 就是指不需要编写相同的代码 子类可以从基类继承其全部属性和方法多态 所谓多态性就是指同一个名字可以代表不同 但相似的功能 程序运行时 面向对象的语言会自动判断对象的派生类型 并调用相应的方法 第5章面向对象的高级编程 两种实现继承的方式 类继承和接口继承 类继承只允许单一继承 接口可实现多重继承 被继承的类叫基类继承自其他类的类叫扩充类 扩充类继承了所有定义在基类中数据的定义和方法 但扩充类不继承基类的构造函数 第5章面向对象的高级编程 虚方法在基类中 如果想让某个方法或者事件被扩充类重写 可以使用修饰符virtual表明 publicvirtualvoidmyMethod 扩充类则用override重写 publicoverridevoidmyMethod 使用虚拟方法和重写方法时 要注意下面几个方面 虚拟方法不能声明为静态的 virtual不能和private一起使用 重写方法的名称 参数个数 类型以及返回值都必须和虚拟方法的一致 第5章面向对象的高级编程 隐藏基类的方法new作为运算符 用于创建对象和调用构造函数new作为修饰符 在扩充类中 隐藏基类中同名的方法或属性抽象类使用abstract修饰符 只能做基类抽象类与非抽象类的区别 抽象类不能直接被实例化 只能在扩充类中通过继承使用 对抽象类使用new运算符会产生编译时错误 抽象类可以包含抽象成员 而非抽象类不能包含抽象成员 当从抽象类派生非抽象类时 这些非抽象类必须具体实现所继承的所有抽象成员 第5章面向对象的高级编程 publicabstractclassA publicA Console WriteLine A publicvirtualvoidFun Console WriteLine A Fun publicclassB A publicB Console WriteLine B publicnewvoidFun Console WriteLine B Fun classProgram publicstaticvoidMain Aa newB a Fun 第5章面向对象的高级编程 C 在内部按照下列顺序处理构造函数 从扩充类依次向上寻找其基类直到找到最初的基类 然后开始执行最初的基类的构造函数 再依次向下执行扩充类的构造函数 直至执行完最终的扩充类的构造函数为止 用C 编写方法时 如果在扩充类中重写基类的方法 需要用override声明 要隐藏基类的方法 需要用new声明 这是C 进行版本控制的依据 调用非虚拟方法时不会受到版本的影响调用虚拟方法的实现部分可能会因扩充类的重写而影响执行结果 第5章面向对象的高级编程 classA publicvirtualvoidMethod Console WriteLine A Method classB A publicnewvirtualvoidMethod Console WriteLine B Method classC B publicoverridevoidMethod Console WriteLine C Method classProgram staticvoidMain Aa newA Bb newC Ac b a Method b Method c Method Console ReadLine 第5章面向对象的高级编程 使用interface声明一个接口 主要特点是只有声明部分 没有实现部分 定义在接口中的方法都是public的 接口成员的实现是通过类完成的 接口和抽象类区别 接口支持多继承 抽象类不能实现多继承 接口只能定义抽象规则 抽象类既可以定义规则 还可能提供已实现的成员 接口是一组行为规范 抽象类是一个不完全的类 着重族的概念 接口可以用于支持回调 抽象类不能实现回调 因此继承不支持 接口只包含方法 属性 索引器 事件的签名 但不能定义字段和包含实现的方法 抽象类可以定义字段 属性 包含有实现的方法 接口可以作用于值类型和引用类型 抽象类只能作用于引用类型 例如 struct就可以继承接口 而不能继承类 第5章面向对象的高级编程 委托类似与C 中的函数指针 不同的是C 语言的函数指针只能够指向静态的方法 而委托除了可以指向静态的方法之外 还可以指向对象实例的方法 委托最大特点是 它不知道或不关心自己引用的对象的类 委托的应用 回调机制 事件处理委托的声明和使用publicdelegatevoidFuncDelegate stringstr 第5章面向对象的高级编程 1 声明一个委托对象 其参数形式一定要和你想要包含的方法的参数形式一致 publicdelegatevoidMyDelegate 参数 2 定义所有你要定义的方法 其参数形式和第一步中声明的委托对象的参数形式必须相同 Method 参数 3 创建委托对象并将所希望的方法包含在该委托对象中 MyDelegateobjMyDelegate newMyDelegate 类 Method 4 通过委托对象调用包含在其中的各个方法 objMyDelegate 待传入参数 publicdelegatestringMyDelegate stringname publicclassProgram publicstaticstringFunctionA stringname return AsayHelloto name publicstaticstringFunctionB stringname return BsayHelloto name publicstaticvoidMethodA MyDelegateMe Console WriteLine Me 张三 publicstaticvoidMain MyDelegatea newMyDelegate FunctionA MyDelegateb newMyDelegate FunctionB MethodA a MethodA b Console ReadLine 第5章面向对象的高级编程 事件事件是响应用户对鼠标 键盘操作或自动执行某个与事件关联的方法的行为 事件和方法一样具有签名 签名包括名称和参数列表 事件的签名通过委托类型来定义 为事件定义委托的常用形式为 publicdelegateMyEventHandler Objectsender EventArgse 事件可以使用event关键字进行声明 例如 publiceventMyEventHandlerTriggerIt 若要引发该事件 可以定义引发该事件时要调用的方法 如下例所示 publicvoidTrigger TriggerIt 可以通过 和 运算符向事件添加委托来订阅或取消对应的事件 classTestEvent publicdelegatevoidMyEventHandler publiceventMyEventHandlerClick publicvoidTrigger Click publicvoidM1 Console WriteLine Hello publicvoidM2 Console WriteLine Helloagain publicvoidM3 Console WriteLine Good bye staticvoidMain TestEventmyEvent newTestEvent myEvent Click newMyEventHandler myEvent M1 myEvent Click newMyEventHandler myEvent M2 myEvent Click newMyEventHandler myEvent M3 myEvent Trigger myEvent Click newMyEventHandler myEvent M2 Console WriteLine 不再引发 Helloagain myEvent Trigger Console ReadLine 第6章窗体 控件和组件 1 窗体应用程序的启动和停止使用Application类提供的静态方法来启动 停止应用程序Application类提供的方法 Run方法 用于在当前线程上启动应用程序消息循环 并显示窗体staticvoidMain Application EnableVisualStyles Application SetCompatibleTextRenderingDefault false Application Run newForm1 第6章窗体 控件和组件 如何在代码中打开一个新窗体Form2fm newForm2 fm Show 或者fm ShowDialog 模式对话框是指用户只能在当前的对话框窗体进行操作 在该窗体关闭之前不能切换到程序的其他窗体 通过窗体的ShowDialog 方法显示 非模式对话框是指当前所操作的对话框窗体可以与程序的其他窗体切换 通过窗体的Show 方法显示Load 窗体载入事件 当窗体载入时触发该事件 例如运行应用程序时 窗体frmMain显示 则触发了frmMain的Load事件 第6章窗体 控件和组件 对话框用于与用户交互和检索信息 MessageBox对话框 调用MessageBox类的静态Show方法来显示消息对话框 返回值是MessageBoxResult枚举的值 其中每个值都等同于消息对话框可以显示的按钮之一 Show方法提供了多种重载形式 常用的重载形式有 publicstaticDialogResultShow stringtext publicstaticDialogResultShow stringtext stringcaption publicstaticDialogResultShow stringtext stringcaption MessageBoxButtonsbuttons MessageBoxIconicon 第6章窗体 控件和组件 Text 在消息框中显示的文本 caption 在消息框的标题栏中显示的文本 buttons MessageBoxButtons枚举值之一 指定在消息框中显示哪些按钮 枚举值有OK OKCancel YesNoCancel和YesNo icon MessageBoxIcon枚举值之一 指定在消息框中显示哪个图标 枚举值有None 不显示图标 Hand 手形 Question 问号 Exclamation 感叹号 Asterisk 星号 Stop 停止 Error 错误 Warning 警告 和Information 信息 Show方法的返回值是DialogResult枚举值之一 DialogResult枚举值有 None 消息框未返回值 OK Cancel Yes和No 第6章窗体 控件和组件 ColorDialog 提供颜色选择方法 ShowDialog 返回值 DialogResult类型FontDialog 提供字体选择 方法 ShowDialog 返回值 DialogResult类型用法如下 ColorDialogcolorDlg newColorDialog if colorDlg ShowDialog DialogResult OK textBox1 ForeColor colorDlg Color 第6章窗体 控件和组件 常用属性 Name 设置控件名称 代码中通过该属性来访问控件Text 设置控件上所要显示的文本 Enabled 决定控件是否可用Anchor 保持控件与边框距离不变 使控件随窗口一起动态调整大小Dock 让控件始终紧靠边框 第6章窗体 控件和组件 Timer组件 主要用于设置某个时间间隔 并在每次到达设置的时间间隔时 触发指定的事件 Enabled 设置Timer控件是否工作Interval 设置Tick事件间的时间间隔 以毫秒为单位Tick 每隔Interval毫秒触发一次Tick事件Button控件 主要用于接收用户的单击Click事件 当用户用鼠标单击或用Enter键按下命令按钮时 都会触发Click事件 从而执行相应的代码 达到某种特定操作的目的 Label控件 主要用于显示不希望被用户修改的静态文本 因为Label控件不能由用户直接对其进行编辑Text属性 第6章窗体 控件和组件 TextBox控件 主要用于文本输入 显示 编辑和修改Text 表示文本框中显示的内容ReadOnly 设置文本框中的文本内容是否只读Multiline 控制文本框中的文本内容是否多行显示PasswordChar 指定屏蔽密码字符时所使用的符号TextChanged 文本框的文本内容发生改变时触发 第6章窗体 控件和组件 列表类控件 ListBox控件 ComboBox控件 用于显示一组条目 以便操作者从中选择一条或者多条信息 并对其进行相应的处理 Items 表示列表项集合SelectedIndex 选中的列表项的索引号SelectedItem 选中的列表项的文本内容SelectedItems 选中的列表项集合Items Add Items AddRange Items Remove Items RemoveAt Items Clear SelectedIndexChanged 选择的列表项发生改变时触发 第6章窗体 控件和组件 ListBox控件的其他属性MutiColumn 决定是否可以以多列的形式显示各项 SelectionMode 选择列表项的方式ComboBox控件的其他属性DropDownStyle 组合框显示样式 有3种选择形式 删除选定的所有项for inti listBox1 SelectedItems Count 1 i 0 i listBox1 Items Remove listBox1 SelectedItems i 注意 删除操作一定是从选中的列表项集合中下标最大值开始删除 第6章窗体 控件和组件 CheckBox控件 RadioButton控件Checked True表示被选中 False表示未被选中CheckedChanged 用户更改按钮状态时触发DateTimePicker控件 用于对日期 年月日 和时间 时分秒 进行处理 控件提供一个可选择的日期范围 供用户选择 编辑日期或时间 Text 设置可转换为DateTime类型的字符串Value 当前的日期 时间值Format 设置可显示的日期 时间的格式ShowUpDown 是否使用up down控件调整日期 时间 第7章目录与文件管理 System IO命名空间中文件操作类 1 File2 FileInfo相同点 都能完成对文件的复制 移动 重命名 创建 打开 删除和追加到文件操作 不同点 FileInfo类提供实例化后的属性 方法File只提供静态方法 第7章目录与文件管理 File类1 判断文件是否存在 Exist FileName 2 复制文件 Copy sourceFileName destFileName booloverwrite 2 删除文件 Delete stringpath 3 移动文件 Move sourceFileName destFileName 注意 Move方法不提供创建目录的功能 要确保存在目标文件目录 第7章目录与文件管理 设置或获取属性1 对File类 用SetAttributes方法 GetAttributes方法设置 获取2 对FileInfo类 用Attributes属性设置 获取下面的代码演示了如何判断某个路径是目录还是文件 if File GetAttributes path 第7章目录与文件管理 OpenFileDialog控件和SaveFileDialog1 功能 用于显示用户打开文件的对话框 常用方法 ShowDialog SaveFileDialog用于显示保存文件对话框 提示用户选择文件的保存位置调用SaveFileDialog的ShowDialog方法 将打开 另存为 对话框 如果用户在单击 保存 按钮 则保存该文件 并返回DialogResult OK 否则返回DialogResult Cancel 第7章目录与文件管理 File类提供了非常方便的读写文本文件的方法 1 ReadAllText方法和AppendAllText方法ReadAllText方法打开一个文件 读取文件的每一行 将每一行添加为字符串的一个元素 然后关闭文件 publicstaticstringReadAllText stringpath Encodingencoding AppendAllText方法用于将指定的字符串追加到文件中 如果文件不存在则自动创建该文件 publicstaticvoidAppendAllText stringpath stringcontents Encodingencoding 第7章目录与文件管理 2 ReadAllLines方法和WriteAllLines方法ReadAllLines方法打开一个文本文件 将文件的所有行都读入一个字符串数组 然后关闭该文件 WriteAllLines方法创建一个新文件 在其中写入指定的字符串数组 然后关闭文件 如果目标文件已存在 则覆盖该文件 3 StreamReader类和StreamWriter类流是字节序列的抽象概念 流也是进行数据读取操作的基本对象 流提供了连续的字节流存储空间 流有如下几种操作 读取 从流中读取数据到变量中 写入 把变量中的数据写入到流中 定位 重新设置流的当前位置 以便随机读写 第7章目录与文件管理 StreamReader类提供了利用流来按行读取文本文件信息的方法 如果不指定编码 StreamReader的默认编码为UTF 8 而不是当前系统的ANSI编码 StreamWriter类提供了按行写入文本信息的方法 与StreamReader类似 如果不指定编码 StreamWriter默认使用UTF 8编码 而不是当前系统的ANSI编码 File类的Open方法先创建一个FileStream对象 然后使用FileStream对象对文件进行读取 写入 打开和关闭操作 读取C Readme txt文本文件publicstaticvoidMain string args stringfileName c ReadMe txt FileStreamfs newFileStream fileName FileMode Open FileAccess Read StreamReaderreader newStreamReader fs txtContent Text reader ReadToEnd fs Close 保存改写C Readme txt文本文件publicstaticvoidMain stringfileName C Readme txt FileStreamfs newFileStream fileName FileMode Open FileAccess Write StreamWriterwriter newStreamWriter fs writer Write txtContent Text writer Flush fs Close 第8章图形图像处理 GDI 坐标系中的基本结构Point 某个特定位置相对于原点的水平和垂直距离 例如Pointp newPoint 1 1 Size有两个整型属性来表示水平和垂直距离 Width和Height 例如 Sizes newSize 5 5 Rectangle用来指定矩形的坐标 它由一个Point和一个Size组成 其中Point表示矩形左上角 Size表示矩形大小Graphics对象的TranslateTransform 改变原点Graphics对象的PageUnit属性改变度量单位 第8章图形图像处理 绘制图形图像前 首先必须创建Graphics对象 然后利用这个对象绘制直线 曲线 椭圆等图形图像 有三种常见的创建Graphics对象的方法 1 在窗体或控件的Paint事件中获取Graphics对象2 通过当前窗体的CreateGraphics方法 把当前窗体的画笔 字体 颜色作为默认值 获取对Graphics对象的引用3 从继承自图像的任何对象创建Graphics对象 第9章ADO NET与数据操作 VS2008开发环境下使用的是ADO NET2 0 第9章ADO NET与数据操作 ADO NET数据提供程序的四个核心对象 1 Connection对象提供与数据源的连接 2 Command对象执行T SQL语句 包括返回数据 修改数据 运行存储过程以及发送或检索参数信息的数据库命令 3 DataReader对象从数据源中读取仅向前的 只读的数据流 4 DataAdapter对象可以执行针对数据源的各种操作 包括填充DataSet 更新变动数据到数据源中 并使对DataSet中数据的更改与数据源保持一致 SQLServer数据库 SqlConnection SqlDataAdapterOracle数据库 OracleConnection OracleDataAdapter 第9章ADO NET与数据操作 ADO NET使用SqlConnection对象与SQLServer进行连接 1 使用Windows集成安全身份验证 例如 stringconnectionString IntegratedSecurity SSPI Server localhost Database MyDatabase mdf 2 使用用户名 密码形式 例如 stringconnectionString server localhost uid sa pwd 123 database MyDatabase mdf 3 如果与SQLServerExpressEdition创建连接 可以直接使用附加数据库名的方式 连接字符串的一般形式为 stringconnectionString DataSource SQLEXPRESS AttachDbFilename DataDirectory DatabaseName IntegratedSecurity True ConnectTimeout 60 UserInstance True 第9章ADO NET与数据操作 需要在代码中添加对命名空间的引用 usingSystem Data SqlClient 可通过连接字符串直接创建SqlConnection对象 例如 SqlConnectionconn newSqlConnection connString 或者 SqlConnectionconn newSqlConnection conn ConnectionString connString 第9章ADO NET与数据操作 在ADO NET中 有两种操作数据库的方式 1 采用无连接的方式2 采用保持连接的方式不论采用哪种方式 都可以通过SqlCommand对象提供的方法传递对数据库操作的命令 并返回命令执行的结果在保持连接的方式下操作数据库的一般步骤为 1 创建SqlConnection的实例 2 创建SqlCommand的实例 3 打开连接 4 执行命令 5 关闭连接 第9章ADO NET与数据操作 SqlCommand对象提供了多种完成对数据库操作的方法 1 ExecuteNonQuery该方法执行SQL语句的结果 但不返回命令执行的表数据 仅返回操作所影响的行数2 ExecuteReader返回一个SqlDataReader对象3 ExecuteScaler 该方法用于执行SELECT查询 得到的返回结果为一个值的情况 比如使用count函数求表中记录个数或者使用sum函数求和等 第9章ADO NET与数据操作 第9章ADO NET与数据操作 privatevoidAddGrade using SqlConnectionconn newSqlConnection connectionString stringsql updateMyTable2set成绩 成绩 10where姓名 张三玉 SqlCommandcmd newSqlCommand sql conn listBox1 Items Clear try conn Open intnumber cmd ExecuteNonQuery listBox1 Items Add string Format 修改了 0 条记录 number catch Exceptionex listBox1 Items Add string Format 修改记录失败 0 ex Message 第9章ADO NET与数据操作 privatevoidShowMyTable1 using SqlConnectionconn newSqlConnection connectionString SqlCommandcmd newSqlCommand select fromMyTable1 conn listBox1 Items Clear try conn Open SqlDataReaderr cmd ExecuteReader while r Read listBox1 Items Add string Format 0 1 r 0 r 1 r Close catch Exceptionex MessageBox Show ex Message 读取记录失败 第9章ADO NET与数据操作 privatevoidCountMyTable2 using SqlConnectionconn newSqlConnection connectionString SqlCommandcmd newSqlCommand cmd Connection conn try conn Open cmd CommandText selectcount fromMyTable2where姓名like 王 intrecord int cmd ExecuteScalar cmd CommandText selectsum 成绩 fromMyTable2where姓名like 王 doublesumValue Convert ToDouble cmd ExecuteScalar MessageBox Show string Format 有 0 条姓王的记录 合计成绩为 1 record sumVal

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论