Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# access数据库与c语言的连接#_C#_Ms Access_Ado.net_Oledb - Fatal编程技术网

C# access数据库与c语言的连接#

C# access数据库与c语言的连接#,c#,ms-access,ado.net,oledb,C#,Ms Access,Ado.net,Oledb,我在MSDN的social中检查access数据库与c#的连接,在那里我发现了如下示例连接字符串 string ConnStr = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\abc.mdb;Jet OLEDB:Database Password=password"; 现在我的问题是,假设我创建了一个表单应用程序,并将数据库文件abc.mdb放在.exe文件所在的同一位置。在这种情况下,我可以按如下方式编写连接字符串吗 string C

我在MSDN的social中检查access数据库与c#的连接,在那里我发现了如下示例连接字符串

string ConnStr = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\abc.mdb;Jet OLEDB:Database Password=password";
现在我的问题是,假设我创建了一个表单应用程序,并将数据库文件abc.mdb放在.exe文件所在的同一位置。在这种情况下,我可以按如下方式编写连接字符串吗

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

我尝试使用SQL数据库文件执行此操作,但它没有运行,可能是此情况下必须使用完整路径。我说的对吗?

如果不能在连接字符串中使用相对路径,可以在运行时生成它,例如:

string connstring=string.Format(@“Provider=Microsoft.ACE.OLEDB.12.0;数据源={0};持久安全信息=true”,Path.Combine(Directory.GetCurrentDirectory(),“MyDatabase01.accdb”)

尝试(尽管未经测试)


要回答第一个问题,是的,将.mdb文件放在同一目录中可以使用第二个连接字符串


假设您在第二个“问题”中指的是MSSQL或MSSQL Express,则需要将SQL Server实例指定为连接字符串的一部分。

对于ASP.NET 2.0或更高版本,数据库文件(.mdb或.accdb)应始终位于App_数据文件夹中。这有两个原因:首先,App_数据被配置为阻止用户浏览文件夹和下载数据库副本。其次,您可以利用特殊的DataDirectory令牌(或替换字符串)在连接字符串中引用文件。DataDirectory默认为App_数据目录

所以您的Access数据源是这样的

<asp:AccessDataSource 
    ID="AccessDataSource1" 
    runat="server" 
    DataFile="~/App_Data/MyDb.mdb" 
    SelectCommand="Select * From MyTable">
</asp:AccessDataSource>

我还没有对此进行测试,但是可以使用替换字符串

string ConnStr = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\abc.mdb;Jet OLEDB:Database Password=password";
那你就可以做了

AppDomain.CurrentDomain.SetData("DataDirectory", @"D:\MyApp");
如下所述:

|数据目录|替换字符串支持

| DataDirectory |(用管道符号括起来)是一个替换字符串 指示数据库路径的。因此,你不必这样做 在代码中包含完整路径。在中包含完整路径时 在代码中,您可能会遇到问题,因为完整的数据库路径 可以在不同的位置序列化。|数据目录| 替换字符串还可以方便地共享项目和 部署应用程序

例如,如果在代码中包含完整路径,则应用程序 可以具有以下连接字符串

数据源=c:\ProgramFiles\MyApp\Mydb.sdf

如果使用| DataDirectory |替换 字符串,应用程序可以具有以下连接字符串

资料 Source=| DataDirectory |\Mydb.sdf

要设置DataDirectory属性,请调用该方法。如果未设置数据目录 属性时,将应用以下默认规则来访问 数据库文件夹:

  • 对于放置在上的文件夹中的应用程序 在用户的计算机上,数据库文件夹使用应用程序文件夹
  • 为了 在数据库文件夹ClickOnce下运行的应用程序 使用创建的特定数据文件夹

虽然你是正确的,但OP特别询问了一个Windows窗体应用程序,因此你的回答与此无关…哦,对不起。。有点急着回答这个问题……:)
AppDomain.CurrentDomain.SetData("DataDirectory", @"D:\MyApp");