今天记录了2篇最近出错的问题,本来是不该犯此类错误,但结果就是犯了。
ADO连接字符串中数据文件(如Excel、MDB)文件名必须以“;”结尾,例如:
strCnn = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & App.Path & "\test.xls;" & _
"Extended Properties=Excel 8.0"
cnn.Open strCnn
开始测试一般都这样写,后边就需要把红色部分剥离出来,写为下面的样子:
strDBName = App.Path & "\test.xls;"
strCnn = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & strDBName _
"Extended Properties=Excel 8.0"
cnn.Open strCnn
现在还没有问题,但问题已经隐伏。
因为需要测试数据库是否存在,所以加一句:
If Dir(strDBName) Then Exit Sub
代码就成了这样:
strDBName = App.Path & "\test.xls;"
If Dir(strDBName) Then Exit Sub
strCnn = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & strDBName _
"Extended Properties=Excel 8.0"
cnn.Open strCnn
错误于是产生,strDBName = App.Path & "\test.xls;",红色的分号导致Dir函数每次都返回文件不存在。
不知道别人,自己曾犯过几次这样的错误,每次调试半天,然后恍然大悟,回头就忘。避免的办法应该是:
- 和配置相关的内容最好独立出来,如文件路径、数据库连接字符串;
- 数据库、SQL有关的操作不是很复杂,但容易出错,所以要尽量降低和程序的耦合度,使用实体类,使用NHibernate这样的工具;
- 小错误,问题应该建立自己的档案库,必要时可以随时查询(用什么工具?Blog?Excel?);