我被要求将使用MVP模式的WinForms应用程序移植到网页上。除其他外,该应用程序将CSV文件上传到DataTable,然后执行一些操作。
将CSV文件上传到服务器,然后使用以下代码
进行阅读string connectionString = @"Driver={Microsoft Text Driver (*.txt; *.csv)};Extensions=asc,csv,tab,txt;Persist Security Info=False;Dbq=C:\Temp\";
//check that file exists and in correct format
if (File.Exists(this.WorkingFileName))
{
using (OdbcConnection connection = new OdbcConnection(connectionString))
{
// Determine number of rows
string selectCount = "select count(*) from [MyFile.csv]");
using (OdbcCommand command = new OdbcCommand(selectCount, connection))
{
connection.Open();
}
}
}
此时我收到错误:
错误[IM002] [Microsoft] [ODBC驱动程序 管理器]找不到数据源名称 并且没有指定默认驱动程序
现在,代码在WinForms中运行良好,但在Web上失败。有什么我需要在IIS,我的配置文件或其他东西中更改以使此代码工作?或者我需要做一些更基本的事情吗?
更新
好的,所以我找出了我的两个代码版本之间的不同之处:WinForms版本运行为32位,一旦我将其更改为64位,它就会抛出相同的错误。看到: 32-bit Text drivers (Microsoft Access , Microsoft Excel and Text files ) from a 64 bit application on windows 7
为了解决问题,我从http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=13255安装了Access 64位驱动程序,但我仍然遇到同样的错误。
如果我检查我的ODBC数据源管理员,我可以看到“Microsoft Access Text Driver(* .txt,* .csv)| 14.00.47600.1000 | Microsoft Corporation | ACEODBC.dll
所以看起来它们安装好了,为什么它仍然会失败?
答案 0 :(得分:13)
好的,我发现了问题。只是总结一下我解决方案的所有部分。
更改连接字符串 两个位置可以看到here到:
@“Driver = {Microsoft Access Text Driver(* .txt,* .csv)}; Extensions = asc,csv,tab,txt; Persist Security Info = False; Dbq = C:\ Temp \”
请注意:
我没有发现导致我痛苦的逗号变化: - (
答案 1 :(得分:2)
这可能是因为网络服务器没有安装Jet库,我认为它提供了文本驱动程序。它可能是由于与MS Office一起在本地安装的(再次,我相信是这种情况)
答案 2 :(得分:0)
连接字符串是否形成良好?似乎dbq参数错误。
"Driver={Microsoft Text Driver (*.txt; *.csv)};Extensions=asc,csv,tab,txt;Persist Security Info=False;Dbq=**C:Temp\\**"
另请查看此link,提供有用的连接字符串示例