- 浏览: 1041401 次
- 性别:
- 来自: 长沙
文章分类
- 全部博客 (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 2252一、建立网页 <html ... -
SQLITE FOR .NET4.0使用说明以及DLL
2012-06-28 22:07 1158SQLITE FOR .NET4.0使用说明以及DLL -
WinForm中TabControl的一些事件写法(C#)
2012-06-27 20:41 9826在TabControl控件中并没提供单个选项卡的Click事件 ... -
C# 通过字符串动态创建一个窗体
2012-06-27 20:27 1681private void button1_Click(obje ... -
vs2010 打包winform成EXE文件
2012-04-20 14:03 1567见附件 -
C#中DataGridView控件60招
2012-01-13 09:36 64791. DataGridView当前的单元格属性取得、变更 2 ... -
单击dataGridView某一行时将dataGridView当前选择行的某列值赋值给某个文本框
2012-01-13 09:19 2408SelectedRows和CurrentRow之间的区别 ... -
c# winform开发-datagridview开发
2012-01-13 09:18 1687datagridview 操作详解 目录: 1、 取得或 ... -
C# 中奇妙的函数. String Split 和 Join
2011-10-25 10:51 1054很多时候处理字符串数据,比如从文件中读取或者存入 - 我们可能 ... -
asp.net中web.config配置节点大全详解
2011-10-25 10:16 1331asp.net中web.config配置节点大全详解 2 ... -
Entity Framework in ASP.NET MVC Application (三)
2011-05-10 20:31 2427In the previous tutorial you im ... -
Entity Framework in ASP.NET MVC Application (二)
2011-05-10 20:29 1654In the previous tutorial you cr ... -
Entity Frame Work 4.1调用存储过程
2011-05-10 20:24 2067在这个问题上,琢磨了很久了。今天终于找到了调用的方法。 存储 ... -
entity-framework (code-first)实例开发(一)
2011-05-09 20:40 2708The Contoso University Web Appl ... -
使用ef4.1 的dbcontext进行数据库循环操作
2011-04-24 23:06 2205如果你想要调用一个类的方法进行循环操作:官方的例子: Dis ... -
使用EF 4.1的DbContext
2011-04-24 22:36 3598简述:EF4.1包括Code First和DbContext ... -
JAVA与.NET的相互调用——通过Web服务实现相互调用(附原代码)
2011-04-24 20:58 1257JAVA与.NET是现今世界竞争激烈的两大开发媒体,两者语言有 ... -
视图模式/视图->视图包
2011-04-24 20:16 1429ASP.NET MVC(自V1起)就支持一个带控制器和视图的V ... -
SkipRequestValidation] –> [AllowHtml]
2011-04-24 20:15 1384ASP.NET MVC内置了防止HTML和跨站脚本注入攻击的支 ... -
Log4net 详细说明
2011-04-12 22:29 1988在实际项目中我们经常 ...
相关推荐
熟悉ADO.NET数据库访问技术,掌握Command和DataAdapter对象操作数据库数据的方法。
不管是Windows桌面应用程序,还是Web应用程序,存储和检索数据都是ADO.NET的核心功能。此PPT讲述ADO.NET的概念、概念和用法
通过 ADO.NET 访问数据 ADO.NET 概述 ADO.NET 的设计目标:讨论创建 ADO.NET 的动机和设计目标。 ADO.NET 结构:提供 ADO.NET 结构和组件的概述。 .NET 数据提供程序:提供有关随 ADO.NET 提供的 .NET 数据提供程序...
探讨基于ASP.NET框架ADO和ADO.NET的两种数据库访问技术,并给出一个在ASP.NET下使用ADO.NET组件对数据库访问的实例。然后,对这两种技术在缓存中的数据集存储形式、脱机与连机关系、标准化程度、传输性能方面...
本书介绍了如何用ADO.NET 2.0对独立应用、企业级应用和Web应用程序中的数据进行访问、排序和操作。作者针对如何利用Visual Studio 2005中的新工具和向导,编写、测试并调试数据库应用程序代码,用丰富的示例代码、...
在ADO.NET结构中,常用的组件(对象)有五个,Connection对象、Command对象、DataReader对象、DataApdapter对象和DataSet对象,其中Connection对象、Command对象、DataReader对象,和DataApdapter对象被称为数据提供...
资源名称:思胜.NET高级培训ADO.NET部分学习视频(10集)资源目录:【】adonet-1-数据库连接对象-Connection【】adonet-10-数据访问实现练习【】adonet-2-命令对象和事务对象【】adonet-3-访问存储过程-传入参数-...
不错的课件,和大家分享一下。。商业应用程序需要管理大量数据...ADO.NET 是 .NET 应用程序用来与数据库通讯的模型,用于检索、访问和更新数据。本模块将向想要在行业中作为数据库应用程序开发人员的学生提供必要的技能
共享源于乐趣,希望对你有用!!!!!!!!!!!!!!!!!!!!!!!!!!!
Command对象使你能够访问用于返回数据、修改数据、运行存储过程以及发送或检索参数信息的数据库命令;DataReader对象从数据源中提供高性能的数据流;DataAdapter对象提供连接DataSet对象和数据源的桥梁。
微软MVP邵志东老师的ADO.NET视频讲座,深入浅出,适合初级和中级.NET朋友学习。 • ADO.NET概述 • 数据绑定 • 数据操作 • 存储过程的使用(很好)
ADO.NET数据访问基础,数据存储基础,数据库连接,常用ADO对象的使用
封装了数据访问常用的方法,包括数据源,查询,参数配置,存储过程等
中新增的数据访问层设计技术ADO.NET Entity Framework。ADO.NET的LINQ to Entity部分以LINQ 为基础,为了完整性本文档首先介绍LINQ技术 Entity Framework 教程 目录 预备知识 2 LINQ技术 2 LINQ...
sheng.ADO.NET.Plus请访问原版代码库,以获得最新更新: MIT 协议开源,可以随意使用,但是需在源代码和产品关于画面保留版权声明和我的网站链接,谢谢。sheng.ADO.NET.Plus 是一个介于 Entity Framework 和直接使用 ...
教学内容:DataReader、DataSet、数据控件用法 教学重点:DataReader与数据库的高级操作 教学难点:DataReader访问数据库存储过程
第1章 使用ADO.NET3.5提供的新方法访问数据 第Ⅱ部分 LINQ简介 第2章 理解LINQ的体系结构和实现 第3章 使用LINQ to Objects执行LINQ查询表达式 第4章 使用高级查询操作符和表达式 第Ⅲ部分 使用领域相关的LINQ...
数据库具有强大和灵活的后端管理与存储数据的能力,ADO.NET则是一个中间的数据访问层,ASP.NET通过ADO.NET来操作数据库。ADO.NET本身也是基于多层架构设计,除了能应用于普通的应用程序中之外,在分布式系统开发方面...
使用dataview查看数据 使用dataview修改数据 使用dataview事件 使用dataviewmanager设置默认表视图据 从ado.net访问ado记录集或记录 ado.net方案示例 检索“标识”或“自动编号”值 ...
描述 ADO.NET 对象模型 使用ADO.NET 连接数据源 使用DataSet和DataReader从数据库取得数据 使用DataGrid控件显示从数据库取得的数据 使用存储过程从数据库读取数据 把XML文件中的数据读入到数据集