




已阅读5页,还剩29页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第8讲数据库编程 数据库基础知识数据库访问技术ADO NET数据库访问 8 1数据库基础知识 基本概念 数据库关系模型表主关键字MSSQLServer MSAccess MySql OracleSQL语句 增删改查SELECT FROMContactWHERE Sex True ORDERBYNameASCINSERTINTOContact Name Sex Values Mary false UPDATEContactSETBirthDate 1980 2 2 WHEREName Mary DELETEFROMContactWhereName Mary 存储过程 CREATEPROCEDUREUpDateContactByName Name ASUPDATEContactSETContact BirthDate 1982 5 6 WHERE Contact Name Name Go 8 2数据库访问技术 ADO NET作用与ADO相同 但与 NETFrameWork无缝集成 能访问XML 提供断开式的数据访问模型 8 3ADO NET数据库访问 ADO NET组成 分 NET数据提供程序和DataSet两部分 前者用以实现各类数据操作 后者是ADO NET断开式数据访问模型的核心 依靠DataAdapter类与数据库通信 NETFramework数据提供程序的具体实现有两个 分别是SQLServer NET数据提供程序和OLEDB NET数据提供程序 前者可高效访问SQLServer7 0以上版本的数据库 后者更通用 使用两种 NETDataProvider访问数据库 ADO NET访问ACCESS举例 控制台输出数据 usingSystem usingSystem Data OleDb 人工引入usingSystem Data 人工引入 classProgram staticvoidMain string args OleDbConnectionconn newOleDbConnection stringconnStr Provider Microsoft Jet OLEDB 4 0 DataSource D 教学 dotnet ContactDb mdb PersistSecurityInfo False conn ConnectionString connStr conn Open if conn State ConnectionState Open Console WriteLine ok OleDbCommandcmd conn CreateCommand cmd CommandType CommandType Text cmd CommandText select fromcontactorderbyNameASC OleDbDataReaderrd cmd ExecuteReader while rd Read Console WriteLine 0 1 2 3 rd GetInt32 0 rd GetString 1 rd GetBoolean 2 男 女 rd GetDateTime 3 ToShortDateString rd Close conn Close ADO NET访问MSSQLServer数据库举例 SqlConnectionconn SqlDataReaderreader try conn newSqlConnection stringconnStr DataSource local InitialCatalog students userId bb password bb 也可用saconn ConnectionString connStr conn Open if conn State ConnectionState Open MessageBox Show 接通 SqlCommandcmd conn CreateCommand cmd CommandType CommandType Text cmd CommandText SelectID sNamefromstudent reader cmd ExecuteReader stringoutput while reader Read output string Format 学生 0 t学号是 1 n reader GetString 1 reader GetInt32 0 lblOutput Text lblOutput Text output catch Exceptionex MessageBox Show 操作失败 ex Message finally reader Close conn Close 再例 注意命令的创建与异常的处理 usingSystem usingSystem Data OleDb usingSystem Data classProgram staticvoidMain string args stringconnStr Provider Microsoft Jet OLEDB 4 0 DataSource D 教学 dotnet ContactDb mdb PersistSecurityInfo False using OleDbConnectionconn newOleDbConnection conn ConnectionString connStr conn Open if conn State ConnectionState Open Console WriteLine ok OleDbCommandcmd newOleDbCommand cmd Connection conn cmd CommandType CommandType Text cmd CommandText select fromcontactorderbyNameASC OleDbDataReaderrd cmd ExecuteReader while rd Read Console WriteLine 0 1 2 3 rd GetInt32 0 rd GetString 1 rd GetBoolean 2 男 女 rd GetDateTime 3 ToShortDateString rd Close Command详解 向数据库插入一条记录 usingSystem usingSystem Data OleDb usingSystem Data classProgram staticvoidMain string args stringconnStr Provider Microsoft Jet OLEDB 4 0 DataSource D 教学 dotnet ContactDb mdb PersistSecurityInfo False using OleDbConnectionconn newOleDbConnection conn ConnectionString connStr conn Open OleDbCommandcmd newOleDbCommand cmd Connection conn cmd CommandType CommandType Text cmd CommandText INSERTINTOContact Name Sex BirthDate Values Mary false 1980 5 5 intcount cmd ExecuteNonQuery Console WriteLine 共 0 行被改变 count 更新 UPDATEContactSETtelephone 123456789 Where name Mary 删除 cmd CommandText DELETEFROMContactWhereName Mary 利用用带参数的SQL语句 处理复杂表和赋变量值更清晰 staticvoidMain string args stringconnStr Provider Microsoft Jet OLEDB 4 0 DataSource D 教学 dotnet ContactDb mdb PersistSecurityInfo False using OleDbConnectionconn newOleDbConnection conn ConnectionString connStr conn Open OleDbCommandcmd newOleDbCommand cmd Connection conn cmd CommandType CommandType Text cmd CommandText INSERTINTOContact Name Sex BirthDate Values Name Sex BirthDate OleDbParameter parms newOleDbParameter newOleDbParameter Name OleDbType VarChar 50 newOleDbParameter Sex OleDbType Boolean newOleDbParameter BirthDate OleDbType Date parms 0 Value Mary parms 1 Value true parms 2 Value Convert ToDateTime 1977 5 6 可隐式转换cmd Parameters AddRange parms intcount cmd ExecuteNonQuery Console WriteLine 共 0 行被改变 count 对比 将文本框中的数据放入sql语句 cmd CommandText INSERTINTOContact Name Sex BirthDate Values textBox1 Text textBox2 Text textBox3 Text 用带参数的SQL语句更清晰cmd CommandText INSERTINTOContact Name Sex BirthDate Values Name Sex BirthDate OleDbParameter parms newOleDbParameter newOleDbParameter Name OleDbType VarChar 50 newOleDbParameter Sex OleDbType Boolean newOleDbParameter BirthDate OleDbType Date parms 0 Value textBox1 Text parms 1 Value Convert ToBoolean textBox2 Text 可隐式转换parms 2 Value Convert ToDateTime textBox3 Text 可隐式转换cmd Parameters AddRange parms DataReader详解 关于数据集DataSet和绑定 前者对于复杂数据库操作不适用 后者简化了操作 但破坏了三层结构 通常不提倡使用 自学 回顾 连接数据库并执行查询命令 usingSystem usingSystem Data OleDb 自行引入usingSystem Data 自行引入 classProgram staticvoidMain string args stringconnStr Provider Microsoft Jet OLEDB 4 0 DataSource D 教学 dotnet ContactDb mdb PersistSecurityInfo False using OleDbConnectionconn newOleDbConnection conn ConnectionString connStr conn Open if conn State ConnectionState Open Console WriteLine ok OleDbCommandcmd newOleDbCommand cmd Connection conn cmd CommandType CommandType Text cmd CommandText select fromcontactorderbyNameASC OleDbDataReaderrd cmd ExecuteReader while rd Read 实际应先判断是否有行 Console WriteLine 0 1 2 3 rd GetInt32 0 rd GetString 1 rd GetBoolean 2 男 女 rd GetDateTime 3 ToShortDateString rd Close 连接数据库并执行增删改命令 usingSystem usingSystem Data OleDb usingSystem Data classProgram staticvoidMain string args stringconnStr Provider Microsoft Jet OLEDB 4 0 DataSource D 教学 dotnet ContactDb mdb PersistSecurityInfo False using OleDbConnectionconn newOleDbConnection conn ConnectionString connStr conn Open OleDbCommandcmd newOleDbCommand cmd Connection conn cmd CommandType CommandType Text cmd CommandText INSERTINTOContact Name Sex BirthDate Values Mary false 1980 5 5 intcount cmd ExecuteNonQuery Console WriteLine 共 0 行被改变 count 更新 UPDATEContactSETtelephone 123456789 Where name Mary 删除 cmd CommandText DELETEFROMContactWhereName Mary 带参数的SQL语句 staticvoidMain string args stringconnStr Provider Microsoft Jet OLEDB 4 0 DataSource D 教学 dotnet ContactDb mdb PersistSecurityInfo False using OleDbConnectionconn newOleDbConnection conn ConnectionString connStr conn Open OleDbCommandcmd newOleDbCommand cmd Connection conn cmd CommandType CommandType Text cmd CommandText INSERTINTOContact Name Sex BirthDate Values Name Sex BirthDate OleDbParameter parms newOleDbParameter newOleDbParameter Name OleDbType VarChar 50 newOleDbParameter Sex OleDbType Boolean newOleDbParameter BirthDate OleDbType Date parms 0 Value Mary parms 1 Value true parms 2 Value Convert ToDateTime 1977 5 6 可隐式转换cmd Parameters AddRange parms intcount cmd ExecuteNonQuery Console WriteLine 共 0 行被改变 count 对比 将文本框中的数据放入sql语句 cmd CommandText INSERTINTOContact Name Sex BirthDate Values textBox1 Text textBox2 Text textBox3 Text 用带参数的SQL语句更清晰cmd CommandText INSERTINTOContact Name Sex BirthDate Values Name Sex BirthDate OleDbParameter parms newOleDbParameter newOleDbParameter Name OleDbType VarChar 50 newOleDbParameter Sex OleDbType Boolean newOleDbParameter BirthDate OleDbType Date parms 0 Value textBox1 Text parms 1 Value Convert ToBoolean textBox2 Text 可隐式转换parms 2 Value Convert ToDateTime textBox3 Text 可隐式转换cmd Parameters AddRange parms 三层结构开发 表现层 Client MainForm窗体 常用DataGridView 参考教材 或ListView控件 参考视频 通过Columns属性添加字段名 设置FullRowSelect和Gridlines为Ture 设置View属性为Details 业务逻辑层 Business ContactBiz类 提供静态方法数据服务层 DataAccess ContactDaol类 提供静态方法实体模型类 Model ContactInfo类 封装各字段 对应一行 实体类 注意字段 属性修饰符及可空类型 classContactInfo privateint id publicintId 重构 封装字段 get return id set id value privatestring name publicstringName privatebool sex 可空类型 因数据库中此字段可空publicbool Sex 可空类型 get return sex set sex value privateDateTime birthDate publicDateTime BirthDate privatestring telePhone 引用类型本身就可为空publicstringTelePhone get return telePhone set telePhone value 数据服务层 classContactDao privateconststringCONN STRING Provider Microsoft Jet OLEDB 4 0 DataSource D 教学 dotnet ContactDb mdb PersistSecurityInfo False privateconststringINSERT STRING INSERTINTOContact Name Sex BirthDate TelePhone Values Name Sex BirthDate TelePhone privateconststringDELETE STRING DELETEFROMContactWHEREID ID privateconststringUPDATE STRING UPDATEContactSETName Name Sex Sex BirthDate BirthDate TelePhone TelePhoneWhereID ID privateconststringSELECT ALL STRING SELECT FROMContact privateconststringSELECT BY NAME STRING SELECT FROMContactWhereName Name publicstaticintInsertInfo ContactInfocontactInfo publicstaticintDeleteInfo intId publicstaticintUpdateInfo ContactInfocontactInfo publicstaticIListGetAllContact publicstaticIListGetByName stringname publicstaticintInsertInfo ContactInfocontactInfo using OleDbConnectionconn newOleDbConnection conn ConnectionString CONN STRING conn Open OleDbCommandcmd newOleDbCommand cmd Connection conn cmd CommandType CommandType Text cmd CommandText INSERT STRING OleDbParameter parms newOleDbParameter newOleDbParameter Name OleDbType VarChar 50 newOleDbParameter Sex OleDbType Boolean newOleDbParameter BirthDate OleDbType Date newOleDbParameter TelePhone OleDbType VarChar 50 parms 0 Value contactInfo Name parms 1 IsNullable true if contactInfo Sex HasValue parms 1 Value contactInfo Sex elseparms 1 Value DBNull Value parms 2 IsNullable true if contactInfo BirthDate HasValue parms 2 Value contactInfo BirthDate elseparms 2 Value DBNull Value parms 3 IsNullable true if String IsNullOrEmpty contactInfo TelePhone parms 3 Value DBNull Value elseparms 3 Value contactInfo TelePhone cmd Parameters AddRange parms return cmd ExecuteNonQuery publicstaticintDeleteInfo intId using OleDbConnectionconn newOleDbConnection conn ConnectionString CONN STRING conn Open OleDbCommandcmd newOleDbCommand cmd Connection conn cmd CommandType CommandType Text cmd CommandText DELETE STRING OleDbParameter parms newOleDbParameter newOleDbParameter ID OleDbType Integer parms 0 Value Id cmd Parameters AddRange parms return cmd ExecuteNonQuery publicstaticIListGetAllContact ListcontactList newList using OleDbConnectionconn newOleDbConnection conn ConnectionString CONN STRING conn Open OleDbCommandcmd newOleDbCommand cmd Connection conn cmd CommandType CommandType Text cmd CommandText SELECT ALL STRING using OleDbDataReaderrd cmd ExecuteReader if rd HasRows while rd Read ContactInfocontactInfo featch rd contactList Add contactInfo returncontactList privatestaticContactInfofeatch OleDbDataReaderrd ContactInfocontactInfo newContactInfo contactInfo Id rd GetInt32 0 contactInfo Name rd GetString 1 if rd IsDBNull 2 contactInfo Sex rd GetBoolean 2 if rd IsDBNull 3 contactInfo BirthDate rd GetDateTime 3 if rd IsDBNull 4 contactInfo TelePhone rd GetString 4 returncontactInfo 业务逻辑层 classContactBiz publicstaticintInsertInfo ContactInfocontactInfo returnContactDao InsertInfo contactInfo 之前应判断是否重名 publicstaticintDelteInfo intId returnContactDao DeleteInfo Id publicstaticintUpdateInfo ContactInfocontactInfo returnContactDao UpdateInfo contactInfo publicstaticIListGetAllContact returnContactDao GetAllContact publicstaticIListGetByName stringname return ContactDao GetByName name 表现层 控制台界面 测试使用 staticvoidMain string args ContactInfocontactInfo newContactInfo contactInfo Name Mary contactInfo Sex true contactInfo BirthDate Convert ToDateTime 1987 5 6 contactInfo TelePhoneintresult ContactBiz InsertInfo contactInfo Console WriteLine 插入 0 行 result Console WriteLine 删除 0 行 ContactBiz DelteInfo 16 Console WriteLine 更新 0 行 ContactBiz UpdateInfo contactInfo ListcontactList List ContactBiz GetAllContact foreach ContactInfocontactincontactList Console WriteLine 0 1 2 3 4 contact Id contact Name contact Sex contact BirthDate contact TelePhone contactList List ContactBiz GetByName Mary foreach ContactInfocontactincontactList Console WriteLine 0 1 2 3 4 contact Id contact Name contact Sex contact BirthDate contact TelePhone 表现层 Windows窗体界面 菜单 可继续添加分组管理等项DataGridView控件 RowHeadersVisible SelectionMode ReadOnly DataSource Rows Columns外观属性 见P279 如交替行等事件
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- FLT3-IN-32-TFA-生命科学试剂-MCE
- Farnesane-2-6-10-Trimethyldodecane-生命科学试剂-MCE
- 农发行龙岩市新罗区2025秋招群面案例总结模板
- 2025年通信基站储能电池梯次利用安全性能评价报告
- 农发行三门峡市卢氏县2025秋招金融科技岗笔试题及答案
- 工业园安全培训领导讲话课件
- 夜雨寄北教学课件
- 平湖市宜安安全培训课件
- 新能源行业人才流动趋势研究报告:2025年行业战略规划
- 江苏专升本试卷及答案
- 步进电机及其工作原理-电机的工作原理及特性课件
- 基于CAN通讯的储能变流器并机方案及应用分析报告-培训课件
- 腹直肌分离康复(产后康复课件PPT)
- 聚合物成型的理论基础课件
- 药监系统官方培训06细菌内毒素方法介绍-蔡彤
- 慢性中耳炎的并发症课件
- 灭火器每月定期检查及记录(卡)表
- 千米、分米和毫米的认识单元备课
- 药品生产质量管理工程完整版课件
- 人工智能(AI)在人力资源领域的应用与展望
- GB∕T 29169-2012 石油天然气工业 在用钻柱构件的检验和分级
评论
0/150
提交评论