MVVM模式下如何连接数据库 (MVVM 连接数据库)

MVVM模式是当前较为流行的软件架构设计模式,起初是由微软提出的,用于开发WPF(Windows Presentation Foundation)应用。它的核心是数据绑定,可以将应用程序的逻辑、界面和数据分离,改善软件开发的可维护性和可扩展性。在MVVM模式中,通过ViewModel层来处理与数据有关的逻辑,例如数据的处理、显示、获取等。

而当需要应用数据库的时候,MVVM模式将此视为数据处理的一部分,将数据库操作封装在数据访问层中,ViewModel层只需要与数据访问层进行交互,实现了前后端分离。

现在,我们来介绍一下如何在MVVM模式下连接数据库。

一、确定需要使用的数据库类型

在使用数据库之前,首先需要明确要使用的数据库类型,例如MySQL、SQL Server、Oracle等。不同的数据库类型在连接方式和参数上是有所区别的。因此,在进行任何操作之前,首先要确认使用的数据库类型,以便正确配置连接器和参数。

二、安装数据库驱动程序

在连接数据库之前,需要确保已安装相关的数据库驱动程序,在此以MySQL为例,需要安装MySQL驱动。可以在MySQL官网(https://dev.mysql.com/downloads/connector/net/)下载MySQL的官方驱动程序,安装后可以在项目中引用该驱动,方便在代码中进行数据连接相关的操作。

三、配置数据库连接器

在连接数据库之前,需要配置一个连接器。连接器是一种通过代码来访问和管理数据库的功能,它是与具体数据库类型相关的。例如,在使用MySQL时,需要使用MySQL连接器来连接和管理MySQL数据库。

基本上,每个连接器都需要指定以下参数:

1、数据库类型:通常是连接器和数据库类型相关的;

2、主机名或IP地址:指定连接的数据库服务器的位置;

3、端口号:指定连接的数据库服务器的端口号;

4、数据库名:要连接的数据库的名称;

5、用户名和密码:用于连接数据库的用户名和密码。

四、编写数据访问层

MVVM模式将所有与数据相关的逻辑封装在数据访问层中,这一层负责向ViewModel层提供处理数据的功能,并将数据传递给ViewModel层以进行显示。

数据访问层的工作是通过连接器、SQL命令语句和其他函数来完成的。这个层次通常由一些类组成,每个类对应于一个表或一个数据模型。

对于MySQL数据库,可以使用官方提供的MySQL Connector/NET,该模块提供了访问和操作MySQL数据库的API。以下示例演示了如何查询books表中的所有数据:

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;

}

}

在上面的示例中,首先实例化了一个数据连接器,然后使用该连接器创建一个数据适配器。该适配器通过执行SQL查询语句来获取数据,最后用一个DataTable来保存查询结果。

通过这种方式,可以在数据访问层中编写更多的函数,以便对数据进行多种处理,例如查询、更新、添加、删除等。

五、调用数据访问层

在ViewModel层中,需要对数据进行处理和显示。这个过程包括调用数据访问层的函数,获取并处理数据,然后将数据显示在视图层的控件上。

如果要显示books表中的数据,可以在ViewModel中创建一个BookViewModel,然后调用BookDAL中的GetAllBooks函数,获取表中的所有数据,例如:

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函数中调用了BookDAL的GetAllBooks函数,获取了所有的书籍信息,并通过for循环将数据转化成Book对象保存到一个List中。Books属性被设置为这个List,即可以将数据显示在视图层的控件上。

在MVVM模式下使用数据库,需要进行以下步骤:

1、确定需要使用的数据库类型;

2、安装相应的数据库驱动程序;

3、配置数据库连接器;

4、编写数据访问层并进行相应的逻辑处理;

5、在ViewModel层中调用数据访问层,获取并处理数据,最终在View层中将数据显示出来。

相关问题拓展阅读:

RxSwift(24)——MVVM双向绑定

在项目开发中,除了常用的MVC开发模式,还有一种常用的开发模式就是

MVVM

而RxSwift和

MVVM

可以很好地融合在一起,比如下面例子,场景是输入框搜索然后返回数据显示:

viewModel 让 VC 变得轻量级,连接起了 view 和 model ,而RxSwift使这一切更加融洽。通过 searchBar 与 searchTextOb 绑定, searchData 和 tableView 绑定, searchBar 有变化时, searchTextOb 响应然后进行请求,并通过 map 返回序列化数据,直接显示到与之绑定的UI层。

前端的mvvm是什么意思

解决数据库数据和页面显示的问题而出现前端的MVVM框架

mvvm:Model-View-ViewModel

View表示我们网页

Model表示网页动态显示需要的数据

mvvm的设计思想主要实现页面和数据模型的同步,当view改变的时候会自动将数据同步到model,model改变的时候也会自动将数据同步到view,更新view的动态显示,Model可以简单理解为与网页关联的本地数据引擎。

View一般就是我们平常说的HTML文本的Js模板,里面可以嵌入一些js模板的代码,比如Mustache,比如jstl类似的模板伪代码

ViewModule层里面就是我们对于这个视图区域的一切js可视业务逻辑,举个例子,比如图片走马灯特效,比如表单按钮点击提交,这些自定义事件的注册和处理逻辑都写在ViewModule里面了

Module就更简单了,就是对于纯数据的处理,比如增删改查,与后台CGI做交互

那么什么是MVVM框架呢??一般他们都是这么做的

1.  定义一串所谓的伪模板代码,例如通过className标注,或者自定义tag的方式,将一段html文本区域给标注声明起来,意思就是喊一嗓子,“喂,兄弟们,这块地方我占了,要拉屎去别处拉去”

2.  通过类似jstl之类lamda表达式,来做js模板,“拜托伙计,天堂有路你不走,非要自己搞一套,你就不能暴露接口让大家用自己的模板语言,比如Mustache或者jtpl吗?”

3.  很的封装一串自己的所谓数据模块组件,与不同类型的数据源做数据传输和适配,一般都不会分层很清晰,加入后台数据字段改了,写框架的都没脑子的,从来不做数据字段的自定义适配(举个例子,原来后台传递的字段是person.userName,现在改成了小写,person.username,你就的去吧模板再改一下吧,其实要解决这个问题,非常简单,在MVVM层中引入一层DO,领域对象层,Module到DO之间还有一层转换就可以搞定这个问题)

4.  非不暴露自己的自定义事件模型,就是那个观察者模式啦,自己乱七八招在页面上绑定一堆form change之类的事件,以实现View与Module的单向绑定

5.  所谓的双向绑定,也就是OOP语言中早被烂透了的getter,setter模型,ES5+可以用defineProperty,低版本就需要自己在js object赋值的时间做写死代码方式的处理了

MVVM 连接数据库的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于MVVM 连接数据库,MVVM模式下如何连接数据库,RxSwift(24)——MVVM双向绑定,前端的mvvm是什么意思的信息别忘了在本站进行查找喔。


数据运维技术 » MVVM模式下如何连接数据库 (MVVM 连接数据库)