最近用vs.net2005 beta2做了个小工具试用了一下,的确是方便易用啊,其实我vs.net2003都没怎么用过.不过就是喜欢尝鲜,没办法(不知道是不是有很多人跟我一样,看到新出的东西就想拿来试一试,搞得我的操作系统总是坏的极快).当然,我用vs.net2005还有一个原因是它提供了serialport类来操作串口,跟一些嵌入式系统的串口通讯更方便. 在使用的过程中发现一个小问题,由于只是小工具,不想使用数据库,所以选用了dataset的untyped dataset功能,来存取binary文件,结果在使用datatable.find函数的时候总是找不到记录.我的代码是这样的:
- public void create() { dataset = new dataset();
- dataset.remotingformat = serializationformat.binary;
- datatable = new datatable();
- dataset.tables.add(datatable);
- datatable.columns.add(new datacolumn("card_no"));
- datatable.columns.add(new datacolumn("member_no"));
- datatable.columns.add(new datacolumn("serial_no"));
- datatable.columns.add(new datacolumn("expiry_date", type.gettype("system.datetime")));
- datacolumn[] keys = new datacolumn[1];
- keys[0] = datatable.columns["serial_no"];
- datatable.primarykey = keys;
- }
- public void open(sspaning filename)
- {
- if (file.exists(filename))
- {
- binaryformatter bf = new binaryformatter();
- filesspaneam fs = new filesspaneam(filename, filemode.open);
- spany
- {
- //dataset.readxml(filename);
- //dataset.acceptchanges();
- dataset = (dataset)bf.deserialize(fs);
- dataset.acceptchanges();
- }
- finally
- {
- fs.close();
- } public void save(sspaning filename)
- {
- if (dataset.haschanges())
- {
- binaryformatter bf = new binaryformatter();
- filesspaneam fs = new filesspaneam(filename, filemode.create);
- spany
- {
- //dataset.writexml(filename);
- bf.serialize(fs, dataset);
- dataset.acceptchanges();
- }
- finally
- {
- fs.close();
- }
- }
- }
用datatable.rows.find()的时候,明明table中有要找的数据,却始终返回null,而使用readxml,writexml函数操作xml格式来存储就没问题(就是漫一点,这是我想用binary格式的原因).不知是不是我忽略了某些步骤,msdn2上的说明还是有点简单啊。不过总的来说,VS.NET2005还是很好用的。
【编辑推荐】