【.NET程序设计】学习小结

  1. 总结本课程所有学到的知识

(1)C#数据库编程技术

     ①ADO.NET访问数据库

  1. 使用using添加System.Data及其相关子命名空间的引用(如System.Data.SqlClient)
  2. 使用Connection对象连接数据源
  3. 使用Command对象、DataReader对象或DataAdpter对象、DataSet操作数据库
  4. 将操作结果返回到应用程序中,进行进一步处理

注意:学会利用try…catch…finally语句块

在try…catch…finally语句块中,使用try语句打开数据源的连接,使用catch语句捕获异常,使用finally语句确保关闭数据源的连接。

LINQ to SQL访问数据库

  1. 添加LINQ to SQL组件
  2. 创建对象模型
  3. 应用对象模型:先创建DataContext类的实例,再创建并执行LINQ查询,实现具体的

数据的查询、增加、更新和删除。

(2)文件读写

注意:处理文件输入/输出时,最重要的类型为FileStream类。

FileStream类的常用构造方法有两个,语法格式如下:

FileStream(string path,FileMode mode)

FileStream(string path,FileMode mode,FileAccess access)

文本文件读写

StreamReader类:

方法:

public override void Close()  

//关闭 StreamReader 对象和基础流,并释放任何与读者相关的系统资源

public override int Peek()

//返回下一个可用的字符,但不使用它

public override int Read()

//从输入流中读取下一个字符,并把字符位置往前移一个字符

文件的读取操作步骤:

1.导入命名空间  using System.IO;

2.获取文件流    FileStream  fs = new  File(path,FileMode.Open);

3.获取读对象    StreamReader  sr = new StreamReader(fs);

4.执行读操作    string s = sr.ReadToEnd();

5.关闭读对象    sr.Close();

6.关闭文件流    fs.Close();

StreamWriter类:

方法:

public override void Close()  

//关闭当前的 StreamWriter 对象和基础流

public override void Flush()

//清理当前编写器的所有缓冲区,使得所有缓冲数据写入基础流

public virtual void Write()

//把文本写入到文本字符串或流

public override void Write( )

//把字符写入到流

public virtual void WriteLine()

//把行结束符写入到文本字符串或流

文件的写入操作步骤:

1.导入命名空间     using System.IO;

2.获取文件流       FileStream  fs = new FileStream(path, FileMode.Create);

3.或者写入的类     StreamWriter  sw = new StreamWriter(fs);

4.执行写入的方法   sw.WriteLine(“sdasds”);

5.关闭写入的类     sw.Close();

6.关闭文件流       fs.Close();

二进制文件读写

BinaryWriter类:以二进制形式将基元类型写入流,并支持用特定的编码写入字符串。

常用方法:

    Close();//关闭当前的BinaryWriter和基础流

Seek(); //设置当前流中的位置

Write();//将值写入当前流

调用:

FileStream fs = new FileStream(@"d:\data\bookinfo.dat", FileMode.Append, FileAccess.Write);

BinaryWriter bw = new BinaryWriter(fs);//创建二进制文件流写文件

BinartReader类:用特定的编码将基元数据类型读作二进制值

常用方法:

Close();//关闭当前阅读器及基础流

Read(); //从基础流中读取字符,并提升流的当前位置

ReadBytes();//从当前流将count个字节读入字节数组,使当前位置提升count个字节

ReadInt32();//从当前流中读取4个字节有符号整数,并使流的当前位置提升4个字节

ReadString();//读取一个字符串。字符串有长度前缀,一次7位地被编码为整数

调用:

FileStream fs = new FileStream(@"d:\data\bookinfo.dat", FileMode.Open, FileAccess.Read);

BinaryReader br = new BinaryReader(fs);//创建二进制文件流读文件

  1. 序列化和反序列化

相关对象和步骤:

使用Binary(命名空间System.Runtime.Serialization.Formatters.Binary)来序列化和反序列化对象。 对象序列化编程的基本步骤为:首先用Serialzable属性把包含数据的类标记为可序列化的类,如果期中某个成员不需要序列化,则使用NonSerialized来标识。然后调用BinaryFomatter或Soapformatter的Serialize方法实现对象的序列化,反序列化时,则调用Deserialize方法。

  1. 遇到的问题及解决方法
  • 在窗体的运行过程中,多出出现无法将obj下的.exe文件复制到bin下的.exe文件下:

    

 

经查询资料,分析是因为login窗体没有关闭是,造成线程冲突;

解决方法:

先在任务管理器中将ManagerForm.exe进程结束,重启vs项目后,在ManagerForm的closing事件中添加上如下代码:

  • 在对文件进行读写操作时,要引入一下命名空间:

 

  • 当对信息表进行修改操作时,出现错误“不能在对象dbo.book中插入重复键”;

为了避免这个错误,将book_id设置如下:

 

防止修改或删除操作再次出现错误。

  • 对用户输入的合法性检验:采用try catch方法:

 

3.收获和感受

本学期主要运用C#语言,结合.NET开发平台在WinForm窗体上实现操作功能。或许页面布局都是图形化操作,只需要简单的拖动和设置属性来完成,所以整体上相较于上学期的web技术开发更加好上手。也是基于C#语言的自身特点,面向对象的、面向组件的、结构化语言。

目前正在将这部分知识继续开发,现在只是一个信息管理模块,但是基于软工的学习部分,我了解到窗体程序可以使用B/S架构继续搭建系统。程序代码会更加规范、清晰化;内容也更加简洁干练。在进行模块开发时,总结自己注意到的一些问题。包括:成员变量的初始化尽可能放在构造函数中,不要在声明的时候初始化。当主窗口的名字设置为Mainform.cs时,子窗口的名字最好设置为F+名字.cs。注意做好文本框的参数检查。成员变量(包括控件变量)一律加this,局部变量不加。如果考虑到要对程序进行移植便利性问题,就尽量不要在属性页做编辑,而是用代码实现。但是还有些问题就是,WinForm窗体的界面美化比较难实现,如果在属性页里进行操作,图片显示的分辨率低,系统也时常闪退。道阻且长,继续努力。

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值