问候stackoverflow,
我在我的两个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();
时,我得到一个OdbcException。两个项目中都存在template.dbf
文件,两个项目都将该模板文件复制到输出构建目录,File.Copy()
调用在两种情况下都运行良好,并且它们都逐字地使用此代码块但在一个项目中失败了,另一个没问题。我甚至更改了原型项目中的连接字符串,以便在另一个项目的构建目录中工作,并且工作正常。
这是我收到的例外情况:
ERROR [IM002] [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified
另外,我尝试在两个项目中连接到template.dbf
文件而不是复制版本,原型项目正确连接而另一个项目失败并出现相同的异常。
我不能为我的生活弄清楚这两个项目之间的区别是什么。是否有一些我可以使用的代码块可以在两个同样的项目中起作用?
编辑:为了澄清这不是一个复杂的项目或任何事情。我只是使用Visual Studio提供的默认设置在Visual Studio 2010中处理两个简单的Windows控制台应用程序。