- 浏览: 1067852 次
- 性别:
- 来自: 长沙
文章分类
- 全部博客 (639)
- 服务器配置篇 (58)
- hibernate篇 (14)
- spring篇 (33)
- struts篇 (28)
- JS篇 (46)
- 其他技术篇 (46)
- 数据库集群配置 (6)
- JAVA基础相关 (48)
- 分布式框架HadHoop的应用 (2)
- FLEX篇 (8)
- SQLSERVER技术 (32)
- Android学习 (13)
- amchart学习笔记 (1)
- openfire+smark搭建即时通讯 (9)
- Linux学习 (18)
- Oracle数据库 (15)
- 网站优化技术 (12)
- mysql数据库 (2)
- 项目学习总结 (18)
- 工具类(JAVA) (12)
- 工具类(JS) (2)
- 设计模式 (10)
- Lucene学习 (24)
- EJB3学习 (6)
- Sphinx搜索引擎 (3)
- 工作中用到的软件小工具 (5)
- .NET (49)
- JAVA 连接SQLSERVER2008步骤 (1)
- MongoDB (19)
- Android手机开发 (3)
- Maven (6)
- vue (9)
- Shiro (4)
- mybatis (3)
- netty框架 (1)
- SpringCloud (3)
- spring-cloud (7)
- Git (1)
- dubbo (2)
- springboot (13)
- rocketmq (1)
- git学习 (2)
- kafka服务器 (2)
- linux (10)
- WEB系统辅助项目 (1)
- jenkins (2)
- docker (4)
- influxdb (3)
- python (2)
- nginx (1)
最新评论
-
jiangfuofu555:
这样数据量大,效率怎么样?
sqlserver 实现分页的前台代码 以及后台的sqlserver语句 -
w156445045:
博主请问下,如何做到实时的刷新呢,
另外我后台是Java 谢谢 ...
web 版本的汽车仪表盘,非常好看。还有各种图形 -
jackyin5918:
<transportConnector name=&qu ...
ActiveMQ的activemq.xml详细配置讲解 -
握着橄榄枝的人:
你这个不是spring1.x的吧
spring1.x使用AOP实例 -
xiaophai:
全乱套了!
openfire+spark搭建完美的及时通讯
ADO.NET 访问存储过程其实也比较简单,但是有些小细节部分是需要注意的。
做了个小案例,演示在ADO.NET中如何调用存储过程。
数据库表结构代码如下:
CREATE TABLE TestTB( [ID] [int] IDENTITY(1,1) PRIMARY KEY NOT NULL, [Name] [nvarchar](50) NOT NULL, ) GO
存储过程代码如下:
CREATE PROCEDURE [dbo].[SelectAllProc] ( @inputData nvarchar, @outPutData int output ) AS declare @myCount int print @inputData select * from dbo.TestTB select @myCount=count(*) from dbo.TestTB set @outPutData=@myCount /* SET NOCOUNT ON */ RETURN @myCount GO
该存储过程包含了输入参数、输出参数、select语句返回的结果集以及return返回的单个结果值。在ADO.NET调用的时候需要同时设置和获取这些值。
界面部分使用的是ASP.NET MVC3来做。为了呈现数据的方便所以定制了两个Model类。分别是TestTB类和TestTBViewModel类。第一个类用于承载单个数据实体,第二个用于呈现界面的时候一次性的将数据传到界面呈现。
Models部分的代码如下:
1 /// <summary> 2 /// 承载测试数据用的模型类 3 /// </summary> 4 public class TestTB 5 { 6 public int ID { get; set; } 7 public string Name { get; set; } 8 } 9 10 /// <summary> 11 /// 承载界面呈现数据的时候的模型类 12 /// 用于一次性将所有数据传递到界面 13 /// </summary> 14 public class TestTBViewModel 15 { 16 public TestTBViewModel() 17 { 18 this.TestTBList = new List<TestTB>(); 19 } 20 /// <summary> 21 /// TestTB实体集合 22 /// </summary> 23 public List<TestTB> TestTBList { get; set; } 24 /// <summary> 25 /// 存储过程return回来的值 26 /// </summary> 27 public int TotalCount { get; set; } 28 /// <summary> 29 /// 存储过程output回来的值 30 /// </summary> 31 public int TotalCount2 { get; set; } 32 }
调用存储过程以及MVC控制器中的代码如下:
1 /// <summary> 2 /// 展示数据的Action 3 /// </summary> 4 /// <returns></returns> 5 public ActionResult ShowData() 6 { 7 return View(this.GetAllData()); 8 } 9 10 /// <summary> 11 /// 获取数据的方法 12 /// </summary> 13 /// <returns>返回用于界面呈现的模型</returns> 14 private TestTBViewModel GetAllData() 15 { 16 TestTBViewModel model = new TestTBViewModel(); 17 //创建数据库连接和命令对象并限定其使用范围(超过该范围则自动释放资源) 18 using (SqlConnection connection = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["ApplicationServices"].ConnectionString)) 19 using (SqlCommand command = new SqlCommand()) 20 { 21 command.Connection = connection;//设置命令所使用的连接对象 22 command.CommandText = "dbo.SelectAllProc";//设置命令对象调用的存储过程的名称 23 command.CommandType = System.Data.CommandType.StoredProcedure;//设置该命令的类型为存储过程 24 25 //为命令对象添加参数,该参数名可以随便定义,用于接收存储过程return回来的值 26 SqlParameter pReturn = command.Parameters.Add("@aaa", System.Data.SqlDbType.Int); 27 //设置该参数的类型为返回值 28 pReturn.Direction = System.Data.ParameterDirection.ReturnValue; 29 30 //添加存储过程第一个参数,用于向存储过程输入值 31 SqlParameter pInput = command.Parameters.Add("@inputData", System.Data.SqlDbType.NVarChar); 32 //设置该参数的类型为输入参数 33 pInput.Direction = System.Data.ParameterDirection.Input; 34 //设置参数的值(因为该值在存储过程中只是print一下所以随便输入) 35 pInput.Value = "aaa"; 36 37 //添加存储过程第二个参数,用于接收存储过程输出参数的值 38 SqlParameter pOut = command.Parameters.Add("@outPutData", System.Data.SqlDbType.Int); 39 //设置该参数的类型为输出参数 40 pOut.Direction = System.Data.ParameterDirection.Output; 41 42 //打开数据库连接 43 connection.Open(); 44 //执行命令并获取反馈回来的读取流 45 //ExecuteReader的参数System.Data.CommandBehavior.CloseConnection的意思是关闭这个流的时候同时会关闭对应的连接对象 46 using (SqlDataReader dataReader = command.ExecuteReader(System.Data.CommandBehavior.CloseConnection)) 47 { 48 //循环读取流对象中的每行数据并将其添加到模型中 49 while (dataReader.Read()) 50 { 51 model.TestTBList.Add(new TestTB() 52 { 53 ID = dataReader.GetInt32(0), 54 Name = dataReader.GetString(1) 55 }); 56 } 57 } 58 59 //读取return、output回来的数据之前一定要关闭dataReader,否则读取不到值。 60 61 //读取存储过程return回来的值并保存到模型中 62 model.TotalCount = (int)pReturn.Value; 63 //读取存储过程output回来的值并保存到模型中 64 model.TotalCount2 = (int)pOut.Value; 65 } 66 67 return model; 68 }
< SPAN style = "COLOR: #ff0000; BACKGROUND-COLOR: #ffffff" color = "#ff0000" >< STRONG >一定要注意:读取return、output的数据必须先要关闭掉DataReader对象,否则不能获取到值。</ STRONG ></ SPAN >
|
界面部分使用了Razor模板来呈现。具体代码如下:
@model MvcApplication1.Models.TestTBViewModel @{ ViewBag.Title = "ShowData"; Layout = "~/Views/Shared/_Layout.cshtml"; } <h2> ShowData</h2> <p> @Html.ActionLink("Create New", "Create") </p> <table> <tr> <th> ID </th> <th> Name </th> </tr> @foreach (var item in Model.TestTBList) { <tr> <td> @item.ID </td> <td> @item.Name </td> </tr> } </table> <p> Count: @Model.TotalCount </p> <p> Count2: @Model.TotalCount2 </p>
发表评论
-
C# WinForm程序如何与js交互
2012-07-15 22:28 2317一、建立网页 <html ... -
SQLITE FOR .NET4.0使用说明以及DLL
2012-06-28 22:07 1202SQLITE FOR .NET4.0使用说明以及DLL -
WinForm中TabControl的一些事件写法(C#)
2012-06-27 20:41 9876在TabControl控件中并没提供单个选项卡的Click事件 ... -
C# 通过字符串动态创建一个窗体
2012-06-27 20:27 1743private void button1_Click(obje ... -
vs2010 打包winform成EXE文件
2012-04-20 14:03 1643见附件 -
C#中DataGridView控件60招
2012-01-13 09:36 65571. DataGridView当前的单元格属性取得、变更 2 ... -
单击dataGridView某一行时将dataGridView当前选择行的某列值赋值给某个文本框
2012-01-13 09:19 2457SelectedRows和CurrentRow之间的区别 ... -
c# winform开发-datagridview开发
2012-01-13 09:18 1727datagridview 操作详解 目录: 1、 取得或 ... -
C# 中奇妙的函数. String Split 和 Join
2011-10-25 10:51 1109很多时候处理字符串数据,比如从文件中读取或者存入 - 我们可能 ... -
asp.net中web.config配置节点大全详解
2011-10-25 10:16 1372asp.net中web.config配置节点大全详解 2 ... -
Entity Framework in ASP.NET MVC Application (三)
2011-05-10 20:31 2467In the previous tutorial you im ... -
Entity Framework in ASP.NET MVC Application (二)
2011-05-10 20:29 1697In the previous tutorial you cr ... -
Entity Frame Work 4.1调用存储过程
2011-05-10 20:24 2134在这个问题上,琢磨了很久了。今天终于找到了调用的方法。 存储 ... -
entity-framework (code-first)实例开发(一)
2011-05-09 20:40 2751The Contoso University Web Appl ... -
使用ef4.1 的dbcontext进行数据库循环操作
2011-04-24 23:06 2263如果你想要调用一个类的方法进行循环操作:官方的例子: Dis ... -
使用EF 4.1的DbContext
2011-04-24 22:36 3640简述:EF4.1包括Code First和DbContext ... -
JAVA与.NET的相互调用——通过Web服务实现相互调用(附原代码)
2011-04-24 20:58 1286JAVA与.NET是现今世界竞争激烈的两大开发媒体,两者语言有 ... -
视图模式/视图->视图包
2011-04-24 20:16 1472ASP.NET MVC(自V1起)就支持一个带控制器和视图的V ... -
SkipRequestValidation] –> [AllowHtml]
2011-04-24 20:15 1436ASP.NET MVC内置了防止HTML和跨站脚本注入攻击的支 ... -
Log4net 详细说明
2011-04-12 22:29 2071在实际项目中我们经常 ...
相关推荐
Ado.NET结合存储过程的员工管理系统就是一个典型的案例,它利用.NET框架的强大功能与SQL Server数据库进行高效交互,实现了对员工信息的有效管理。下面我们将深入探讨Ado.NET与存储过程的相关知识点,以及如何在员工...
这个标题"ADO.Net数据库访问(代码示例)"暗示我们将深入探讨如何使用ADO.NET进行数据库的读取、写入和其他相关操作,并通过具体的代码示例来解释这些概念。 首先,ADO.NET的核心组件包括: 1. **DataSet**: 这是一...
进一步,教程会涉及ADO.NET的高级主题,如使用存储过程、数据映射(Entity Framework)以及异步数据库访问。存储过程可以提高性能,减少网络通信,并提供安全的数据库操作封装。数据映射工具如Entity Framework,...
**ADO.NET 数据访问存储** ADO.NET 是微软 .NET Framework 的一部分,它提供了一种高效、安全的方式,用于访问和操作关系型数据库。这个强大的数据访问技术允许开发人员直接与各种数据库进行交互,如 SQL Server、...
ADO.NET是微软.NET Framework中的数据访问组件,它提供了与数据库交互的强大功能。ADO.NET通过.NET Data Provider(如SQL Server Data Provider)连接到SQL Server 2005,实现了高效的数据存取。在这个学生管理系统...
本文将深入探讨三种常见的.NET框架下的数据库访问技术:ADO.NET SQL、LINQ to SQL以及ADO.NET Entity Framework(EF),并重点分析它们在数据库连接性能上的差异,特别是在插入和读取操作,包括模糊检索方面的表现。...
在ADO.NET中,可以创建一个DataTable对象,填充数据,然后将其作为参数传递给存储过程。 4. **ASP.NET**:虽然标签中提到了ASP.NET,但在这个实验中,ASP.NET主要作为前端开发框架,用于构建与数据库交互的Web应用...
ADO.NET 4是微软.NET Framework 4的一部分,它提供了一组用于访问数据库的类和接口。这个技术允许开发者高效地创建、操作和管理数据存储,无论是关系型数据库还是其他类型的数据源。本压缩包文件“ADO.NET 4从入门到...
ADO.net 是 một 微软公司开发的数据库访问技术,用于与关系数据库管理系统(RDBMS)交互。以下是 ADO.net 操作数据库的总结,包括使用 SqlConnection 和 SqlCommand 对象连接数据库、执行查询语句等操作。 一、...
ADO.NET 访问数据库的原理和方法 ADO.NET 是微软公司推出的一个数据访问技术,允许开发人员使用 C# 或 VB.NET 等语言访问各种类型的数据库。ADO.NET 分为两个主要组件:ADO.NET 数据提供程序和 ADO.NET 数据集。 ...
ADO.NET是Microsoft开发的一种用于访问关系数据库的数据访问技术,它为.NET Framework应用程序提供了一套全面的数据访问组件。本文将深入探讨ADO.NET的核心概念、对象模型和数据操作。 首先,我们来看ADO.NET的设计...
在.NET框架中,ADO.NET是用于访问数据库的核心组件,它为开发者提供了强大的数据访问能力。在C#编程中,我们经常使用ADO.NET进行数据库交互,包括读取、写入、更新和删除数据。本主题将深入探讨如何通过C#封装ADO...
ADO.NET是微软.NET框架中用于访问数据库的核心组件,它提供了高效、灵活且强大的数据存取能力。本资源“ADO.NET数据访问技术习题参考答案”是针对学习ADO.NET技术的学生或开发者的重要参考资料,包含了丰富的练习题...
ADO.NET 是微软为.NET Framework 设计的一种全新的数据库访问技术,它是对传统ADO(ActiveX Data Objects)的升级,旨在提供更高效、更易用的数据访问接口。ADO.NET 的设计核心是面向数据集而非数据库,这使得它更适合...
ADO.NET是微软.NET框架的一部分,主要用于访问和操作数据库。它为开发者提供了强大的数据访问接口,使得程序员能够高效地处理各种数据库任务,如查询、更新、插入数据等。本资源是《ADO.NET专业项目实例开发》一书的...
总结起来,"使用ADO.NET访问数据库"的主题涵盖了C#与SQL Server数据库间的通信,通过理解并实践ADO.NET的核心组件和操作流程,开发者可以构建出高效且可靠的数据库应用程序。这个压缩包提供的案例和练习将帮助学习者...
ADO.NET是微软.NET框架下的一种数据访问技术,用于与数据库进行交互。它是.NET应用程序与数据库之间通信的基础,提供了高效、灵活的数据处理能力。本教程专为初学者设计,旨在帮助新接触ADO.NET的开发者理解其核心...
ADO.NET访问ACCESS的一个常见任务是执行SQL查询。这可以通过创建一个SqlCommand对象并设置其CommandText属性来完成: ```csharp string sql = "SELECT * FROM 表名"; OleDbCommand command = new OleDbCommand(sql,...
ADO.NET是一组包含在.NET框架中的库,专门用于在.NET应用程序的各种数据存储之间进行通信。它不仅能够作为一个强大的、层次化的数据缓存来使用,还支持离线处理数据。对于需要访问数据的应用程序开发而言,ADO.NET是...