當前位置:首頁 » 操作系統 » 非資料庫源

非資料庫源

發布時間: 2022-08-15 07:05:05

Ⅰ 誰能告訴我資料庫與數據源具體有什麼區別

資料庫可以理解為一個倉庫,存放數據的地方。在資料庫里存放著表,每張表用來存放一些數據。
數據源,是一個指代概念,是數據來源的地方,可以是常規資料庫,也可以指網路上某個數據來源,也可以是本地文本文檔。
一般理解上,數據源指代的范圍比資料庫更廣。相同點是,可以從中獲取或返回數據。

Ⅱ 數據源與資料庫有什麼區別

數據源是一個變數,我們定義的一個數據源,可以隨時修改指向不同的資料庫,而資料庫是個存在的實體。

Ⅲ C#三層架構介面的作用是什麼

一提三層架構,大家都知道是表現層(UI),業務邏輯層(BLL)和數據訪問層(DAL),而且每層如何細分也都有很多的方法。但具體代碼怎麼 寫,到底那些文件算在哪一層,卻是模模糊糊的。下面用一個簡單的例子來帶領大家實戰三層架構的項目,這個例子只有一個功能,就是用戶的簡單管理。

首先建立一個空白解決方案,添加如下項目及文件
1、添加ASP.NET Web Application項目,命名為UI,新建Web Form類型文件User.aspx(含User.aspx.cs)
2、添加ClassLibrary項目,命名為BLL,新建Class類型文件UserBLL.cs
3、添加ClassLibrary項目,命名為DAL,新建Class類型文件UserDAL.cs。添加SQLHelper引用。(這個是微軟的數據訪 問類,也可以不用,直接編寫所有的數據訪問代碼。我一般用自己寫的數據訪問類DataAccessHelper )。
4、添加ClassLibrary項目,命名為Model,新建Class類型文件UserModel.cs
5、添加ClassLibrary項目,命名為IDAL,新建Interface類型文件IUserDAL.cs
6、添加ClassLibrary項目,命名為ClassFactory
相信大家已經看出來了,這個和Petshop的示例沒什麼區別,而且更簡單,因為在下也是通過Petshop學習三層架構的。但一些朋友對於這幾個項目所處的層次,以及它們之間的關系,可能比較模糊,這里逐個說明一下:

1、User.aspx和User.aspx.cs
這兩個文件(以及文件所屬的項目,下面也是如此,不再重復強調了)都屬於表現層部分。User.aspx比較好理解,因為它就是顯示頁面了。 User.aspx.cs有些人覺得不應該算,而是要劃到業務邏輯層中去。如果不做分層的話,那麼讓User.aspx.cs來處理業務邏輯,甚至操作數 據庫都沒什麼問題,但是做分層的話,這樣就不應該了。在分層結構中,User.aspx.cs僅應該處理與顯示有關的內容,其它部分都不應該涉及。

舉例:我們實現用列表方式顯示用戶的功能,那麼提取信息的工作是由BLL來做的,UI(本例中是User.aspx.cs)調用BLL得到 UserInfo後,通過代碼綁定到User.aspx的數據控制項上,就實現了列表的顯示。在此過程中User.aspx.cs對UI沒有起到什麼作用, 僅是用來傳遞數據,而且因為實際編碼中大部分情況都是如此的實現,所以使有些人覺得User.aspx.cs不應該算UI,而應該並入BLL負責邏輯處 理。繼續往下看,這時提出了一個新需求,要求在每個用戶的前面加一個圖標,生動地表現出用戶的性別,而且不滿18歲的用兒童圖標表示。這個需求的實現,就 輪到User.aspx.cs來做了,這種情況下User.aspx.cs才算有了真正的用途。

2、NewBLL.cs
添加如下方法:
public IList GetUsers():返回所有的用戶信息列表
public UserInfo GetUser(int UserId):返回指定用戶的詳細信息
public bool AddUser(UserInfo User):新增用戶信息
public bool ChangeUser(UserInfo User):更新用戶信息
public void RemoveUser(int UserId):移除用戶信息

此文件就屬於業務邏輯層了,專門用來處理與業務邏輯有關的操作。可能有很多人覺得這一層唯一的用途,就是把表現層傳過來的數據轉發給數據層。這種情況確實 很多,但這只能說明項目比較簡單,或者項目本身與業務的關系結合的不緊密(比如當前比較流行的MIS),所以造成業務層無事可做,只起到了一個轉發的作 用。但這不代表業務層可有可無,隨著項目的增大,或者業務關系比較多,業務層就會體現出它的作用來了。
此處最可能造成錯誤的,就是把數據操作代碼劃在了業務邏輯層,而把資料庫作為了數據訪問層。

舉例:有些朋友感覺BLL層意義不大,只是將DAL的數據提上來就轉發給了UI,而未作任何處理。看一下這個例子
BLL層
SelectUser(UserInfo userInfo)根據傳入的username或email得到用戶詳細信息。
IsExist(UserInfo userInfo)判斷指定的username或email是否存在。
然後DAL也相應提供方法共BLL調用
SelectUser(UserInfo userInfo)
IsExist(UserInfo userInfo)
這樣BLL確實只起到了一個傳遞的作用。
但如果這樣做:
BLL.IsExist(Userinfo userinfo)
{
UerInfo user = DAL.SelectUser(User);
return (userInfo.Id != null);
}
那麼DAL就無需實現IsExist()方法了,BLL中也就有了邏輯處理的代碼。

3、UserModel.cs
實體類,這個東西,大家可能覺得不好分層。包括我以前在內,是這樣理解的:如此則認為Model在各層之間起到了一個數據傳輸的橋梁作用。不過在這里,我們不是把事情想簡單,而是想復雜了。
Model是什麼?它什麼也不是!它在三層架構中是可有可無的。它其實就是面向對象編程中最基本的東西:類。一個桌子是一個類,一條新聞也是一個類,int、string、doublie等也是類,它僅僅是一個類而已。

這樣,Model在三層架構中的位置,和int,string等變數的地位就一樣了,沒有其它的目的,僅用於數據的存儲而已,只不過它存儲的是復雜的數據。所以如果你的項目中對象都非常簡單,那麼不用Model而直接傳遞多個參數也能做成三層架構。
那為什麼還要有Model呢,它的好處是什麼呢。下面是思考一個問題時想到的,插在這里:
Model在各層參數傳遞時到底能起到做大的作用?
在各層間傳遞參數時,可以這樣:
AddUser(userId,userName,userPassword,…,)
也可以這樣:
AddUser(userInfo)
這兩種方法那個好呢。一目瞭然,肯定是第二種要好很多。
什麼時候用普通變數類型(int,string,guid,double)在各層之間傳遞參數,什麼使用Model傳遞?下面幾個方法:
SelectUser(int UserId)
SelectUserByName(string username)
SelectUserByName(string username,string password)
SelectUserByEmail(string email)
SelectUserByEmail(string email,string password)
可以概括為:
SelectUser(userId)
SelectUser(user)
這里用user這個Model對象囊括了username,password,email這三個參數的四種組合模式。UserId其實也可以合並到user中,但項目中其它BLL都實現了帶有id參數的介面,所以這里也保留這一項。

傳入了userInfo,那如何處理呢,這個就需要按照先後的順序了,有具體代碼決定。
這里按這個順序處理
首先看是否同時具有username和password,然後看是否同時具有email和password,然後看是否有username,然後看是否有email。依次處理。
這樣,如果以後增加一個新內容,會員卡(number),則無需更改介面,只要在DAL的代碼中增加對number的支持就行,然後前台增加會員卡一項內容的表現與處理即可。

4、UserDAL.cs
public IList SelectUsers():返回所有的用戶信息列表
public UserInfo SelectUser(int UserId):返回指定用戶的相信信息
public bool InsertUser(UserInfo User):新增用戶信息
public bool UpdateUser(UserInfo User):更新用戶信息
public void DeleteUser(int UserId):移除用戶信息

很多人最鬧不清的就是數據訪問層,到底那部分才算數據訪問層呢?有些認為資料庫就是數據訪問層,這是對定義沒有搞清楚,DAL是數據訪問層而不是數據存儲 層,因此資料庫不可能是這一層的。也有的把SQLHelper(或其同類作用的組件)作為數據訪問層,它又是一個可有可無的東西,SQLHelper的作 用是減少重復性編碼,提高編碼效率,因此如果我習慣在乎效率或使用一個非資料庫的數據源時,可以丟棄SQLHelper,一個可以隨意棄置的部分,又怎麼 能成為三層架構中的一層呢。
可以這樣定義:與數據源操作有關的代碼,就應該放在數據訪問層中,屬於數據訪問層

5、IUserDAL
數據訪問層介面,這又是一個可有可無的東西,因為Petshop中帶了它和ClassFactory類工廠,所以有些項目不論需不需要支持多數據源,都把 這兩個東西做了進來,有的甚至不建ClassFactory而只建了IDAL,然後「IUserDAL iUserDal = new UserDAL();」,不知意義何在。這就完全是畫虎不成反類犬了。
許多人在這里有一個誤解,那就是以為存在這樣的關系:認為IDAL起到了BLL和DAL之間的橋梁作用,BLL是通過 IDAL來調用DAL的。但實際是即使你如此編碼:「IUserDAL iUserDal = ClassFacotry.CreateUserDAL();」,那麼在執行「iUserDal.SelectUsers()」時,其實還是執行的 UserDAL實例,而不是IUserDAL實例,所以IDAL在三層中的位置是與DAL平級的關系。

通過上面的介紹,基本上將三層架構的層次結構說明了。其實,本人有一個判斷三層架構是否標準的方法,那就是將三層中的任意一層完全替換,都不會對其它兩層 造成影響,這樣的構造基本就符合三層標准了(雖然實現起來比較難^_^)。例如如果將項目從B/S改為C/S(或相反),那麼除了UI以外,BLL與 DAL都不用改動;或者將SQLServer改為Oracle,只需替換SQLServerDAL到OracleDAL,無需其它操作等等。本來想在文中 加入一些具體的代碼的,但感覺不是很必要,如果大家覺得需要的話,我再補充吧。

總結:不要因為某個層對你來說沒用,或者實現起來特別簡單,就認為它沒有必要,或者摒棄它,或者挪作它用。只要進行了分層,不管是幾層,每一層都要有明確 的目的和功能實現,而不要被實際過程所左右,造成同一類文件位於不同層的情況發生。也不要出現同一層實現了不同的功能的情況發生。

Ⅳ 數據源和資料庫有什麼區別

1. 用戶DSN會把相應的配置信息保存在Windows的注冊表中,但是只允許創建該DSN的登錄用戶使用。

2.系統DSN同樣將有關的配置信息保存在系統注冊表中,但是與用戶DSN不同的是系統DSN允許所有登錄伺服器的用戶使用。

3.文件DSN把具體的配置信息保存在硬碟上的某個具體文件中。文件DSN允許所有登錄伺服器的用戶使用,而且即使在沒有任何用戶登錄的情況下,也可以提供對資料庫DSN的訪問支持。此外,因為文件DSN被保存在硬碟文件里,所以可以方便地復制到其它機器中(文件可以在網路范圍內共享)。這樣,用戶可以不對系統注冊表進行任何改動就可直接使用在其它機器上創建的DSN。

Ⅳ Java不用數據源連接Access資料庫,拋異常

你用橋連的話,控制面板-管理工具-數據源有相應的配置么

Ⅵ 不設數據源 連接access資料庫

asp連接access資料庫應用下面代碼
<%
set conn=Server.CreateObject("ADODB.Connection")
DBPath = Server.MapPath("board.mdb") 'Server.MapPath("board.mdb") 獲得資料庫文件board.mdb的絕對路徑
conn.Open "provider=microsoft.jet.oledb.4.0;data source="&dbpath
%>

Ⅶ 在Java中如何不通過數據源來連接資料庫

看你用的是什麼資料庫,你就下相應的驅動就行。

Ⅷ 什麼網站源碼不需要資料庫啊

不需要資料庫的源碼好象就只有HTML頁面了,當然了,,ASP中的access也算是資料庫,但是直接放在網站目錄中就可以調用的了。也是最簡單的資料庫了。

熱點內容
方舟出售腳本 發布:2025-01-16 06:57:55 瀏覽:954
釘釘代理伺服器Ip地址和瑞口 發布:2025-01-16 06:57:05 瀏覽:698
ftp06n08n代替 發布:2025-01-16 06:53:43 瀏覽:233
androidstudio結構 發布:2025-01-16 06:39:22 瀏覽:245
五區布魯是什麼伺服器 發布:2025-01-16 06:35:13 瀏覽:865
androidhandler更新ui 發布:2025-01-16 06:21:28 瀏覽:171
java與mvc 發布:2025-01-16 06:20:40 瀏覽:333
lol最新刷金幣腳本 發布:2025-01-16 05:56:22 瀏覽:564
電腦登陸加密 發布:2025-01-16 05:21:57 瀏覽:153
安卓怎麼修復閃退 發布:2025-01-16 05:21:54 瀏覽:554