ASP.NET连接ACCESS数据库web.config内路径最优写法

限时加码!20+主流AI编程工具免费用 购周边加赠Coding Plan Lite,Claude Code、Cursor等即刻畅享,学习进阶更高效! 阅读详情

好多朋友被ACCESS数据库在.net程序中相对路径的问题困扰,搞得每次移动程序都要去修改web.config
中数据库连接字符串的数据库路径。

好多人的web.config中的写法如下:

<appSettings>
<add key="OLEDBCONNECTIONSTRING" value="Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=E:/web/App_Data/Data.mdb)"></add>
</appSettings>

程序中这样写:

MyConn = new OleDbConnection(System.Configuration.ConfigurationManager.AppSettings["OLEDBCONNECTIONSTRING"]); //注释一下:VS2005和VS2003中的ConfigurationSettings写法不一样,具体区别自己查吧

这样程序运行时经常提示诸如以下的错误:
'C:/WINDOWS/system32/~/App_Data/Data.mdb'不是一个有效的路径。 确定路径名称拼写是否正确,以及是否连接到文件存放的服务器。 Data Source=~/App_Data/Data.mdb
就算用绝对路径正确,那么移植程序时还要去修改web.config,所以比较麻烦。

也有在web.config中使用象ASP那样的Server.MapPath取数据库路径的,但web.config不认识Server.MapPath,此方法也行不通。

后来通过摸索、参考其它程序,总结出如下方法,可以方便的移植程序路径而不必再去修改ACCESS数据库路径。

我在web.config中的写法如下:

<appSettings>
<add key="SQLConnString" value="provider=microsoft.jet.oledb.4.0;data source="/>
<add key="dbPath" value="~/App_Data/mydata.mdb"/>
</appSettings>
程序中的数据访问类中我把"SQLConnString"和"dbPath"取出来连接成一个字符串"CONN_STRING_NON_DTC"
public static readonly string CONN_STRING_NON_DTC = System.Configuration.ConfigurationManager.AppSettings["SQLConnString"].ToString() + System.Web.HttpContext.Current.Server.MapPath(ConfigurationManager.AppSettings["dbPath"]) + ";";

End of《ASP.NET连接ACCESS数据库web.config内路径最优写法

帖子二web.config 配置access的相对路径

本人使用的是VS 2005,经过调试成功,具体如何实现,代码如下(VB.Net示例,C#方法一样,在这里就不用说了)


首先在web.config文件<appSettings>节点中加入如下代码:
<!--数据源-->
<add key="myds" value="Provider=Microsoft.Jet.OLEDB.4.0;Data source="/>
<!--数据库相对路径-->
<add key="myconn" value="App_Data/VinikeData.mdb"/>


然后,写个类文件,调用上面的定义,代码如下:


'定义一个连接字符串,难点就在这里,网上很多用到了Server.MapPath,但是还是不行,注意这里用到了Request.MapPath(相对asp来说,这是asp所没用的)
Public connstr As String = ConfigurationSettings.AppSettings("myds") + HttpContext.Current.Request.MapPath("~") + (ConfigurationSettings.AppSettings("myconn").Trim())

 

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.OleDb;
/// <summary>
/// Connection 的摘要说明
/// </summary>
public class Connection
{
public Connection()
{
   //
   // TODO: 在此处添加构造函数逻辑
   //
}
    public static OleDbConnection connAccess()
    {
        OleDbConnection conn = new OleDbConnection(GetConnString());
        return conn;
    }
    private static string GetConnString()
    {
        return System.Configuration.ConfigurationSettings.AppSettings["ConnStr"] + System.Web.HttpContext.Current.Server.MapPath("~")+System.Configuration.ConfigurationSettings.AppSettings["DbPath"];
    }


}

 

 

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.OleDb;
public partial class test_sss_Defauldddt : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        System.Data.OleDb.OleDbConnection conn1 = Connection.connAccess();
        conn1.Open();
        if (conn1.State == ConnectionState.Open)
        {
            Label1.Text = "连接成功!";
        }
        else
        {
            Label1.Text = "连接不成功!";
        }
    }
}

帖子三c#2.0中web.config中调用Access数据库语句

<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">
<appSettings/>
<connectionStrings>
    <add name="book" connectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:/c#/book/App_Data/book.mdb"
     providerName="System.Data.OleDb" />
</connectionStrings>

 

调用数据库类:

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
//因为要使用Access数据库,所以这里得引入命名空间
using System.Data.OleDb;

/// <summary>
/// 这里主要是留言本会用到的数据库连接类,因为数据操作并不多,所以把常规的操作类也一并放这里了
/// </summary>
public class odb
{
     public string name;
      public string email;
      public string qq;
      public string msn;
      public string url;
      public string title;
      public string concent;
      public string face;
      public string ip;
      public string pwd;
      public string uid;
      public string pwda;
      public DateTime dtt;
    
      public odb()
{
    //
    // TODO: 在此处添加构造函数逻辑
    //
}
      public static OleDbConnection con()
      {//数据库连接类
          OleDbConnection con = new OleDbConnection(ConfigurationManager.ConnectionStrings["book"].ConnectionString);
          return con;
      }
      public static bool insert(string que)
      { //根据传进来的SQL语句执行插入/删除/更新等操作
          OleDbConnection con = odb.con();
          con.Open();
          OleDbCommand cmd = new OleDbCommand(que,con);
          int count = Convert.ToInt32(cmd.ExecuteNonQuery());
          if (count > 0)
              return true;
          else
              return false;
      }
      public static DataTable ds(string que)
      {//返回一个装载了SQL制定留言的数据表,
          OleDbConnection con = odb.con();
          OleDbDataAdapter oda = new OleDbDataAdapter();
          oda.SelectCommand=new OleDbCommand(que,con);
          DataSet ds = new DataSet();
          oda.Fill(ds,"thc");
          return ds.Tables["thc"];
      }
      public static bool img(string que)
      {//根据传来的条件查询该项是否有内容,有就返回true
          OleDbConnection con = odb.con();
          con.Open();
          OleDbCommand cmd = new OleDbCommand(que,con);
          if (cmd.ExecuteScalar().ToString() != "")
              return true;
          else
              return false;
          con.Close();
      }
      public static string scr(string que)
      {//同样是根据传来的SQL语句返回一个字段的值,一般应该把SQL语句做在类中,这里没有放
          OleDbConnection con = odb.con();
          con.Open();
          OleDbCommand cmd = new OleDbCommand(que,con);
          return cmd.ExecuteScalar().ToString();
      }
      public static int num(string mm)
      {//根据要求返回一个一个显示条目数
         return    Convert.ToInt32(odb.scr("select ["+mm+"] from [config]"));
      }
}
帖子四asp.net 做登录界面如何连接access数据库进行验证
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.OleDb;
public partial class login : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
//以下产生随机的验证码,并在label1显示
Random ro = new Random();
if (!IsPostBack)
{
this.Label1.Text = ro.Next(1000, 9999).ToString();
}
}
protected void Button1_Click(object sender, EventArgs e)
{

if (this.name.Text != "")//判断用户名是否未空
{
if (this.pwd.Text != "")//判断密码是否未空
{
if (this.yanzhen1.Text != "")//判断验证码是否未空
{
if (this.yanzhen1.Text == this.Label1.Text)//判断验证码是否相等
{
string sql;
sql = "select count(*) from userinfo where username='" + this.name.Text + "' and pwd='" + this.pwd.Text + "'";//建立sql查询语句
try
{
OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + Server.MapPath("./app_data/db.mdb"));//建立数据库连接
conn.Open();
OleDbCommand cmd = new OleDbCommand(sql, conn);
int state =Convert.ToInt32( cmd.ExecuteScalar());//执行sql语句,并返回获得值
if (state == 0 || state > 1)//如果数据中没有记录或有多条记录则抱错
{
this.Label2.Text = "用户不存在,请检测用户名和密码是否正确!";
}
else
{
this.Label2.Text = "登入成功!" ;


}
conn.Close();

}
catch (Exception a)
{
Response.Writea.Message);
}
}
else
{
this.Label2.Text = "验证码不正确,请重新输入!";
}
}
else
{
this.Label2.Text = "验证码没有填写!";

}
}
else
{
this.Label2.Text = "密码没有填写!";

}
}
else
{
this.Label2.Text = "用户名没有填写!";
}
}
}

 

 

Source:http://www.cnblogs.com/sxjrcool/archive/2008/08/16/1269462.html

asp.net web.config配置详解 收集的资料,分享给大家,不熟悉的道友可以看看,适合新入坑的,^_^ 立即下载

相关推荐

asp.net连接Access数据库

asp net连接Access数据库 <%@ Import Namespace "System Data" %> <%@ Import NameSpace "System Data OleDb" %> <script laguage "VB" runat "server"> Dim myConnection As OleDbConnection Dim myCommand As OleDbCommand sub page load sender as Object e as EventArgs "1 连接数据库 dim dbname as string dbname server mappath "authors mdb" myConnection New OleDbConnection "PROVIDER Microsoft Jet OLEDB 4 0;DATA Source "&dbname myConnection Open la1 text "Connection Opened "">asp net连接Access数据库 <%@ Import Namespace "System Data" %> <%@ Import NameSpace "System Data OleDb" %> <script laguage "VB" runat "server"> Dim myConnection As OleDbConnection Dim myCommand As OleDbCommand sub pag [更多]

解决.netaccess数据库连接相对路径问题

<br />Web.config文件中设置数据库连接字段时如下: <br /><appSettings> <br /><add key="AccessConnString" value="provider=microsoft.jet.oledb.4.0;data source="/> <br /><add key="DbPath" value="~/App_Data/Test .mdb"/> <br /></appSettings><br />在c#代码中创建OleDbConnection 连接,通过Map

梦之翼飞翔 1015

asp.net实现访问局域网共享目录下文件的解决方法

主要介绍了asp.net实现访问局域网共享目录下文件的解决方法,需要的朋友可以参考下

asp.net夜话之十一:web.config详解

在开发中经常会遇到这样的情况,在部署程序时为了保密起见并不将源代码随项目一同发布,而我们开发时的环境与部署环境可能不一致(比如数据库不一样),如果在代码中保存这些配置这些信息部署时需要到用户那里更改代码再重新编译,这种部署方式非常麻烦。在.net中提供了一种便捷的保存项目配置信息的办法,那就是利用配置文件,配置文件的文件后缀一般是.config,在asp.net中配置文件名一般默认是web.c

周公(周金桥)的专栏 5万+

web.config连接access数据库的配置

打开位于 ASP.NET 应用程序的根目录中的 Web.config 文件。如果没有 Web.config 文件,请创建。在 Configuration 元素中,如果没有 ConnectionStrings 元素,则添加一个。创建一个 add 元素作为 ConnectionStrings 元素的子级,定义以下属性:name 将值设置为要用来引用连接字符串的名称。name="CustomerD...

weixin_30352191的博客 483

asp.net连接数据库,在web.config中配置数据库连接方法及示例代码

要使用ConfigurationManager.ConnectionStrings[“连接名”].ConnectionString 获取数据库连接字符串,需要先引用System.configuration,引用如下图: asp.net数据库连接的操作方法:1、打开VS, 选择视图 – 服务器资源管理器: 2、右击数据链接 – 添加连接 3、两种选择数据源的方法 数据源可选两种方式,都可以。 方式一,Microsoft SQL Server (SqlClient) 方式二,Microsof

亮亮的专栏 5319

ASP.NET连接ACCESS数据库WEB.CONFIG路径最优写法

http://www.gkxsn.com/633864408960312500.html

jjfsxz的博客 536

ASP.NET连接ACCESS、SqlServer以及Oracle数据库web.config路径最优写法

.net中提供了四种数据库连接方式:System.Data.OleDb.OleDbConnectionSystem.Data.SqlClient.SqlConnectionSystem.Data.Odbc.OdbcConnectionSystem.Data.OracleClient.OracleConnectionACCESS:User ID=Admin;data source="/>程序中:数据

Jason's Word 2092

C#.Net连接ACCESS数据库web.config路径最优写法

帖子一:好多朋友被ACCESS数据库.net程序中相对路径的问题困扰,搞得每次移动程序都要去修改web.config  中数据库连接字符串的数据库路径。 好多人的web.config中的写法如下:  <add key="OLEDBCONNECTIONSTRING" value="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:"web"Ap

blanky01的专栏 8291

web.config连接access数据库最优写法

ACCESS数据库.net程序中相对路径的问题困扰,搞得每次移动程序都要去修改web.config数据库连接字符串的数据库路径。 好多人的web.config中的写法如下: <appSettings><add key="OLEDBCONNECTIONSTRING" value="Provider=Microsoft.Jet.OLEDB.4.0;DataSource=E...

weixin_30436101的博客 170
上一篇: 对日期类型进行格式化
下一篇: ASP.NET ---- 连接Access . 增删改查
cyx_java
博客等级 码龄19年 13粉丝 19原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值