您好,登錄后才能下訂單哦!
本篇內容介紹了“C#用相對路徑寫法連接Access數據庫”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
好多人的C#相對路徑寫法web.config中的寫法如下:
<appSettings> <add key="OLEDBCONNECTIONSTRING" value="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:"web"App_Data"Data.mdb)"></add> </appSettings>
C#相對路徑寫法這樣寫:
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,此方法也行不通。
后來通過摸索、參考其它程序,總結出如下方法,可以方便的C#相對路徑寫法而不必再去修改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 cconnectionString="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 = "用戶名沒有填寫!"; } } }
“C#用相對路徑寫法連接Access數據庫”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。