private string connectionString = @"Data Source=.\SQLEXPRESS;AttachDbFilename=d:\CJSYFldCtr160222.mdf;Integrated Security=True;";
如果将sql数据库文件放在d盘下用上面的代码是可以连接的,但是如果将数据库文件拷贝到winform程序的文件夹中,如何使用相对路径连接呢?
(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;
用application.startuppath获取exe的启动路径,然后跟相对路径合并成绝对路径
这样,(*^__^*) 嘻嘻……
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;
我用的是sql server数据库和access数据库链接方式不一样吧
@别闹了费曼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); }
@无影飞絮剑: 连接数据库的类已经写好了,问题主要在连接数据库的字符串connectionString的问题,所以想问连接的字符串connectionString有什么问题?
推荐你使用sqlite数据库
connectionString = @"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|CJSYFldCtr160222.mdf;Integrated Security=True;";
|DataDirectory|代表:
如果是桌面应用,就是bin目录。 如果是web应用,就是app_data
还是不可以,SQL数据库为2014企业版
<add name="MovieDBContext" connectionString="Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\Movies.mdf;Integrated Security=True" providerName="System.Data.SqlClient" />