あいさつstackoverflow、
私は2つのC#プロジェクトで次のコードブロックを使用しています。1つはこのようなメソッドとコードブロックのプロトタイプを作成するプロジェクトで、もう1つは実際のプロジェクトです。
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);
}
プロトタイピングアプリケーションでは、このコードブロックはうまく機能しますが、他のプロジェクトでは、を呼び出すとOdbcExceptionが発生しますconnection.Open();
。ファイルは両方のtemplate.dbf
プロジェクトに存在し、両方のプロジェクトがそのテンプレートファイルを出力ビルドディレクトリにコピーします。File.Copy()
呼び出しはどちらの場合もうまく機能し、どちらもこのコードブロックをそのまま使用しますが、一方のプロジェクトでは失敗し、もう一方のプロジェクトでは正常に機能します。プロトタイピングプロジェクトの接続文字列を変更して、他のプロジェクトのビルドディレクトリから機能するようにしましたが、正常に機能します。
これは私が受け取る例外です:
ERROR [IM002] [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified
また、両方のプロジェクトでコピーされたバージョンの代わりにファイルに接続しようとしましたがtemplate.dbf
、プロトタイププロジェクトは正しく接続され、他のプロジェクトは同じ例外で失敗します。
私は一生の間、2つのプロジェクトの違いが何であるかを理解することはできません。同じことを行う両方のプロジェクトで機能する、使用できる他のコードブロックはありますか?
編集:明確にするために、これは複雑なプロジェクトなどではありません。Visual Studioが提供するデフォルト設定を使用して、VisualStudio2010で作業しているのは2つの単純なWindowsコンソールアプリケーションです。