0

次のようにサンプル接続文字列を見つけたMSDNのソーシャルでc#を使用してアクセスデータベース接続について確認していました

string ConnStr = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\abc.mdb;Jet OLEDB:Database Password=password";

ここで、フォーム アプリケーションを作成し、.exe ファイルと同じ場所にデータベース ファイル abc.mdb を配置したとします。その場合、接続文字列を次のように記述できますか?

string ConnStr = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=abc.mdb;Jet OLEDB:Database Password=password";

SQLデータベースファイルでこれを試していましたが、実行されていませんでした.この場合、フルパスが必須である可能性があります. 私はそうですよね?

4

5 に答える 5

1

接続文字列で相対パスを使用できない場合は、実行時に次のように生成できます。

string connstring = string.Format(@ "Provider = Microsoft.ACE.OLEDB.12.0; Data Source = {0}; Persist Security Info = true"、Path.Combine(Directory.GetCurrentDirectory()、 "MyDatabase01.accdb")) ;

于 2012-11-16T05:41:56.263 に答える
0

試してみてください(テストされていませんが

string dbpath = AppDomain.CurrentDomain.BaseDirectory + "abc.mdb";
string ConnStr = String.Format(Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Jet OLEDB:Database Password=password;", dbpath)
于 2012-11-16T05:42:23.313 に答える
0

最初の質問に答えるには、はい、同じディレクトリに.mdbファイルがあると、2番目の接続文字列で機能します。

2番目の「質問」でMSSQLまたはMSSQLExpressを意味していると仮定すると、接続文字列の一部としてSQLServerインスタンスを指定する必要があります。

于 2012-11-16T05:42:38.933 に答える
0

ASP.NET 2.0以降の場合、データベースファイル(.mdbまたは.accdb)は常にApp_Dataフォルダーに配置する必要があります。これには2つの理由があります。1つは、ユーザーがフォルダーを参照したり、データベースのコピーをダウンロードしたりできないようにApp_Dataが構成されていることです。次に、特別なDataDirectoryトークン(または置換文字列)を利用して、接続文字列内のファイルを参照できます。DataDirectoryのデフォルトはApp_Dataディレクトリです。

したがって、Accessデータソースは次のようになります。

<asp:AccessDataSource 
    ID="AccessDataSource1" 
    runat="server" 
    DataFile="~/App_Data/MyDb.mdb" 
    SelectCommand="Select * From MyTable">
</asp:AccessDataSource>
于 2012-11-16T05:42:40.837 に答える
0

これはテストしていませんが、DataDirectory置換文字列を使用できます。

string ConnStr = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\abc.mdb;Jet OLEDB:Database Password=password";

それからあなたはすることができます

AppDomain.CurrentDomain.SetData("DataDirectory", @"D:\MyApp");

次のKB 記事に記載されているとおり:

|データディレクトリ| 置換文字列のサポート

|データディレクトリ| (パイプ記号で囲まれている) は、データベース パスを示す置換文字列です。したがって、コードに絶対パスを含める必要はありません。コードにフル パスを含めると、データベースのフル パスが別の場所でシリアル化される可能性があるため、問題が発生する可能性があります。|データディレクトリ| また、置換文字列を使用すると、プロジェクトの共有とアプリケーションのデプロイが容易になります。

たとえば、コードに完全なパスを含めると、アプリケーションは次の接続文字列を持つことができます。

データ ソース = c:\program files\MyApp\Mydb.sdf

|DataDirectory| を使用する場合 置換文字列、アプリケーションは次の接続文字列を持つことができます。

データ ソース = |DataDirectory|\Mydb.sdf

DataDirectory プロパティを設定するには、AppDomain.SetDataメソッドを呼び出します。DataDirectory プロパティを設定しない場合、データベース フォルダーへのアクセスに次の既定の規則が適用されます。

  • ユーザーのコンピューター上のフォルダーに配置されるアプリケーションの場合、データベース フォルダーはアプリケーション フォルダーを使用します。
  • ClickOnce で実行されているアプリケーションの場合、データベース フォルダーは、作成された特定のデータ フォルダーを使用します。
于 2012-11-16T06:14:10.373 に答える