asp.net SqlDataAdapter对象使用札记

SqlDataAdapter
SqlConnection nwindConn = new SqlConnection("Data Source=localhost;Integrated Security=SSPI;Initial Catalog=northwind");
SqlCommand selectCMD = new SqlCommand("SELECT CustomerID, CompanyName FROM Customers", nwindConn);
selectCMD.CommandTimeout = 30;
SqlDataAdapter custDA = new SqlDataAdapter();
custDA.SelectCommand = selectCMD;//通过SqlCommand给SqlDataAdapter设定参数,也可//直接用select语句
nwindConn.Open();
DataSet custDS = new DataSet();
custDA.Fill(custDS, "Customers");
nwindConn.Close();
多个结果集
如果 DataAdapter 遇到多个结果集,它将在 DataSet 中创建多个表。将向这些表提供递增的默认名称 TableN,以表示 Table0 的“Table”为第一个表名。如果以参数形式向 Fill 方法传递表名称,则将向这些表提供递增的默认名称 TableNameN,这些表名称以表示 TableName0 的“TableName”为起始。
从多个 DataAdapter 填充 DataSet
可以将任意数量的 DataAdapter 与一个 DataSet 一起使用。每个 DataAdapter 都可用于填充一个或多个 DataTable 对象并将更新解析回相关数据源。DataRelation 和 Constraint 对象可以在本地添加到 DataSet,这样,您就可以使来自多个不同数据源的数据相关联。例如,DataSet 可以包含来自 Microsoft SQL Server 数据库、通过 OLE DB 公开的 IBM DB2 数据库以及对 XML 进行流处理的数据源的数据。一个或多个 DataAdapter 对象可以处理与每个数据源的通信。
以下代码示例从 Microsoft SQL Server 2000 上的 Northwind 数据库填充客户列表,从存储在 Microsoft? Access 2000 中的 Northwind 数据库填充订单列表。已填充的表通过 DataRelation 相关联,然后客户列表将与相应客户的订单一起显示出来。有关 DataRelation 对象的更多信息,请参见添加表间关系和导航表间关系。
SqlConnection custConn = new SqlConnection("Data Source=localhost;Integrated Security=SSPI;Initial Catalog=northwind;");
SqlDataAdapter custDA = new SqlDataAdapter("SELECT * FROM Customers", custConn);
OleDbConnection orderConn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=c:\\Program Files\\Microsoft Office\\Office\\Samples\\northwind.mdb;");
OleDbDataAdapter orderDA = new OleDbDataAdapter("SELECT * FROM Orders", orderConn);
custConn.Open();
orderConn.Open();
DataSet custDS = new DataSet();
custDA.Fill(custDS, "Customers");
orderDA.Fill(custDS, "Orders");
custConn.Close();
orderConn.Close();
DataRelation custOrderRel =
custDS.Relations.Add("CustOrders",custDS.Tables["Customers"].Columns["CustomerID"], custDS.Tables["Orders"].Columns["CustomerID"]);
foreach (DataRow pRow in custDS.Tables["Customers"].Rows)
{
Console.WriteLine(pRow["CustomerID"]);
foreach (DataRow cRow in pRow.GetChildRows(custOrderRel))
Console.WriteLine("\t" + cRow["OrderID"]);
}
SQL Server Decimal 类型
DataSet 使用 .NET Framework 数据类型来存储数据。对于大多数应用程序,这些类型都提供了一种方便的数据源信息表示形式。但是,当数据源中的数据类型是 SQL Server decimal 时,这种表示形式可能会导致问题。.NET Framework decimal 数据类型最多允许 28 个有效位,而 SQL Server decimal 数据类型则允许 38 个有效位。如果 SqlDataAdapter 在 Fill 操作过程中确定 SQL Server decimal 字段的精度大于 28 个字符,则当前行将不会被添加到 DataTable 中。此时将发生 FillError 事件,它使您能够确定是否将发生精度损失并作出适当的响应。有关 FillError 事件的更多信息,请参见使用 DataAdapter 事件。若要获取 SQL Server decimal 值,还可以使用 SqlDataReader 对象并调用 GetSqlDecimal 方法。
在 Update 过程中使用 SqlCommand,更改DataSet记录
以下示例使用派生类 OleDbDataAdapter 来对数据源进行 Update。此示例假定您已经创建了一个 OleDbDataAdapter 和一个 DataSet。
以下示例使用派生类 OleDbDataAdapter 来对数据源进行 Update。此示例假定您已经创建了一个 OleDbDataAdapter 和一个 DataSet。
public DataSet CreateCmdsAndUpdate(DataSet myDataSet,string myConnection,string mySelectQuery,string myTableName)
{
OleDbConnection myConn = new OleDbConnection(myConnection);
OleDbDataAdapter myDataAdapter = new OleDbDataAdapter();
myDataAdapter.SelectCommand = new OleDbCommand(mySelectQuery, myConn);
OleDbCommandBuilder custCB = new OleDbCommandBuilder(myDataAdapter);
myConn.Open();
DataSet custDS = new DataSet();
myDataAdapter.Fill(custDS);
//code to modify data in dataset here
myDataAdapter.Update(custDS, myTableName);
myConn.Close();
return custDS;
}
下面的实例将创建一个 SqlDataAdapter 并设置 SelectCommand 和 InsertCommand 属性。假定已经创建一个 SqlConnection 对象。
public static SqlDataAdapter CreateCustomerAdapter(SqlConnection conn)
{
SqlDataAdapter da = new SqlDataAdapter();
SqlCommand cmd;
// Create the SelectCommand.
cmd = new SqlCommand("SELECT * FROM Customers " +
"WHERE Country = @Country AND City = @City", conn);
cmd.Parameters.Add("@Country", SqlDbType.NVarChar, 15);
cmd.Parameters.Add("@City", SqlDbType.NVarChar, 15);
da.SelectCommand = cmd;
// Create the InsertCommand.
cmd = new SqlCommand("INSERT INTO Customers (CustomerID, CompanyName) " +
"VALUES (@CustomerID, @CompanyName)", conn);
cmd.Parameters.Add("@CustomerID", SqlDbType.NChar, 5, "CustomerID");
cmd.Parameters.Add("@CompanyName", SqlDbType.NVarChar, 40, "CompanyName");
da.InsertCommand = cmd;
return da;
}
下面的实例创建一个 SqlDataAdapter 并设置 SelectCommand 和 DeleteCommand 属性。假定已经创建一个 SqlConnection 对象。
public static SqlDataAdapter CreateCustomerAdapter(SqlConnection conn)
{
SqlDataAdapter da = new SqlDataAdapter();
SqlCommand cmd;
SqlParameter parm;
// Create the SelectCommand.
cmd = new SqlCommand("SELECT * FROM Customers " +
"WHERE Country = @Country AND City = @City", conn);
cmd.Parameters.Add("@Country", SqlDbType.NVarChar, 15);
cmd.Parameters.Add("@City", SqlDbType.NVarChar, 15);
da.SelectCommand = cmd;
// Create the DeleteCommand.
cmd = new SqlCommand("DELETE FROM Customers WHERE CustomerID = @CustomerID", conn);
parm = cmd.Parameters.Add("@CustomerID", SqlDbType.NChar, 5, "CustomerID");
parm.SourceVersion = DataRowVersion.Original;
da.DeleteCommand = cmd;
return da;
}
下面的实例将创建一个 SqlDataAdapter 并设置 SelectCommand 和 UpdateCommand 属性。假定已经创建一个 SqlConnection 对象。
public static SqlDataAdapter CreateCustomerAdapter(SqlConnection conn)
{
SqlDataAdapter da = new SqlDataAdapter();
SqlCommand cmd;
SqlParameter parm;
// Create the SelectCommand.
cmd = new SqlCommand("SELECT * FROM Customers " +
"WHERE Country = @Country AND City = @City", conn);
cmd.Parameters.Add("@Country", SqlDbType.NVarChar, 15);
cmd.Parameters.Add("@City", SqlDbType.NVarChar, 15);
da.SelectCommand = cmd;
// Create the UpdateCommand.
cmd = new SqlCommand("UPDATE Customers SET CustomerID = @CustomerID, CompanyName = @CompanyName " +
"WHERE CustomerID = @oldCustomerID", conn);
cmd.Parameters.Add("@CustomerID", SqlDbType.NChar, 5, "CustomerID");
cmd.Parameters.Add("@CompanyName", SqlDbType.NVarChar, 40, "CompanyName");
parm = cmd.Parameters.Add("@oldCustomerID", SqlDbType.NChar, 5, "CustomerID");
parm.SourceVersion = DataRowVersion.Original;
da.UpdateCommand = cmd;
return da;
}

(0)

相关推荐

  • C#获取所有SQL Server数据库名称的方法

    本文实例讲述了C#获取所有SQL Server数据库名称的方法.分享给大家供大家参考.具体如下: 连接到master库中,执行 select name from master..sysdatabases . sp_helpdb也可以列出数据名,但不是全部,sp_helpdb是会根据当前用户角色找出相应的数据库,而用sysdatabases表则只要有权限访问该表就能查出所有数据库信息. 默认情况下,sqlserver提供的6个数据库中,除了model数据库外,其他若干个数据库还可能拥有guest用

  • C#实现解析百度天气数据,Rss解析百度新闻以及根据IP获取所在城市的方法

    本文实例讲述了C#实现解析百度天气数据,Rss解析百度新闻以及根据IP获取所在城市的方法,分享给大家供大家参考.具体实现方法如下: 一.百度天气 接口地址:http://api.map.baidu.com/telematics/v3/weather?location=上海&output=json&ak=hXWAgbsCC9UTkBO5V5Qg1WZ9,其中ak是密钥,自行去申请即可,便于大家测试,楼主就公布并了自己的Key,这样可以直接获取到数据. 获取到的数据是这样的: 复制代码 代码如

  • C#操作DataTable方法实现过滤、取前N条数据及获取指定列数据列表的方法

    本文实例讲述了C#操作DataTable方法实现过滤.取前N条数据及获取指定列数据列表的方法.分享给大家供大家参考.具体分析如下: #region DataTable筛选,排序返回符合条件行组成的新DataTable或直接用DefaultView按条件返回 /// <summary> /// DataTable筛选,排序返回符合条件行组成的新DataTable ///或直接用DefaultView按条件返回 /// eg:SortExprDataTable(dt,"Sex='男'&q

  • C#使用SqlDataAdapter对象获取数据的方法

    本文实例讲述了C#使用SqlDataAdapter对象获取数据的方法.分享给大家供大家参考,具体如下: 一.SqlDataAdapter对象 1. SqlDataAdapter特性 SqlDataAdapter类用作ADO.NET对象模型中和数据连接部分和未连接部分之间的桥梁.SqlDataAdapter从数据库中获取数据,并将其存储在DataSet中.SqlDataAdapter也可能取得DataSet中的更新,并将它们提交给数据库. SqlDataAdapter是为处理脱机数据而设计的,调用

  • C#从DataTable获取数据的方法

    本文实例讲述了C#从DataTable获取数据的方法.分享给大家供大家参考.具体如下: 通过通用类,返回一个DataTable,要想显示每个单元格,只要做两次循环即可: foreach (DataRow row in dt.Rows) { foreach (DataColumn column in dt.Columns) { Console.WriteLine(row[column]); } } row[column] 中的column是检索出来的表个列名. 如果想把某列的值拼接字符串,那就去掉

  • c#连接sqlserver数据库、插入数据、从数据库获取时间示例

    c#连接sqlserver.插入数据.从数据库获取时间 复制代码 代码如下: using System;using System.Data.SqlClient; namespace Test{    //连接数据库    public class Connection    {        private static string connectionString =            "Server = 192.168.1.222;" +            "D

  • c# 获取数据库中所有表名称的方法

    1.sqldmo SQLDMO是操作SQLServer的理想的方式,如果您的数据库是SQLServer就可以考虑使用这种方式.在C#中使用SQLDMO需要添加SQLDMO的引用,然后在当前的文件中using SQLDMO;即可以使用SQLDMO.SQLDMO的对象模型大家可以在SQLServer的帮助中获得. 复制代码 代码如下: private void GetTabels_DMO(string strServerName,string strUser,string strPWD,string

  • asp.net SqlDataAdapter对象使用札记

    SqlDataAdapter SqlConnection nwindConn = new SqlConnection("Data Source=localhost;Integrated Security=SSPI;Initial Catalog=northwind"); SqlCommand selectCMD = new SqlCommand("SELECT CustomerID, CompanyName FROM Customers", nwindConn);

  • ASP基础入门第八篇(ASP内建对象Application和Session)

    在上一篇中作者给大家详细介绍了 ASP 内建对象 Response 的使用方法,在这一篇中作者将继续给大家介绍另两个非常实用且重要的 ASP 的内建对象 Application 和 Session. 在 ASP 的内建对象中除了用于发送.接收和处理数据的对象外,还有一些非常实用的代表 Active Server 应用程序和单个用户信息的对象. 让我们先来看看 Application 对象.在同一虚拟目录及其子目录下的所有 .asp 文件构成了 ASP 应用程序.我们非但可以使用 Applicat

  • ASP基础入门第七篇(ASP内建对象Response)

    下面,我们开始学习 ASP 的另一个内建对象 Response. 与 Request 是获取客户端 HTTP 信息相反 ,Response 对象是用来控制发送给用户的信息,包括直接发送信息给浏览器.重定向浏览器到另一个 URL 或设置 cookie 的值. 语法:Response.collection|property|method 一.属性 1.Buffer Buffer 属性指示是否缓冲页输出.当缓冲页输出时,只有当前页的所有服务器脚本处理完毕或者调用了 Flush 或 End 方法后,服务

  • ASP基础入门第六篇(ASP内建对象Request)

    在正式开始学习 ASP 的内建对象和组件之前,先让我们来认识一些基本概念,这将对各位今后的学习大有帮助.请看下表 : Active Server 随 Windows NT 交付的服务器方技术的集合.这些 技术为组件应用程序管理.数据库访问.事务和消息 提供一致的服务器方组件.脚本模型和一套集成的系 统服务. Active Server Pages (ASP) 在服务器上运行 ActiveX 脚本和 ActiveX 组件的服 务器方脚本环境.开发人员可以将脚本和组件结合在 一起创建基于 Web 的

  • asp内置对象 ObjectContext 事务管理 详解

    asp内置对象 ObjectContext 详解 您可以使用 ObjectContext 对象提交或放弃一项由 Microsoft Transaction Server (MTS) 管理的事务,它由 ASP 页包含的脚本初始化. ASP 包含 @TRANSACTION 指令时,该页会在事务中运行,直到事务成功或失败后才会终止. 语法 ObjectContext.method 方法 SetComplete SetComplete 方法声明脚本不了解事务未完成的原因.如果事务中的所有组件都调用 Se

  • asp 内置对象 Application 详解

    asp内置对象 Application 详解  在 ASP 的内建对象中除了用于发送.接收和处理数据的对象外,还有一些非常实用的代表 Active Server 应用程序和单个用户信息的对象.  让我们先来看看 Application 对象.在同一虚拟目录及其子目录下的所有 .asp 文件构成了 ASP 应用程序.我们非但可以使用 Application 对象,在给定的应用程序的所有用户之间共享信息,并在服务器运行期间持久的保存数据.而且,Application 对象还有控制访问应用层数据的方法

  • ASP中解决“对象关闭时,不允许操作。”的诡异问题……

    在ASP中进行数据库操作时 复制代码 代码如下: rs.Open strsql,conn,1,3 while not rs.eof //对象关闭时,不允许操作. 找了好久,最后在strsql中发现问题所在-- 原因是: 这个strsql = "exec ***",用的是存储过程,而这个***存储过程中的最后加了一句"print @sql",导致这个问题,注释掉就OK了--

  • 在ASP中用“正则表达式对象”来校验数据的合法性

    我们在制作网站的时候,尤其是各种电子商务网站,首先都会让用户填写一些表格来获取注册用户的各种信息,因为用户有可能输入各式各样的信息,而有些不符合要求的数据会给我们的后端ASP处理程序带来不必要的麻烦,甚至导致网站出现一些安全问题.因此我们在将这些信息保存到网站的数据库之前,要对这些用户所输入的信息进行数据的合法性校验,以便后面的程序可以安全顺利的执行.所以我们一般会在后端编写一个ASP的校验程序来分析用户输入的数据是否是合法的. 或许有人会问了,使用运行在客户端的JavaScript不是可以更好

  • Asp.net response对象与request对象使用介绍

    1.Response:服务器发给客户端信息,或者说是服务器的向用户发送输出结果. Redirect:让客户端重新定向到指定的 URL. Write:写出指定字符串. 2.request:客户端发给服务器,或者说是从客户端取得信息. form:从使用post提交方式的表单获取表单元素的值. querystring:取回查询字符串中的变量值,适用于get提交方式的表单. 举一个列子:一个登陆页面,还有一个主页面.当登陆页面登陆成功后,就自动跳转到主页面. 1.login.aspx 复制代码 代码如下

随机推荐