asp.net中access(.mdb)和MSSql(.mdf)数据库的相对路径设置
最近在学习visual studio 2005的C#和数据库的知识时,对读取数据库的路径来说,怎么设置相对路径,而不是用绝对路径比较困扰。不管是access(*.mdb)数据库还是mssql(*.mdf),在部署也就是换到别的电脑或服务器时,一般都要使用相对路径,而且调取绝对路径不仅麻烦,还不安全。使用相对路径是最佳办法。
我们的数据库一般都是放在App_Data这个默认的数据库文件夹下,我在网络搜索相对路径时,一般都是对access数据库来说的解决办法。下面是碧血黄沙对access数据库的相对路径的原创解决办法:
第一步:在配置文件web.config把<appSettings>的内容改写为
<appSettings>
<add key=”SQLConnString” value=”provider=microsoft.jet.oledb.4.0;data source=”/>
<add key=”dbPath” value=”~/App_Data/mydata.mdb”/>
</appSettings>第二部:在读取数据库web页面上(或Form里)的设置全局变量
public static readonly string CONN_STRING_NON_DTC = System.Configuration.ConfigurationManager.AppSettings["SQLConnString"].ToString() + System.Web.HttpContext.Current.Server.MapPath(ConfigurationManager.AppSettings["dbPath"]) + “;”;
碧血黄沙把CONN_STRING_NON_DTC定义成static readonly是为了使用方便。
以上对access数据库的设置方法。而我要读取的是mssql数据库。其实修改起来也是比较简单的,下面是我修改后可以正确使用的,是在上面的基础上稍作修改,其实都是对App_Data这个数据库文件夹相对路径的设置或是读取的问题。
web.config配置文件里面对读取App_Data文件夹相对路径有用的只有,注意使用自己命名的数据库及后缀名
<add key=”dfPath” value=”~/App_Data/mydata.mdf“/>
这句,在具体读取页面里,可以这样设置链接字符串:
//设置数据库连接字符串
string CONN_STRING_NON_DTC = System.Web.HttpContext.Current.Server.MapPath(ConfigurationManager.AppSettings["dfPath"]) ;
string myConnStr = @”Data Source=.\SQLEXPRESS;AttachDbFilename=” + CONN_STRING_NON_DTC + “;Integrated Security=True;User Instance=True”;
//设置sql数据库语句读取命令
SqlConnection myConn = new SqlConnection(myConnStr);
string sql = “select * from 库存零件表 where 零件编号 like ‘%” + this.lingjbh.Text + “%’and ” + “零件名称 like ‘%” + this.lingjmc.Text + “%’”;
SqlCommand myComm = new SqlCommand(sql, myConn);
myConn.Open();
SqlDataReader myReader = myComm.ExecuteReader();
//数据库中数据已经读取出来,现在把它显示出来
//返回查询结果的变量
DataTable dt = new DataTable();
dt.Columns.Add(new DataColumn(“零件编号”, typeof(string)));
dt.Columns.Add(new DataColumn(“零件名称”, typeof(string)));
dt.Columns.Add(new DataColumn(“数量”, typeof(string)));
dt.Columns.Add(new DataColumn(“颜色”, typeof(string)));
dt.Columns.Add(new DataColumn(“重量”, typeof(string)));//读查询结果并放入表中
while (myReader.Read()) {
DataRow dr = dt.NewRow();
dr[0] = myReader.GetValue(0).ToString();
dr[1] = myReader.GetValue(1).ToString();
dr[2] = myReader.GetValue(2).ToString();
dr[3] = myReader.GetValue(3).ToString();
dr[4] = myReader.GetValue(4).ToString();
dt.Rows.Add(dr);
}
//关闭数据库连接
myConn.Close();//将查询结果显示到表格控件
this.GridViewlingj.DataSource = new DataView(dt);
this.GridViewlingj.DataBind();
注意我的是数据库使用的是Windows验证方式,如果是混合模式,需要加入user id=和password=等字段来登录数据库。注意以上的源代码里面的标点符号都由wordpress编码自动换成了中文标点符号,复制后需要把它们修改成为英文输入法下的标点符号,否则就会出错。

最新评论