问候堆栈溢出,
我在我的两个 C# 项目中使用了以下代码块,一个是我的原型方法和代码块的项目,另一个是我的实际项目。
DataSet set = new DataSet();
String path = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
File.Copy(path + "\\template.dbf", path + "\\" + DateTime.Now.ToString("yyyyMMdd") + ".dbf", true);
using (OdbcConnection connection = new OdbcConnection("Driver={Microsoft dBASE Driver (*.dbf)}; DriverID=277;Dbq=" + path + ";"))
{
OdbcDataAdapter adapter = new OdbcDataAdapter(String.Format("SELECT * FROM {0}.dbf", DateTime.Now.ToString("yyyyMMdd")), connection);
OdbcCommandBuilder builder = new OdbcCommandBuilder(adapter);
connection.Open();
adapter.Fill(set);
// Database manipulation goes here
adapter.Update(set);
}
在原型应用程序中,此代码块运行良好,而在另一个项目中,当我调用connection.Open();
. 该template.dbf
文件存在于两个项目中,两个项目都将该模板文件复制到输出构建目录,File.Copy()
调用在这两种情况下都很好,并且它们都逐字使用此代码块,但是在一个项目中它失败了,而在另一个项目中它工作正常。我什至将原型项目中的连接字符串更改为从另一个项目的构建目录中工作,并且工作正常。
这是我收到的例外:
ERROR [IM002] [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified
此外,我尝试template.dbf
在两个项目中连接到文件而不是复制版本,原型项目连接正确,而另一个项目失败并出现相同的异常。
我一生都无法弄清楚这两个项目之间的区别是什么。是否有其他一些我可以在两个项目中使用的代码块做同样的事情?
编辑:为了澄清,这不是一个复杂的项目或任何东西。这只是我在 Visual Studio 2010 中使用 Visual Studio 提供的默认设置处理的两个简单的 Windows 控制台应用程序。