Visual;Studio包含了用于数据库管理的工具,例如数据库浏览器(Database;Explorer)和查询构造器(Query;Builder),你可以使用它们来管理SQL;Server;Express数据库。Visual;Studio还支持一种新的基于文件的数据库,用于建立SQL;Server;Express数据库并把它作为项目的一部分。同时,Visual;Studio;2005;和SQL;Server;2005;Express为建立和部署数据驱动的Web应用程序提供了完整的解决方案,包括下面一些特性:
・;数据库项目数据项
・;本地数据库连接
・;数据库浏览器管理
・;相对路径连接字符串
・;XCopy部署支持
・;集成的调试支持
本文描述Visual;Studio;2005中的基于文件的数据库方式和设计器如何建立和使用这些数据库。
Visual;Web;Developer和数据
Visual;Web;Developer为Web应用程序使用数据库提供了大量的工具。你可以使用数据库浏览器轻易地连接到数据库并建立或查看数据库关系图或大纲(schema)。你还可以使用查询构造器对话框和查询结果表格来查询数据库和进行数据填充。建立新数据库(使用本地文件)也是作为项目数据项提供的。
一旦在Visual;Web;Developer中连接了数据库,就可以把数据库表直接拖放到页面上,以建立数据绑定的GridView控件。Visual;Web;Developer自动地建立一个关联的数据源控件,并根据数据表来配置它的选择、更新、插入和删除操作。这种快捷操作为你节省了手动建立数据源所需的大量工作,你也可以轻易地根据需要,用适合的数据绑定控件代替GridView。
本地和服务器数据库
你可能已经熟悉了基于服务器的数据库和连接字符串。在这种情况下,数据库服务器(例如SQL;Server;2005)把数据库名称与服务器所维护的数据库文件相关联。你可以通过指定服务器名称、数据库名称和凭证来连接到基于服务器的数据库,例如:
"server=(local)/SQLExpress;database=Pubs;Integrated;Security=true"
但是,Visual;Studio;2005还支持本地数据库的概念,它是添加到当前Web应用程序的App_Data目录中的一个文件。在App_Data目录中存储数据文件是安全的,因为这个目录中的内容永远不会响应用户的请求。这个目录也是存储XML文件和其它数据存储的推荐位置。本地的SQL;Server;Express数据库带有.MDF扩展名(例如"MyDatabase.MDF"),它是SQL;Server支持的标准文件格式。当连接到服务器的时候,数据库还有一个关联的日志文件(例如"MyDatabase_log.LDF")。数据库文件和日志文件的位置必须在一起。
我们可以通过使用相对路径连接字符串把本地文件数据库自动地附加到SQL;Server;Express。相对路径确保了应用程序迁移到任何其它地方的时候都不会中断数据库连接。Web应用程序中的相对路径连接字符串如下所示:
"server=(local)/SQLExpress;AttachDbFileName=|DataDirectory|MyDatabase.mdf;Integrated;Security=true;User;Instance=true"
上面的连接字符串还有两个额外的属性。AttachDbFileName属性指定连接打开的时候动态附加到服务器上的数据库文件的位置。尽管这个属性可以接受数据库的完整路径(例如使用|DataDirectory|语法),但是在运行时这个路径会被应用程序的App_Data目录所代替。这也保证了应用程序迁移到其它位置的时候连接不会中断。第二个属性是User;Instance=true,它指定SQL;Server;Express附加数据库的方式。在这种情况下,SQL;Server;Express为了把数据库附加到新的实例,建立一个新的进程,在打开连接的用户身份下运行。在ASP.NET应用程序中,这个用户是本地的ASPNET;帐号或默认的Network;Service,这依赖于操作系统。为了安全地附加非系统管理员帐号(例如ASP.NET帐号)提供的数据库文件,建立一个独立的SQL;Server用户实例是必要的。
请注意:由于在默认情况下,所有的ASP.NET应用程序运行在同一个进程下,因此所有的应用程序会把本地数据库附加到同一个SQL;Server;Express实例。这意味着不管应用程序最初附加的数据库是哪一个,所有的应用程序对附加到这个实例的所有数据库都拥有相同的访问权限。为了隔离不同的应用程序,你必须让每个应用程序运行在不同的工作进程或应用程序池(在IIS;6中)中。由于这个原因,本地SQL;Server数据库主要是为了方便开发,而不是用于代替共享主机环境下的基于服务器的数据库。
另外一个要点是,不允许两个用户同时连接到一个本地数据库。在Visual;Studio中设计应用程序的时候,设计器自动地释放连接,以保证Visual;Studio和ASP.NET能够共享数据库文件(例如在设计器中调试运行中的应用程序)。建立本地数据库
你可以轻易地在Visual;Studio的Web应用程序项目中建立本地数据库。由于Visual;Studio安装了SQL;Server;Express,你可以使用下面的步骤来建立一个本地数据库、添加数据表并填充数据。
建立本地数据库:
1.;右键点击解决方案浏览器并选择"添加新项…"选项。
2.;选择"SQL数据库"项并指定一个文件名,例如"Database.mdf"。
3.;Visual;Studio提示把这个文件添加到App_Data目录中。点击"是"。
4.;Visual;Studio添加这个文件并自动地使用数据库浏览器连接到这个数据库。
给本地数据库添加数据表:
1.;右键点击数据库浏览器中的Tables(数据表)节点并选择"添加新表"选项。
2.;输入数据库中列的名称和类型,可以选择在属性表格中设置其它一些列属性。为了建立示例Contacts数据库,请遵循下面的步骤。
3.;把第一列的名称设置为"ContactID",数据类型设置为"int"。取消"允许空"检查框的选中状态。
4.;右键点击ContactID列左边的灰色方块并选择"设置为主健"选项。
5.;在下方的"列属性"表格中,展开"标识符规范"节点并把"是否为标识符"设置为"是"。
6.;把第二列的名称设置为"ContactName",数据类型设置为"varchar(50)"。让"允许空"检查框保持选中状态。
7.;按下Ctrl-S保存表并把表名设置为"Contacts"。点击OK保存表。
8.;关闭表定义窗口。
用数据填充表:
1.;右键点击数据库浏览器中的数据表节点(例如"Contacts")并选择"显示表数据"选项。
2.;在显示的表格中输入数据表行的数据。如果使用上面的Contacts示例,你可以在ContactName列中输入值,数据库会自动地生成相应的ContactID值。
3.;关闭表格窗口。
建立本地数据库
你可以轻易地在Visual;Studio的Web应用程序项目中建立本地数据库。由于Visual;Studio安装了SQL;Server;Express,你可以使用下面的步骤来建立一个本地数据库、添加数据表并填充数据。
建立本地数据库:
1.;右键点击解决方案浏览器并选择"添加新项…"选项。
2.;选择"SQL数据库"项并指定一个文件名,例如"Database.mdf"。
3.;Visual;Studio提示把这个文件添加到App_Data目录中。点击"是"。
4.;Visual;Studio添加这个文件并自动地使用数据库浏览器连接到这个数据库。
给本地数据库添加数据表:
1.;右键点击数据库浏览器中的Tables(数据表)节点并选择"添加新表"选项。
2.;输入数据库中列的名称和类型,可以选择在属性表格中设置其它一些列属性。为了建立示例Contacts数据库,请遵循下面的步骤。
3.;把第一列的名称设置为"ContactID",数据类型设置为"int"。取消"允许空"检查框的选中状态。
4.;右键点击ContactID列左边的灰色方块并选择"设置为主健"选项。
5.;在下方的"列属性"表格中,展开"标识符规范"节点并把"是否为标识符"设置为"是"。
6.;把第二列的名称设置为"ContactName",数据类型设置为"varchar(50)"。让"允许空"检查框保持选中状态。
7.;按下Ctrl-S保存表并把表名设置为"Contacts"。点击OK保存表。
8.;关闭表定义窗口。
用数据填充表:
1.;右键点击数据库浏览器中的数据表节点(例如"Contacts")并选择"显示表数据"选项。
2.;在显示的表格中输入数据表行的数据。如果使用上面的Contacts示例,你可以在ContactName列中输入值,数据库会自动地生成相应的ContactID值。
3.;关闭表格窗口。
<asp:GridView;AllowSorting="True";AutoGenerateColumns="False";DataKeyNames="ContactID";DataSourceID="SqlDataSource1";ID="GridView1";runat="server"><Columns><asp:BoundField;DataField="ContactID";HeaderText="ID";ReadOnly="True";SortExpression="ID";/><asp:BoundField;DataField="ContactName";HeaderText="Name";SortExpression="Name";/></Columns></asp:GridView><asp:SqlDataSource;ConnectionString="<%$;ConnectionStrings:ContactsDatabase;%>";ID="SqlDataSource1";runat="server";SelectCommand="SELECT;[ContactID],;[ContactName];FROM;[Contacts]";OnSelected="SqlDataSource1_Selected"></asp:SqlDataSource>
标签: