📄 在 visual studio _net 中使用 sql server 2000 生成数据库应用程序.htm
字号:
Transact-SQL 语句创建选择、插入、更新和删除等存储过程。
<LI><B>Use existing stored procedures</B>(使用现有存储过程)-
最多可以指定四个现有的存储过程,分别对应以下四种操作。您不必指定全部四个存储过程。对于指定的每个存储过程,<B>SqlDataAdapter</B>
被配置为将存储过程与相应的数据库操作相关联:
<P><B> 选择</B> - 从数据库中读取现有数据
<P> <B>插入</B> - 向数据库的一个或多个表中插入新行
<P> <B>更新</B> - 更新现有的行
<P> <B>删除</B> - 删除现有的行 </P></LI></UL>
<P>无论选择何种查询类型,都可以选择使用图形化的查询工具来生成查询,并从以下高级 Transact-SQL 生成选项中进行选择:
<UL type=disc>
<LI><B>Use the Select statement</B>(使用 Select 语句)- 基于 Select 语句生成
Insert、Update 和 Delete 语句。
<LI><B>Use optimistic concurrency</B>(使用开放式并发)- 修改 Update 和 Delete
语句以确定在记录被加载到数据集后数据库是否发生了改变。
<LI><B>Refresh the dataset</B>(刷新数据集)- 添加一个 Select
语句以检索标识列值并刷新由数据库计算的值。 </LI></UL>
<P>选择 <B>Use</B> <B>existing stored procedures</B>(使用现有存储过程)作为查询类型。
<P class=fig1><IMG alt=""
src="在 Visual Studio _NET 中使用 SQL Server 2000 生成数据库应用程序.files/sql_builddbappsinvsnet_13.gif"
border=0>
<P class=label><B>图 13:选择查询类型属性表</B> </P>
<LI>在 <B>Bind Commands to Existing Stored
Procedures</B>(将命令绑定到现有存储过程)页面的 <B>Select</B>(选择)下拉列表框中,选择
<B>BrowseInvoiceTotals</B>。
<P class=fig1><IMG alt=""
src="在 Visual Studio _NET 中使用 SQL Server 2000 生成数据库应用程序.files/sql_builddbappsinvsnet_14.gif"
border=0>
<P class=label><B>图 14:将命令绑定到现有存储过程属性表 </B></P>
<LI>忽略 <B>Insert</B>(插入)、<B>Update</B>(更新)和 <B>Delete</B>(删除)下拉列表。单击
<B>Next</B>(下一步),然后单击 <B>Finish</B>(完成)。
<P class=fig1><IMG alt=""
src="在 Visual Studio _NET 中使用 SQL Server 2000 生成数据库应用程序.files/sql_builddbappsinvsnet_15.gif"
border=0>
<P class=label><B>图 15:查看向导结果</B> </P></LI></OL>
<P>下一步,我们将配置 <B>SqlDataAdapter</B> 生成的数据集。</P>
<P><B>配置数据集</B>
<OL type=1>
<LI>在 <B>Form1</B> 上右键单击 <B>SqlDataAdapter1</B> 图标,然后单击 <B>Generate
Dataset</B>(生成数据集)。
<P class=fig1><IMG alt=""
src="在 Visual Studio _NET 中使用 SQL Server 2000 生成数据库应用程序.files/sql_builddbappsinvsnet_16.gif"
border=0>
<P class=label><B>图 16:为 SqlDataAdapter 生成数据集</B> </P>
<LI>在 <B>Generate Dataset</B>(生成数据集)对话框中,选择 <B>New
dataset</B>(新建数据集),然后键入名称 <I>BrowseInvoiceTotalsDS</I>。
<LI>位于页面底部的窗口中的 <B>BrowseInvoiceTotals(SqlDataAdapter1)</B> 应已被选中。单击
<B>OK</B>(确定)。
<P class=fig1><IMG alt=""
src="在 Visual Studio _NET 中使用 SQL Server 2000 生成数据库应用程序.files/sql_builddbappsinvsnet_17.gif"
border=0>
<P class=label><B>图 17:生成数据集属性表</B> </P></LI></OL>
<P>下一步,我们将为 Form1 创建窗体元素。</P>
<P><B>创建窗体元素</B>
<OL type=1>
<LI>向 Form1 添加一个 <B>DataGrid</B> 控件。
<LI>打开工具箱,然后单击 <B>Windows Forms</B>(Windows 窗体)。
<LI>将一个 <B>DataGrid</B> 控件拖放到 <B>Form1</B> 上,右键单击 <B>DataGrid</B>
控件,然后单击 <B>Properties</B>(属性)。将 <B>DataGrid</B> 控件的 <B>CaptionText</B>
属性更改为 <I>Invoice Report</I>。
<LI>配置 <B>DataGrid</B> 控件的属性,以将其绑定到数据:在 <B>Properties</B>(属性)下的
<B>Data</B>(数据)部分中,将 <B>DataSource</B> 属性设置为
<B>BrowseInvoiceTotalsDS1.BrowseInvoiceTotals</B>。
<P><A
href="http://msdn.microsoft.com/library/en-us/dnsql2k/html/sql_builddbappsinvsnet_18.gif"
target=_Top><IMG alt=单击此处查看大图像
src="在 Visual Studio _NET 中使用 SQL Server 2000 生成数据库应用程序.files/sql_builddbappsinvsnet_18_thumb.gif"
border=0></A></P>
<P class=label><B>图 18:DataGrid 属性页(单击图片以查看大图像)</B> </P>
<LI>调整 <B>DataGrid</B> 控件的大小,使所有的列都可见。
<LI>要填充数据集,请向 <B>Form1</B> 中添加一个按钮,然后将其 <B>Text</B> 属性和 <B>Name</B>
属性更改为 <I>RunReport</I>。
<LI>双击按钮打开代码窗口。将以下代码行添加到 <B>RunReport_Click</B> 子例程中并保存该应用程序: <PRE class=code>BrowseInvoiceTotalsDS1.Clear
' 使用 SqlDataAdapter 填充 DS
SqlDataAdapter1.Fill(BrowseInvoiceTotalsDS1)
</PRE></LI></OL>
<P>现在,可以测试我们的应用程序了。运行该应用程序,然后单击 <B>RunReport</B> 按钮。<B>SqlDataAdapter</B>
将连接到数据库,运行我们的存储过程和函数,加载数据集并将数据传递到数据网格中。输出结果应类似于图 19 所示的结果。</P>
<P class=fig><IMG alt=""
src="在 Visual Studio _NET 中使用 SQL Server 2000 生成数据库应用程序.files/sql_builddbappsinvsnet_19.gif"
border=0></P>
<P class=label><B>图 19:示例应用程序的输出 </B></P>
<P>下一步,我们将创建一个数据维护窗体。</P>
<P><B>创建数据维护窗体</B>
<OL type=1>
<LI>向 ServiceCall 项目添加一个新窗体 (<B>Form2</B>):在解决方案资源管理器中,单击右键项目名称,然后依次单击
<B>Add</B>(添加)和 <B>Add Windows Form</B>(添加 Windows 窗体)。
<LI>在 <B>Templates</B>(模板)下,单击 <B>Windows Form</B>(Windows 窗体)模板,然后单击
<B>Open</B>(打开)。
<LI>向窗体中添加一个 <B>SqlDataAdapter</B> 控件。将启动数据适配器配置向导。
<LI>为 <B>SqlDataAdapter</B> 选择现有的 ServiceCall 连接。对于此
<B>SqlDataAdapter</B> 控件,我们将让 Visual Studio .NET 为我们创建所需的存储过程。
<LI>单击 <B>Create new stored procedures</B>(创建新存储过程),然后单击
<B>Next</B>(下一步)。将打开 <B>Generate the stored procedures</B>(生成存储过程)页面。
<LI>单击查询生成器,将 Customers 表添加到查询,然后关闭 <B>Add Table</B>(添加表)对话框。
<LI>在关系图窗格中,选择所有的列,然后依次单击 <B>OK</B>(确定)和 <B>Next</B>(下一步)。
<LI>在 <B>Create the Stored
Procedures</B>(创建存储过程)属性页中,分别为四个新存储过程提供一个名称(此示例中使用
CustomersSelect、CustomersDelete、CustomersInsert 和 CustomersUpdate),然后单击
<B>Next</B>(下一步)。
<LI>当向导的最后一页显示成功生成所有存储过程的消息时,单击 <B>Finish</B>(完成)。
<LI>打开 <B>SqlDataAdapter</B> 控件的属性页,查看以下属性;这些属性的值被设置为我们所提供的存储过程名称:
<UL type=disc>
<LI>SelectCommand.CommandText 的值为 CustomersSelect。
<LI>DeleteCommand.CommandText 的值为 CustomersDelete。
<LI>InsertCommand.CommandText 的值为 CustomersInsert。
<LI>UpdateCommand.CommandText 的值为 CustomersUpdate。 </LI></UL></LI></OL>
<P>Visual Studio .NET 创建了四个存储过程(基于我们提供的 Select 语句)、将其编译到数据库并配置了
SqlDataAdapter 控件以使用这些存储过程。</P>
<P>下一步要生成我们为 Form2 创建的 <B>SqlDataAdapter</B> 的数据集。</P>
<P><B>生成数据集</B>
<OL type=1>
<LI>右键单击 <B>SqlDataAdapter</B>,然后单击 <B>Generate DataSet</B>(生成数据集)。
<LI>将数据集命名为 <B>CustomersDS</B>。
<LI>向窗体添加 <B>DataGrid</B> 控件,然后将该控件的 <B>DataSource</B> 属性设置为
<B>CustomersDS1.Customers</B>、<B>CaptionText</B> 属性设置为 <I>Maintain
Customers</I>。
<LI>调整 <B>DataGrid</B> 控件的大小,使所有的列都可见。
<LI>在数据网格下添加一个按钮,将其 <B>Text</B> 属性和 <B>Name</B> 属性更改为 <I>Load</I>。
<LI>在第一个按钮旁添加另一个按钮,将其 <B>Text</B> 属性和 <B>Name</B> 属性更改为 <I>Update</I>。
<LI>双击 <B>Load</B> 按钮打开代码窗口,然后向 <B>Load</B> 按钮的单击事件中添加以下代码: <PRE class=code>CustomersDS1.Clear()
SqlDataAdapter1.Fill(CustomersDS1)
</PRE>
<LI>在 <B>Update</B> 按钮的单击事件中,添加以下代码: <PRE class=code>SqlDataAdapter1.Update(CustomersDS1)
</PRE></LI></OL>
<P>运行应用程序之前,必须将项目的 <B>Startup</B> 对象更改为 <B>Form2</B>。</P>
<P><B>更改 Startup 对象</B>
<OL type=1>
<LI>在解决方案资源管理器中,右键单击 <B>ServiceCall</B> 项目,然后单击 <B>Properties</B>(属性)。
<LI>在 <B>Startup object</B>(启动对象)下,将 <B>Startup</B> 对象更改为
<B>Form2</B>,然后单击 <B>OK</B>(确定)。 </LI></OL>
<P>运行应用程序以打开维护窗体 (<B>Form2</B>)。单击 <B>Load</B> 按钮加载带有表中现有数据的数据网格。屏幕应类似于图
20 所示。</P>
<P class=fig>
<P><A
href="http://msdn.microsoft.com/library/en-us/dnsql2k/html/sql_builddbappsinvsnet_20.gif"
target=_Top><IMG alt=单击此处查看大图像
src="在 Visual Studio _NET 中使用 SQL Server 2000 生成数据库应用程序.files/sql_builddbappsinvsnet_20_thumb.gif"
border=0></A></P>
<P></P>
<P class=label><B>图 20:示例应用程序输出结果(单击图片以查看大图像) </B></P>
<P><B>更新 ServiceCall 数据库</B>
<OL type=1>
<LI>要删除行,请单击该行,然后按 <B>Delete</B>(删除)键。
<LI>要添加新行,请单击网格末尾空行中的任意单元格,然后提供相应的值。
<LI>完成更改后,单击 <B>Update</B>(更新)。 </LI></OL>
<P>系统将检查网格中每一行的 RowStatus、调用相应的存储过程并传入正确的参数以处理请求的操作。</P>
<P>此示例展示了 Visual Studio .NET IDE 和框架的强大功能。我们仅使用了几行代码,就创建了功能完备的表维护应用程序。</P>
<H3 class=dtH1><A name=sql_builddbappsinvsnet_topic3e></A>使用 ADO.NET 访问
SQL Server </H3>
<P>Microsoft .NET Framework 提供了名为 ADO.NET 的 ADO 的新版本。ADO.NET
功能得到了增强,能够更好地支持分布式应用程序的开发,并主要依赖 XML 作为其内部数据结构。 </P>
<P>在以前版本的 ADO 中,<B>Recordset</B> 对象是开发人员用于处理来自数据存储的数据的主要对象。在 ADO.NET
中,<B>DataSet 对象取代了 Recordset</B> 对象。<B>DataSet</B>
是用户使用的数据在内存中的副本。<B>DataSet</B> 可以包含一个或多个 <B>DataTables</B>。您可以将
<B>DataSet</B> 视为一个虚拟关系数据库。<B>DataSet</B>
完全独立于原始数据源,而且不是用来与数据源进行直接通信。ADO.NET 是使用托管提供程序与数据源进行通信的。</P>
<P>ADO.NET 提供两种托管提供程序:一种用于 SQL Server 数据库,另一种用于任何 OLE DB
兼容数据库。到目前为止,我们创建的所有示例都使用了 SQL Server 托管提供程序。如果查看工具箱中
<B>Data</B>(数据)下的选项,您会注意到三对名称相同但前缀不同的控件。下表列出了这三对控件。</P>
<TABLE class=data>
<TBODY>
<TR vAlign=top>
<TH class=data align=left width="50%">SQL Server</TH>
<TH class=data align=left width="50%">OLE DB</TH></TR>
<TR vAlign=top>
<TD class=data width="50%">SqlDataAdapter</TD>
<TD class=data width="50%">OLEDBDataAdapter</TD></TR>
<TR vAlign=top>
<TD class=data width="50%">SqlDataConnection</TD>
<TD class=data width="50%">OLEDBDataConnection</TD></TR>
<TR vAlign=top>
<TD class=data width="50%">SqlCommand</TD>
<TD class=data width="50%">OLEDBCommand</TD></TR></TBODY></TABLE>
<P>前缀为 <I>OLEDB</I> 的控件表示 OLE DB 托管提供程序,可用于访问所有与 OLE DB 兼容的数据库。这些控件与当前的
ADO 对象类似,但已被改写为托管代码,因而可以在 .NET Framework 中使用。</P>
<P>前缀为 <I>SQL</I> 的控件表示 SQL Server 托管提供程序,只能用于 SQL Server。与其 OLE DB
的对应控件相比,这些控件具有一些优点。首先,这些对象使用本地表格数据流 (TDS) 接口以获得最佳性能。OLE DB
对象所需的其他接口层已被删除,这使数据库的访问速度更快。其次,从这些控件中创建的 SQL 对象具有其他一些方法,这些方法利用了专用于 SQL
Server 的功能。这为使用 SQL Server 进行设计和编程提供了更大的灵活性。</P>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -