大家好,我是朱老师
前几天一个学员在学习c#读取csv文件时。一直报空指针错误,有一行代码显示null,不知道什么原因。报错代码截图如下:
这个代码第行报错提示很清楚了:未将对象引用设置到对象的实例。ds是null。就是ds是空对象,没有赋值成功,也就是代码的行读取csv文件失败。没有正确读取到csv文件的数据造成的。接下来我让该同学检查下本地程序路径是否有PCBFSAPW81.CSV文件,因为代码的行会读取这个文件。该同学经过检查,发现确实没有这个csv文件。然后手动创建了这个PCBFSAPW81.CSV文件。再次运行后,该异常已经处理掉了。
但是这个时候又报了另一个异常:语法错误在查询表达式中,这个错误也是很常见的,在读取数据库时,sql语句的语法要求也是很高的。一个空格,逗号等都会造成sql执行异常。异常代码截图如下:
经过检查:发现是from和表名之间没有空格。正确的语句是:select*fromtableName.每一个sql词语之间都会有空格隔开。
该问题解决后,查询不报错。但是出现了第三个问题。界面显示乱码:datagriew控件显示乱码。软件运行效果如下:
出现这个问题有如下两个原因:
第一个原因:csv文件的编码格式和代码读取csv文件的方式不一致。比如csv是utf-8编码。但是在代码里访问文件的方式是gbk方式打开的。
第二个原因,电脑本身设置问题。比如电脑装了一些加密软件等等。这个时候的csv文件就不会再是普通的文本文件了。事实上,经过现在市面上的专业加密软件加密后,一般都是变成二进制文件了。文件中会有特定的文件头文件尾。
经过学员检查,发现乱码原因是第二种。系统加密软件加密造成的。
以上就是初学者在学习c#读写csv文件时常见的问题。。总结如下:
1:空指针错误:检查对象是否正确读取到了数据,检查本地csv文件是否存在。
2:sql语法错误,检查代码里的sql语句是否符合sql语法规范,sql语句空格,sql语句关键字是否正确,比如create,alter,selectinsert,update等等关键字
3:数据乱码问题:检查文件编码格式是否和代码访问文件的编码格式一致。检查系统设置问题,安全软件等。