首页 新闻 搜索 专区 学院

将sql数据库文件放在winform程序下时,如何使用相对路径连接

0
悬赏园豆:50 [已解决问题] 解决于 2016-12-04 17:43
private string connectionString = @"Data Source=.\SQLEXPRESS;AttachDbFilename=d:\CJSYFldCtr160222.mdf;Integrated Security=True;";

如果将sql数据库文件放在d盘下用上面的代码是可以连接的,但是如果将数据库文件拷贝到winform程序的文件夹中,如何使用相对路径连接呢?

别闹了费曼sir的主页 别闹了费曼sir | 初学一级 | 园豆:103
提问于:2016-04-21 20:48
< >
分享
最佳答案
1

(1)先找到*.config文件配置以下内容

<connectionStrings>
<add name="ConnetString" providerName="System.Data.SqlClient" connectionString="Server=127.0.0.1;Database=数据库名称;User Id=sa;Password=123456;MultipleActiveResultSets=true;"/>

</connectionStrings>

(2)用以下方法读取:

public class AppConstants
{

    public const string DATABASE_ID_CPORTAL = "ConnetString";

}

  (3) 以下这个写到自己的函数体里就可以了

using System.Configuration; //注意引用

var config = ConfigurationManager.ConnectionStrings.Cast<ConnectionStringSettings>().First(d => d.Name == AppConstants.DATABASE_ID_CPORTAL);

string Constr=config.ConnectionString;

 

收获园豆:50
chenaran | 菜鸟二级 |园豆:283 | 2016-05-11 16:21
其他回答(5)
0

用application.startuppath获取exe的启动路径,然后跟相对路径合并成绝对路径

上帝之城 | 园豆:2452 (老鸟四级) | 2016-04-21 23:04
0

这样,(*^__^*) 嘻嘻……

Provider=Microsoft.Jet.OLEDB.4.0;Data Source= "&Application.StartupPath&"\database\数据库名.mdb;

换成你的就是

Provider=Microsoft.Jet.OLEDB.4.0;Data Source= "&Application.StartupPath&"\database\CJSYFldCtr160222.mdb;

 

无影飞絮剑 | 园豆:1155 (小虾三级) | 2016-04-22 09:03

我用的是sql server数据库和access数据库链接方式不一样吧

支持(0) 反对(0) 别闹了费曼sir | 园豆:103 (初学一级) | 2016-04-22 09:36

@别闹了费曼sir: 

在Program.cs文件Main函数最开始加入如下代码:
string dataDir = AppDomain.CurrentDomain.BaseDirectory;
  if (dataDir.EndsWith(@"\bin\Debug\") || dataDir.EndsWith(@"\bin\Release\"))
  {
      dataDir = System.IO.Directory.GetParent(dataDir).Parent.Parent.FullName;
      AppDomain.CurrentDomain.SetData("DataDirectory", dataDir);
  }

解释

支持(0) 反对(0) 无影飞絮剑 | 园豆:1155 (小虾三级) | 2016-04-22 09:53

@无影飞絮剑: 连接数据库的类已经写好了,问题主要在连接数据库的字符串connectionString的问题,所以想问连接的字符串connectionString有什么问题?

支持(0) 反对(0) 别闹了费曼sir | 园豆:103 (初学一级) | 2016-04-22 11:15
0

推荐你使用sqlite数据库

刘宏玺 | 园豆:14006 (专家六级) | 2016-04-22 14:59
0

connectionString = @"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|CJSYFldCtr160222.mdf;Integrated Security=True;";

 

|DataDirectory|代表:

如果是桌面应用,就是bin目录。 如果是web应用,就是app_data

Ropean | 园豆:121 (初学一级) | 2016-04-24 19:43

还是不可以,SQL数据库为2014企业版

支持(0) 反对(0) 别闹了费曼sir | 园豆:103 (初学一级) | 2016-05-24 20:20
0
<add name="MovieDBContext" 
   connectionString="Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\Movies.mdf;Integrated Security=True" 
   providerName="System.Data.SqlClient" 
/> 

 

gunsmoke | 园豆:3592 (老鸟四级) | 2016-04-29 06:43
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册