新聞中心
MVVM模式是當(dāng)前較為流行的軟件架構(gòu)設(shè)計(jì)模式,起初是由微軟提出的,用于開發(fā)WPF(Windows Presentation Foundation)應(yīng)用。它的核心是數(shù)據(jù)綁定,可以將應(yīng)用程序的邏輯、界面和數(shù)據(jù)分離,改善軟件開發(fā)的可維護(hù)性和可擴(kuò)展性。在MVVM模式中,通過ViewModel層來處理與數(shù)據(jù)有關(guān)的邏輯,例如數(shù)據(jù)的處理、顯示、獲取等。

站在用戶的角度思考問題,與客戶深入溝通,找到東安網(wǎng)站設(shè)計(jì)與東安網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶體驗(yàn)好的作品,建站類型包括:成都網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、申請(qǐng)域名、虛擬主機(jī)、企業(yè)郵箱。業(yè)務(wù)覆蓋東安地區(qū)。
而當(dāng)需要應(yīng)用數(shù)據(jù)庫的時(shí)候,MVVM模式將此視為數(shù)據(jù)處理的一部分,將數(shù)據(jù)庫操作封裝在數(shù)據(jù)訪問層中,ViewModel層只需要與數(shù)據(jù)訪問層進(jìn)行交互,實(shí)現(xiàn)了前后端分離。
現(xiàn)在,我們來介紹一下如何在MVVM模式下連接數(shù)據(jù)庫。
一、確定需要使用的數(shù)據(jù)庫類型
在使用數(shù)據(jù)庫之前,首先需要明確要使用的數(shù)據(jù)庫類型,例如MySQL、SQL Server、Oracle等。不同的數(shù)據(jù)庫類型在連接方式和參數(shù)上是有所區(qū)別的。因此,在進(jìn)行任何操作之前,首先要確認(rèn)使用的數(shù)據(jù)庫類型,以便正確配置連接器和參數(shù)。
二、安裝數(shù)據(jù)庫驅(qū)動(dòng)程序
在連接數(shù)據(jù)庫之前,需要確保已安裝相關(guān)的數(shù)據(jù)庫驅(qū)動(dòng)程序,在此以MySQL為例,需要安裝MySQL驅(qū)動(dòng)??梢栽贛ySQL官網(wǎng)(https://dev.mysql.com/downloads/connector/net/)下載MySQL的官方驅(qū)動(dòng)程序,安裝后可以在項(xiàng)目中引用該驅(qū)動(dòng),方便在代碼中進(jìn)行數(shù)據(jù)連接相關(guān)的操作。
三、配置數(shù)據(jù)庫連接器
在連接數(shù)據(jù)庫之前,需要配置一個(gè)連接器。連接器是一種通過代碼來訪問和管理數(shù)據(jù)庫的功能,它是與具體數(shù)據(jù)庫類型相關(guān)的。例如,在使用MySQL時(shí),需要使用MySQL連接器來連接和管理MySQL數(shù)據(jù)庫。
基本上,每個(gè)連接器都需要指定以下參數(shù):
1、數(shù)據(jù)庫類型:通常是連接器和數(shù)據(jù)庫類型相關(guān)的;
2、主機(jī)名或IP地址:指定連接的數(shù)據(jù)庫服務(wù)器的位置;
3、端口號(hào):指定連接的數(shù)據(jù)庫服務(wù)器的端口號(hào);
4、數(shù)據(jù)庫名:要連接的數(shù)據(jù)庫的名稱;
5、用戶名和密碼:用于連接數(shù)據(jù)庫的用戶名和密碼。
四、編寫數(shù)據(jù)訪問層
MVVM模式將所有與數(shù)據(jù)相關(guān)的邏輯封裝在數(shù)據(jù)訪問層中,這一層負(fù)責(zé)向ViewModel層提供處理數(shù)據(jù)的功能,并將數(shù)據(jù)傳遞給ViewModel層以進(jìn)行顯示。
數(shù)據(jù)訪問層的工作是通過連接器、SQL命令語句和其他函數(shù)來完成的。這個(gè)層次通常由一些類組成,每個(gè)類對(duì)應(yīng)于一個(gè)表或一個(gè)數(shù)據(jù)模型。
對(duì)于MySQL數(shù)據(jù)庫,可以使用官方提供的MySQL Connector/NET,該模塊提供了訪問和操作MySQL數(shù)據(jù)庫的API。以下示例演示了如何查詢books表中的所有數(shù)據(jù):
using MySql.Data.MySqlClient;
public class BookDAL
{
public DataTable GetAllBooks()
{
MySqlConnection conn = new MySqlConnection(“Server=localhost;Database=mydatabase;Uid=root;Pwd=123456;”);
MySqlDataAdapter da = new MySqlDataAdapter(“SELECT * FROM books”, conn);
DataTable dt = new DataTable();
da.Fill(dt);
return dt;
}
}
在上面的示例中,首先實(shí)例化了一個(gè)數(shù)據(jù)連接器,然后使用該連接器創(chuàng)建一個(gè)數(shù)據(jù)適配器。該適配器通過執(zhí)行SQL查詢語句來獲取數(shù)據(jù),最后用一個(gè)DataTable來保存查詢結(jié)果。
通過這種方式,可以在數(shù)據(jù)訪問層中編寫更多的函數(shù),以便對(duì)數(shù)據(jù)進(jìn)行多種處理,例如查詢、更新、添加、刪除等。
五、調(diào)用數(shù)據(jù)訪問層
在ViewModel層中,需要對(duì)數(shù)據(jù)進(jìn)行處理和顯示。這個(gè)過程包括調(diào)用數(shù)據(jù)訪問層的函數(shù),獲取并處理數(shù)據(jù),然后將數(shù)據(jù)顯示在視圖層的控件上。
如果要顯示books表中的數(shù)據(jù),可以在ViewModel中創(chuàng)建一個(gè)BookViewModel,然后調(diào)用BookDAL中的GetAllBooks函數(shù),獲取表中的所有數(shù)據(jù),例如:
public class BookViewModel : INotifyPropertyChanged
{
private List _books;
public List Books
{
get { return _books; }
set
{
_books = value;
OnPropertyChanged(“Books”);
}
}
private void GetBooks()
{
BookDAL bDal = new BookDAL();
DataTable dt = bDal.GetAllBooks();
List books = new List();
for (int i = 0; i
{
Book b = new Book();
b.ID = Convert.ToInt32(dt.Rows[i][“id”]);
b.Title = dt.Rows[i][“title”].ToString();
b.Author = dt.Rows[i][“author”].ToString();
b.Publisher = dt.Rows[i][“publisher”].ToString();
books.Add(b);
}
Books = books;
}
public BookViewModel()
{
GetBooks();
}
public event PropertyChangedEventHandler PropertyChanged;
protected void OnPropertyChanged(string propertyName)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
從上面的代碼中,可以看到在GetBooks函數(shù)中調(diào)用了BookDAL的GetAllBooks函數(shù),獲取了所有的書籍信息,并通過for循環(huán)將數(shù)據(jù)轉(zhuǎn)化成Book對(duì)象保存到一個(gè)List中。Books屬性被設(shè)置為這個(gè)List,即可以將數(shù)據(jù)顯示在視圖層的控件上。
在MVVM模式下使用數(shù)據(jù)庫,需要進(jìn)行以下步驟:
1、確定需要使用的數(shù)據(jù)庫類型;
2、安裝相應(yīng)的數(shù)據(jù)庫驅(qū)動(dòng)程序;
3、配置數(shù)據(jù)庫連接器;
4、編寫數(shù)據(jù)訪問層并進(jìn)行相應(yīng)的邏輯處理;
5、在ViewModel層中調(diào)用數(shù)據(jù)訪問層,獲取并處理數(shù)據(jù),最終在View層中將數(shù)據(jù)顯示出來。
成都網(wǎng)站建設(shè)公司-創(chuàng)新互聯(lián)為您提供網(wǎng)站建設(shè)、網(wǎng)站制作、網(wǎng)頁設(shè)計(jì)及定制高端網(wǎng)站建設(shè)服務(wù)!
RxSwift(24)——MVVM雙向綁定
在項(xiàng)目開發(fā)中,除了常用的MVC開發(fā)模式,還有一種常用的開發(fā)模式就是
MVVM
。
而RxSwift和
MVVM
可以很好地融合在一起,比如下面例子,場(chǎng)景是輸入框搜索然后返回?cái)?shù)據(jù)顯示:
viewModel 讓 VC 變得輕量級(jí),連接起了 view 和 model ,而RxSwift使這一切更加融洽。通過 searchBar 與 searchTextOb 綁定, searchData 和 tableView 綁定, searchBar 有變化時(shí), searchTextOb 響應(yīng)然后進(jìn)行請(qǐng)求,并通過 map 返回序列化數(shù)據(jù),直接顯示到與之綁定的UI層。
前端的mvvm是什么意思
解決數(shù)據(jù)庫數(shù)據(jù)和頁面顯示的問題而出現(xiàn)前端的MVVM框架
mvvm:Model-View-ViewModel
View表示我們網(wǎng)頁
Model表示網(wǎng)頁動(dòng)態(tài)顯示需要的數(shù)據(jù)
mvvm的設(shè)計(jì)思想主要實(shí)現(xiàn)頁面和數(shù)據(jù)模型的同步,當(dāng)view改變的時(shí)候會(huì)自動(dòng)將數(shù)據(jù)同步到model,model改變的時(shí)候也會(huì)自動(dòng)將數(shù)據(jù)同步到view,更新view的動(dòng)態(tài)顯示,Model可以簡(jiǎn)單理解為與網(wǎng)頁關(guān)聯(lián)的本地?cái)?shù)據(jù)引擎。
View一般就是我們平常說的HTML文本的Js模板,里面可以嵌入一些js模板的代碼,比如Mustache,比如jstl類似的模板偽代碼
ViewModule層里面就是我們對(duì)于這個(gè)視圖區(qū)域的一切js可視業(yè)務(wù)邏輯,舉個(gè)例子,比如圖片走馬燈特效,比如表單按鈕點(diǎn)擊提交,這些自定義事件的注冊(cè)和處理邏輯都寫在ViewModule里面了
Module就更簡(jiǎn)單了,就是對(duì)于純數(shù)據(jù)的處理,比如增刪改查,與后臺(tái)CGI做交互
那么什么是MVVM框架呢??一般他們都是這么做的
1. 定義一串所謂的偽模板代碼,例如通過className標(biāo)注,或者自定義tag的方式,將一段html文本區(qū)域給標(biāo)注聲明起來,意思就是喊一嗓子,“喂,兄弟們,這塊地方我占了,要拉屎去別處拉去”
2. 通過類似jstl之類lamda表達(dá)式,來做js模板,“拜托伙計(jì),天堂有路你不走,非要自己搞一套,你就不能暴露接口讓大家用自己的模板語言,比如Mustache或者jtpl嗎?”
3. 很的封裝一串自己的所謂數(shù)據(jù)模塊組件,與不同類型的數(shù)據(jù)源做數(shù)據(jù)傳輸和適配,一般都不會(huì)分層很清晰,加入后臺(tái)數(shù)據(jù)字段改了,寫框架的都沒腦子的,從來不做數(shù)據(jù)字段的自定義適配(舉個(gè)例子,原來后臺(tái)傳遞的字段是person.userName,現(xiàn)在改成了小寫,person.username,你就的去吧模板再改一下吧,其實(shí)要解決這個(gè)問題,非常簡(jiǎn)單,在MVVM層中引入一層DO,領(lǐng)域?qū)ο髮樱琈odule到DO之間還有一層轉(zhuǎn)換就可以搞定這個(gè)問題)
4. 非不暴露自己的自定義事件模型,就是那個(gè)觀察者模式啦,自己亂七八招在頁面上綁定一堆form change之類的事件,以實(shí)現(xiàn)View與Module的單向綁定
5. 所謂的雙向綁定,也就是OOP語言中早被爛透了的getter,setter模型,ES5+可以用defineProperty,低版本就需要自己在js object賦值的時(shí)間做寫死代碼方式的處理了
MVVM 連接數(shù)據(jù)庫的介紹就聊到這里吧,感謝你花時(shí)間閱讀本站內(nèi)容,更多關(guān)于MVVM 連接數(shù)據(jù)庫,MVVM模式下如何連接數(shù)據(jù)庫,RxSwift(24)——MVVM雙向綁定,前端的mvvm是什么意思的信息別忘了在本站進(jìn)行查找喔。
創(chuàng)新互聯(lián)-老牌IDC、云計(jì)算及IT信息化服務(wù)領(lǐng)域的服務(wù)供應(yīng)商,業(yè)務(wù)涵蓋IDC(互聯(lián)網(wǎng)數(shù)據(jù)中心)服務(wù)、云計(jì)算服務(wù)、IT信息化、AI算力租賃平臺(tái)(智算云),軟件開發(fā),網(wǎng)站建設(shè),咨詢熱線:028-86922220
分享題目:MVVM模式下如何連接數(shù)據(jù)庫(MVVM連接數(shù)據(jù)庫)
網(wǎng)站鏈接:http://www.dlmjj.cn/article/dpsihgd.html


咨詢
建站咨詢
