订阅软件研发RSS CSDN首页> 软件研发

WebMatrix进阶教程(5):如何在网页中使用数据库

发表于2011-03-14 20:39| 来源microsoft.com| 作者microsoft.com

摘要:本期将继续为您介绍以下教程:第5部分介绍数据,您将学习如何在网页中使用数据库,以及使网页更加动态。 导读: MicrosoftWebMatrix 是一个免费的工具,可用于创建、自定义和在 Internet 上发布

本期将继续为您介绍以下教程:您将学习如何在网页中使用数据库,以及使网页更加动态。

导读:Microsoft WebMatrix是一个免费的工具,可用于创建、自定义和在Internet上发布网站。

WebMatrix使您能够轻松创建网站。您可以从一个开源应用程序(比如WordPressJoomla、 DotNetNukeOrchard)开始,WebMatrix会为您处理下载、安装和配置这些应用程序的任务。或者您可以使用许多内置的模板自行编写代码,这些模板有助于您迅速上手。无论您做何选择,WebMatrix都提供了您的网站运行所需的一切内容,包括Web服务器、数据库和框架。通过在您的开发桌面使用与您将在Web主机上使用的相同堆栈,将网站上线的过程变得既轻松又顺利。

您可以从http://web.ms/webmatrix下载它。

现在您只需花几个小时便可学会使用WebMatrixCSSHTMLHTML5ASP.NETSQL、数据库等知识以及如何编写简单的Web应用程序。内容如下:

目前为止您了解了如何使用WebMatrix创建HTML网页,如何使用级联样式表(CSS)有效设置网页的样式,以及如何使用WebMatrix中内置的布局功能和“Razor”语法来将您的注意力集中在网页的内容上,而不是分散到其他杂事上。

在本章中,我们将介绍如何转变您已在使用的静态电影列表,我们将使其动态化。实际来讲,无需使用HTML手动编写电影列表,我们会将它们放在一个数据库中,我们还会让WebMatrix读取该数据库并为我们生成HTML。通过这种方式,我们可以轻松更改数据库,以及自动更新网页。

WebMatrix中创建数据库

首先,在WebMatrix中找到“Databases”工作区并打开它。在窗口中央,您将看到选项“Add a Database to your site”。

选择此选项,WebMatrix将创建一个名为“Movies.sdf”的新数据库。如果您的网站有一个不同的名称,比如“foo”,WebMatrix将基于该名称创建一个数据库(也即foo.sdf)。

您将在窗口左侧的数据库资源管理器中看到该数据库:

向数据库添加表

在窗口顶部,您将看到一个工具功能区,其中显示了您可以对数据库执行的不同操作,包括创建表和查询,以及迁移到其他数据库。从此功能区,选择“New Table”工具。如果选择它时未发生任何事情,请确保您在数据库资源管理器中选择了Movies.sdf。

WebMatrix将为您创建表并打开列编辑器。这允许您在数据库表中创建新列。在数据库词汇中,记录指的是特定实体的所有数据。所以,举例而言,一个人的数据可能是他的姓名、年龄、地址和电话号码记录。列是各个数据部分的值,无论它们位于哪个记录中。所以,在上面的示例中,Name将是一列,Age也是。

所以,对于我们的电影,我们将创建一个类似于下图的数据库:

首先,我们创建ID。ID是特定记录的标识符。您无需拥有ID,尤其是对于这样的简单数据库,但是创建ID是一种很好的做法。当您构建更加复杂的数据库时,您将发现它们对于跟踪和查询数据非常重要。

在列编辑器中,如下图所示,填写详细信息:

这会为该列提供名称“id”,并将它指定为一个编号(bigint),该编号必须有一个值(将Allow Nulls设置为False)。然后它指定该字段为一个ID,这表示我们告诉了数据库我们将此字段用作ID。这样做的好处是,只要我们向数据库添加新记录,它就会自动更新ID,所以我们无需担忧如何跟踪最新添加的内容、获得它的ID并计算出新记录。

现在我们表明了此字段是主键。再次说明,“主键”是一个数据库词汇。键是数据库中具有特殊值的列,通常是您在挑选记录时希望使用的主要内容。数据库使用它们来简化数据的查找。例如,您的工作场所可能为您分配了一个员工编号。此编号使得很容易跟踪您,因为搜索编号“333102”可能比搜索员工“Nizhoni Benally”简单得多,尤其是在您企业中拥有大量员工时。这使您的员工编号成为了用于查找您的键。您可以在数据中使用许多键,主键应该视为最重要的一个。

所以,当在数据库中记录电影时,我们将为每个电影提供一个ID,我们将该ID 设置为主键。

使用功能区中的“New Column”按钮创建另外3列。您将在表中看到3个未命名的空白列。

选择第一个空白行,将它命名为“Name”,将数据类型设置为“ntext”。确保“Is Identity”和“Is Primary Key”为 False。

对于第二个空白行,将它命名为“ReleaseYear”并将它的数据类型保持为“bigint”。

对于第三个空白行,将它命名为“Genre”并将它的数据类型设置为“ntext”。

按下WebMatrix标题栏中的保存按钮保存表。

您将看到一个对话框,要求输入表的名称。将它命名为“Favorites”。

您将看到在窗口左侧显示了该表。

向表添加数据

在此资源管理器中双击该表,该表将打开,其中没有任何数据。

将光标放在Name字段中并向其中键入一个值。完成之后,按下键盘上的Tab键移动到下一个字段(Release Year),为它提供一个值并按Tab键,为Genre提供一个值。

当再次按下Tab键时,您将看到id字段中拥有编号“1”。在此列中不输入任何内容,让数据库输入内容,这是一种不错的想法。您会看到光标现在位于字段中,所以再此按下Tab键返回到Name字段。

多次重复这些步骤输入一些电影。下面是我们目前使用的4部电影。

创建使用数据的网页

在上一篇文章中,您看到了网站使用了布局来创建HTML<head>、样式、正文以及其他内容。如果您是按照本文所述步骤操作的,那么您就已经设置了一个_siteLayout.cshtml和一个_PageStart.cshtml。如果您没有,此代码的剩余内容将不会生效,您将需要返回执行第3部分中的步骤才能使它们生效。

使用布局的一个好处是,您现在仅需要编写特定网页的特定代码,模板上的@RenderBody()调用会将它注入到完整的页面中。

记住这一点之后,创建一个新CSTHML网页并将它命名为 dataMovies.cshtml。

将此网页中的所有代码替换为我们目前为止使用的静态HTML:

   1:  <div id="movieslist">

   2:    <ol>

   3:      <li><a href="#">It's a wonderful life</a></li>

   4:      <li><a href="#">Lord of the Rings</a></li>

   5:      <li><a href="#">The Fourth World</a></li>

   6:      <li><a href="#">The Lion King</a></li>

   7:    </ol>

   8:  </div>

   9:   

仔细分析此代码,您将看到它是一个<div>,指定了一个列表<ol>。

该静态列表中包含4项。如果我们想要第5项,可以添加一个新<li></li>条目。

当从数据库拉取数据时,网页不知道数据库中有多少项,所以它将必须生成“n”个<li></li>元素,其中“n”是数据库中的记录数量。这非常适合于代码循环,稍后您将编写这样一个循环。

但是在这么做之前,首先需要告诉页面数据库的信息。在dataMovies.cshtml的顶部,输入以下代码:

1:  @{

   2:    var db= Database.Open("Movies");

   3:    var sqlQ = "SELECT * FROM Favorites";

   4:    var data = db.Query(sqlQ);

   5:  }

   6:   

分中的“@”符号,它用于告诉服务器下面的代码是它将执行的Razor代码。在本例中,我们拥有许多行代码,所以无需在每行代码前面添加“@”,可以使用@{,然后编写所有代码,最后输入}结束代码块。

如果您使用Java、C++、C或C#编写代码,您可能认识它们,它们就是所谓的“花括号”。

我们逐行看一下此代码:

var db= Database.Open("Movies");

“var”表示变量,这是一个包含数据的可寻址项。该代码告诉服务器打开名为“Movies”的数据库,将对此数据库的引用存储在我们称为“db”的变量中。

var sqlQ = "SELECT * FROM Favorites";

然后这行代码创建一个名为sqlQ的变量,将SQL命令“SELECT * FROM Favorites”存储在其中。

当使用数据库时,常常使用一种名为“结构化查询语言”(SQL)的语言来查找您想要的数据。实际上,它不仅仅能够查询数据,还可用于插入新数据,您在后面的部分中将看到,但现在我们仅使用它来获取数据。

当从数据库获取数据时,经常使用“SELECT”命令。语法是“SELECT<某种内容>FROM<某个地方>WHERE <条件>”

<某种内容>可以是一个字段列表或表示“所有内容”的通配符(*)字符,我们没有设置条件,所以“SELECT * FROM Favorites”命令要求数据库获取Favorites表中的所有列和所有记录。

var data=db.Query(sqlQ);

这使网页上的主要操作。前面您打开了数据库并使用变量“db”引用了它。WebMatrix非常智能,能够知道您打开的是数据库,WebMatrix中的数据库对象包含您可以调用的许多函数(通常称为“方法”)。其中一种是“Query”方法,它运行一条SQL命令。您将该命令作为一个字符串传递给它,数据库执行它,返回一组记录。然后会将这一组记录加载到名为“data”的变量中。现在我们拥有了自己的数据,可以对它执行一些有趣的操作了。

现在,您的网页应该类似于:

1:  @{

   2:    var db= Database.Open("Movies");

   3:    var sqlQ = "SELECT * FROM Favorites";

   4:    var data = db.Query(sqlQ);

   5:  }

   6:  <div id="movieslist">

   7:    <ol>

   8:      <li><a href="#">It's a wonderful life</a></li>

   9:      <li><a href="#">Lord of the Rings</a></li>

  10:      <li><a href="#">The Fourth World</a></li>

  11:      <li><a href="#">The Lion King</a></li>

  12:    </ol>

  13:  </div>

  14:   

我们已从数据库获取了数据,但还未对它执行任何操作。我们的网页上仍然是静态HTML。我们更改一下这些HTML。

首先,删除除<li>字段外的所有内容,使您的<ul>类似于:

1:  <ul>

   2:    <li><a href="#">It's a wonderful life</a></li>

   3:  </ul> 

还记得在前面我们说过,如果有“n”条数据库记录,我们的列表中就应该有“n”个条目。这可以使用循环来实现,那么我们现在编写一个循环。

使用“Razor”,使用@符号添加代码,编写的循环将类似于:

   1:  <ul>

   2:  @foreach(var row in data)

   3:    {

   4:      <li><a href="#">It's a wonderful life</a></li>

   5:    }

   6:  </ul>

   7:   

这段代码告诉服务器计算数据中的行数,针对每一行编写一个<li>标记。

当然,得到的结果将是编写4次“It’s a wonderful life”,因为我的数据库中有4个条目。

 

服务器仅知道它被告知的操作,该代码告诉它写出数据中每行的电影题目。

更多详情请点击:WebMatrix进阶教程(5):如何在网页中使用数据库

0
0
WebMatrix进阶教程(5):如何在网页中使用数据库
  • CSDN官方微信
  • 扫描二维码,向CSDN吐槽
  • 微信号:CSDNnews
程序员移动端订阅下载

微博关注

相关热门文章