`
isiqi
  • 浏览: 16003890 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

ASP.NET - 使用 SqlDataSource 控件修改数据

阅读更多

可以使用 SqlDataSource 控件修改数据库中的数据。使用更新方案中的 SqlDataSource 控件的最常用方法是检索数据并使用数据绑定 Web 服务器控件(如 GridViewDetailsView FormView 控件)显示数据。可以配置数据绑定控件和 SqlDataSource 以更新数据。大多数数据绑定控件都允许您将其配置为支持插入、更新及删除操作,并且它们会将要更新的值传递给数据源控件。然后,数据源控件会使用 SQL 语句或存储过程将更新后的值提交到数据库。

SqlDataSource 控件被设计为以一次更新一个记录的方式更新数据。如果需要执行批处理更新,则必须在 ASP.NET 应用程序中编写显式循环逻辑。

一、基本操作

若要使用 SqlDataSource 控件修改数据库中的数据,需要至少设置以下属性:

·ProviderName: 设置为 ADO.NET 提供程序的名称,该提供程序表示您正在使用的数据库。

·ConnectionString: 设置为用于数据库的连接字符串。

·SqlDataSource 命令属性: 设置为修改数据库中的数据的 SQL 语句。

二、提供程序名称

ProviderName 属性设置为存储数据的数据库类型的 ADO.NET 提供程序名称,该操作可以包括以下内容:

·如果您正在使用 Microsoft SQL Server,请将 ProviderName 属性设置为“System.Data.SqlClient”。如果您没有指定其他提供程序,则该提供程序将为默认提供程序。

·如果您正在使用 Oracle 数据库,请将 ProviderName 属性设置为“System.Data.OracleClient”。

·如果您正在使用 OLE DB 数据源,请将 ProviderName 属性设置为“System.Data.OleDb”。

·如果您正在使用 ODBC 数据源,请将 ProviderName 属性设置为“System.Data.Odbc”。

三、连接字符串

要连接至特定数据库,请设置 ConnectionString 属性。建议您将连接字符串存储在应用程序配置文件的 ConnectionStrings 元素中。然后,可以使用控件标记中的 <%$ ConnectionStrings:connectionStringName %> 语法引用存储的连接字符串。连接字符串必须为指定 ProviderName 的有效连接字符串。

四、命令

SqlDataSource 控件有三个命令属性,即 InsertCommandUpdateCommand DeleteCommand 属性,这些属性可以包含用于修改数据的 SQL 语句。这些命令属性可以设置为 SQL 语句,或者,如果数据源支持存储过程,也可以设置为存储过程的名称。SQL 语句的实际语法取决于您的数据架构和您所使用的数据库。如果数据源支持参数,则语句中可以包含参数。

说明: 为命令属性设置的语句与在编写 ADO.NET 数据操作代码时为 ADO.NET IDbCommand 对象的 CommandText 属性设置的语句相同。

UpdateCommand 属性中的 SQL 语句在每次调用 Update 方法时执行。当用户在 GridViewFormView DetailsView 控件中单击“更新”按钮时,Update 方法将由数据绑定控件隐式调用。还可以通过自己的代码显式调用此方法。SqlDataSource 控件的 Insert Delete 方法的工作方式类似。

下面的代码示例显示如何使用 SqlDataSource 控件插入、更新和删除使用 FormView 控件的记录。该示例连接至 SQL Server Northwind 数据库。

<%@ Page language="C#" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">

void EmployeesGridView_OnSelectedIndexChanged(Object sender, EventArgs e)

{

EmployeeDetailsSqlDataSource.SelectParameters["EmpID"].DefaultValue =

EmployeesGridView.SelectedValue.ToString();

EmployeeFormView.DataBind();

}

void EmployeeFormView_ItemUpdated(Object sender, FormViewUpdatedEventArgs e)

{

EmployeesGridView.DataBind();

}

void EmployeeFormView_ItemDeleted(Object sender, FormViewDeletedEventArgs e)

{

EmployeesGridView.DataBind();

}

void EmployeeDetailsSqlDataSource_OnInserted(Object sender, SqlDataSourceStatusEventArgs e)

{

System.Data.Common.DbCommand command = e.Command;

EmployeeDetailsSqlDataSource.SelectParameters["EmpID"].DefaultValue =

command.Parameters["@EmpID"].Value.ToString();

EmployeesGridView.DataBind();

EmployeeFormView.DataBind();

}

</script>

<html >

<head runat="server">

<title>FormView Example</title>

</head>

<body>

<form id="form1" runat="server">

<h3>FormView Example</h3>

<table cellspacing="10">

<tr>

<td>

<asp:GridView ID="EmployeesGridView"

DataSourceID="EmployeesSqlDataSource"

AutoGenerateColumns="false"

DataKeyNames="EmployeeID"

OnSelectedIndexChanged="EmployeesGridView_OnSelectedIndexChanged"

RunAt="Server">

<HeaderStyle backcolor="Navy"

forecolor="White" />

<Columns>

<asp:ButtonField Text="Details..."

HeaderText="Show<BR>Details"

CommandName="Select"/>

<asp:BoundField DataField="EmployeeID" HeaderText="Employee ID"/>

<asp:BoundField DataField="LastName" HeaderText="Last Name"/>

<asp:BoundField DataField="FirstName" HeaderText="First Name"/>

</Columns>

</asp:GridView>

</td>

<td valign="top">

<asp:FormView ID="EmployeeFormView"

DataSourceID="EmployeeDetailsSqlDataSource"

DataKeyNames="EmployeeID"

Gridlines="Both"

OnItemUpdated="EmployeeFormView_ItemUpdated"

OnItemDeleted="EmployeeFormView_ItemDeleted"

RunAt="server">

<HeaderStyle backcolor="Navy"

forecolor="White"/>

<RowStyle backcolor="White"/>

<EditRowStyle backcolor="LightCyan"/>

<ItemTemplate>

<table>

<tr><td align="right"><b>Employee ID:</b></td><td><%# Eval("EmployeeID") %></td></tr>

<tr><td align="right"><b>First Name:</b></td> <td><%# Eval("FirstName") %></td></tr>

<tr><td align="right"><b>Last Name:</b></td> <td><%# Eval("LastName") %></td></tr>

<tr>

<td colspan="2">

<asp:LinkButton ID="EditButton"

Text="Edit"

CommandName="Edit"

RunAt="server"/>

&nbsp;

<asp:LinkButton ID="NewButton"

Text="New"

CommandName="New"

RunAt="server"/>

&nbsp;

<asp:LinkButton ID="DeleteButton"

Text="Delete"

CommandName="Delete"

RunAt="server"/>

</td>

</tr>

</table>

</ItemTemplate>

<EditItemTemplate>

<table>

<tr><td align="right"><b>Employee ID:</b></td><td><%# Eval("EmployeeID") %></td></tr>

<tr><td align="right"><b>First Name:</b></td>

<td><asp:TextBox ID="EditFirstNameTextBox"

Text='<%# Bind("FirstName") %>'

RunAt="Server" /></td></tr>

<tr><td align="right"><b>Last Name:</b></td>

<td><asp:TextBox ID="EditLastNameTextBox"

Text='<%# Bind("LastName") %>'

RunAt="Server" /></td></tr>

<tr>

<td colspan="2">

<asp:LinkButton ID="UpdateButton"

Text="Update"

CommandName="Update"

RunAt="server"/>

&nbsp;

<asp:LinkButton ID="CancelUpdateButton"

Text="Cancel"

CommandName="Cancel"

RunAt="server"/>

</td>

</tr>

</table>

</EditItemTemplate>

<InsertItemTemplate>

<table>

<tr><td align="right"><b>First Name:</b></td>

<td><asp:TextBox ID="InsertFirstNameTextBox"

Text='<%# Bind("FirstName") %>'

RunAt="Server" /></td></tr>

<tr><td align="right"><b>Last Name:</b></td>

<td><asp:TextBox ID="InsertLastNameTextBox"

Text='<%# Bind("LastName") %>'

RunAt="Server" /></td></tr>

<tr>

<td colspan="2">

<asp:LinkButton ID="InsertButton"

Text="Insert"

CommandName="Insert"

RunAt="server"/>

&nbsp;

<asp:LinkButton ID="CancelInsertButton"

Text="Cancel"

CommandName="Cancel"

RunAt="server"/>

</td>

</tr>

</table>

</InsertItemTemplate>

</asp:FormView>

</td>

</tr>

</table>

<asp:sqlDataSource ID="EmployeesSqlDataSource"

selectCommand="SELECT EmployeeID, FirstName, LastName FROM Employees"

connectionstring="<%$ ConnectionStrings:NorthwindConnection %>"

RunAt="server">

</asp:sqlDataSource>

<asp:sqlDataSource ID="EmployeeDetailsSqlDataSource"

SelectCommand="SELECT EmployeeID, LastName, FirstName FROM Employees WHERE EmployeeID = @EmpID"

InsertCommand="INSERT INTO Employees(LastName, FirstName) VALUES (@LastName, @FirstName);

SELECT @EmpID = SCOPE_IDENTITY()"

UpdateCommand="UPDATE Employees SET LastName=@LastName, FirstName=@FirstName

WHERE EmployeeID=@EmployeeID"

DeleteCommand="DELETE Employees WHERE EmployeeID=@EmployeeID"

ConnectionString="<%$ ConnectionStrings:NorthwindConnection %>"

OnInserted="EmployeeDetailsSqlDataSource_OnInserted"

RunAt="server">

<SelectParameters>

<asp:Parameter Name="EmpID" Type="Int32" DefaultValue="0" />

</SelectParameters>

<InsertParameters>

<asp:Parameter Name="EmpID" Direction="Output" Type="Int32" DefaultValue="0" />

</InsertParameters>

</asp:sqlDataSource>

</form>

</body>

</html>

如果使用的数据库支持存储过程,则命令可以是存储过程的名称。如果使用存储过程更新数据,则必须将 UpdateCommandType 属性设置为 StoredProcedure

五、参数

参数用于向数据源发送插入、更新和删除操作的值。参数名和值基于绑定到控件的数据字段,或者基于显式定义的参数对象。数据绑定控件中的参数包括数据操作值和用于标识特定行的键值(由绑定控件的 DataKeyNames 属性定义)的值。

可以创建显式 Parameter 定义,以指定参数顺序、参数类型和参数方向,以及其他未基于绑定到控件的字段的参数。例如输出参数,该参数返回由数据源(如自动增量主键或日期时间戳)自动生成的值。

说明: 使用 System.Data.OleDb System.Data.Odbc 提供程序(它们不支持 SQL 语句中的命名

分享到:
评论

相关推荐

    在ASP.NET 2.0中操作数据:使用SqlDataSource控件查询数据(源码)

    在ASP.NET 2.0中操作数据:使用SqlDataSource控件查询数据(源码)

    在ASP.NET 2.0中操作数据:使用SqlDataSource控件查询数据

    在ASP.NET 2.0中操作数据:使用SqlDataSource控件查询数据

    《零基础学ASP.NET 2.0》第14章 数据源控件访问数据库

    14.1.1 使用SqlDataSource 数据源控件 246 14.1.2 参数声明 248 14.1.3 缓存数据 250 14.2 访问Access数据库 251 14.2.1 连接到Access数据文件 251 14.2.2 更新Access数据库 253 14.3 显示和转换XML数据 254 14.3.1 ...

    asp.net常用Web服务器控件

    4.1 使用控件显示文本 实例 显示密码格式文本 实例 显示长日期格式时间 实例 显示金额格式文本 4.2 使用控件显示图片 实例 显示验证码图片 实例 动态显示用户头像 实例 使用网页对话框显示图片 实例 实现上传图片 ...

    ASP.NET 控件的使用

    9.3 在SqlDataSource控件中使用ASP.NET参数 271 9.3.1 使用ASP.NET参数对象 272 9.3.2 使用ASP.NET的Control-Parameter对象 274 9.3.3 使用ASP.NET的Cookie-Parameter对象 277 9.3.4 使用ASP.NET的Form-Parameter...

    ASP.NET.4揭秘

    9.3 在sqldatasource控件中使用asp.net参数308 9.3.1 使用asp.net参数对象308 9.3.2 使用asp.net的controlparameter对象311 9.3.3 使用asp.net的cookieparameter对象315 9.3.4 使用asp.net的formparameter对象317 ...

    在ASP.NET 2.0中操作数据之四十六:使用SqlDataSource控件检索数据

    在前面的教程里,我们用ObjectDataSource控件充分的将表现层和数据访问层(DAL)分开来。在这篇教程里我们看看怎样在一个表现层和数据访问层区分的不是很严格的简单程序中使用SqlDataSource控件。

    asp.net2.0数据教程

    导言 创建一个数据访问层 创建一个业务逻辑层 ...47 使用SqlDataSource 控件查询数据(Reeezak) 48 在SqlDataSource中使用参数化查询(Reeezak) 49 使用SqlDataSource插入、更新以及删除数据(Reeezak

    ASP.NET2.0数据教程

    导言 创建一个数据访问层 创建一个业务逻辑层 ...47 使用SqlDataSource 控件查询数据(Reeezak) 48 在SqlDataSource中使用参数化查询(Reeezak) 49 使用SqlDataSource插入、更新以及删除数据(Reeezak

    asp.net2.0

    导言 创建一个数据访问层 创建一个业务逻辑层 ...47 使用SqlDataSource 控件查询数据(Reeezak) 48 在SqlDataSource中使用参数化查询(Reeezak) 49 使用SqlDataSource插入、更新以及删除数据(Reeezak

    ASP.NET三层架构

    走过Asp.net学习入门阶段后,真正开始着手开发一个Web项目时,才发现错综复杂的数据与关联根本就不是SqlDataSource和AccessDataSource数据源控件能简单解决的,而恰恰是被忽视了的一个ObjectDataSource数据源控件才...

    ASP.NET 3.5 开发大全11-15

    11.4.3 ASP.NET登录控件的使用 11.5 自定义控件实例 11.5.1 ASP.NET分页控件 11.5.2 ASP.NET分页控件的使用 11.6 小结 第12章 ASP.NET的皮肤、主题和母版页 12.1 皮肤和主题 12.1.1 CSS简介 12.1.2 CSS基础 12.1.3 ...

    ASP.NET 3.5 开发大全1-5

    11.4.3 ASP.NET登录控件的使用 11.5 自定义控件实例 11.5.1 ASP.NET分页控件 11.5.2 ASP.NET分页控件的使用 11.6 小结 第12章 ASP.NET的皮肤、主题和母版页 12.1 皮肤和主题 12.1.1 CSS简介 12.1.2 CSS基础 12.1.3 ...

    asp.net知识库

    利用反射实现ASP.NET控件和数据实体之间的双向绑定,并且在客户端自动验证输入的内容是否合法 asp.net报表解决方法 SQLDMO类的使用 SQL过程自动C#封装,支持从表到基本存储过程生成 使用SQLDMO控制 SQL Server 使用SQL...

    零基础学ASP.NET 2.0电子书&源代码绝对完整版1

    示例描述:本章演示ASP.NET 2.0网站的预编译以及学习ASP.NET 2.0的前置知识。 WebSite文件夹 创建的ASP.NET 2.0 Web站点。 www文件夹 第一个用C#开发的Web应用程序。 bianyi.bat 编译网站的批处理文件。 ...

    asp.net教学讲义

    Asp.net教学讲义 1 讲义内容 6 第一章:asp.net和web窗体 6 1.1 NET应用开发架构简介 6 1.1.1. NET框架结构 6 1.1.2 http协议简介 6 1.1.3 静态网页与动态网页 8 1.1.4 客户端代码与服务器端代码 8 1.1.5 ASP.NET...

    ASP.NET教学讲义,完整章节

    第一章:asp.net和web窗体 4 1.1 NET应用开发架构简介 4 1.2 Web 窗体与ASP.NET页面 7 1.3 ASP.NET 页的结构 11 1.4 Page事件(页面事件) 16 1.2.2 处理回送 20 1.2.3 ASP.NET应用程序示例 23 第二章:WEB服务器...

    ASP.NET 2.0+SQL Server 2005全程指南-源代码

    第3章 ASP.NET 2.0常用服务器控件 3.1 使用基本控件 3.1.1 TextBox控件的应用 3.1.2 Label控件的应用 3.1.3 DropDownList和ListBox控件应用 3.1.4 CheckBOX和CheckBoxList控件应用 3.1.5 RadioButton和...

    ASP.NET3.5控件详解

    VS2008中实际项目中用到的各种控件,包括ASP.NET3.5的大部分控件的使用方法和技巧,各种控件属性以及各种控件方法应用大全。 包括各种基本控件,各种验证控件,各种列表控件,SqlDataSource控件,ObjectDataSource...

Global site tag (gtag.js) - Google Analytics