.net mvc 怎样调用 存储过程详细点最好有例子

.net mvc 怎样调用 存储过程详细点最好有例子,第1张

由于问题主要是存储过程,以下例子的架构会直接点,Controller直接依赖SqlRepository,而未用到依赖注入。。

所以,架构方面千万不要参考了这个例子。。

费话不多说,先讲数据库。举例的数据库(SQLServer 2008)名为TestDB01,仅有的一张表表名为UserInfo,表有皆不可为空的三个字段,分别为UserID(int),UserName(nvarchar(50)),UserAge(smallint),其有一条记录为UserID:1,UserName:Lcng,UserAge22。

接下来是写在数据库里的存储过程,如下:

USE [TestDB01]

GO

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

ALTER PROCEDURE [dbo].[myProcedure]

@parameter1 int

AS

BEGIN

SET NOCOUNT ON

SELECT * from [UserInfo] where [UserInfo].UserID = @parameter1

END

希望我复制粘贴时没有出错,当然,如果你对存储过程熟悉的话你会发现我的错误,如果有的话。。

存储过程表达的意思在此就不说了(想你应该熟悉存储过程),如果需要,请补充问题。。

接下来就是Visual Studio 2010里的工作了。

新建一个空ASP.NET MVC 2项目,我取的项目名是UsingProcedureInMVC,往项目里加一个名为Repositories的文件夹,此文件夹用来存放对数据库的 *** 作的类,一会儿会讲,先看Models文件夹。

往Models文件夹里加一个名叫Person的类,Person类如下:

public class Person

{

public string PersonName { getset}

public short PersonAge { getset}

}

现在回到Repositories文件夹,往这个文件夹里加一个名叫SqlRepository的类,SqlRepository类如下:

public class SqlRepository

{

private List<Person>personList = new List<Person>()

public List<Person>PersonList

{

get

{

return personList

}

}

public SqlRepository(string connectionString)

{

SqlConnection sqlconn = new SqlConnection(connectionString)

SqlCommand sqlcmd = new SqlCommand("myProcedure", sqlconn)

sqlcmd.CommandType = CommandType.StoredProcedure

SqlDataReader rd

try

{

sqlconn.Open()

sqlcmd.Parameters.Add(new SqlParameter("@parameter1", SqlDbType.Int))

sqlcmd.Parameters["@parameter1"].Value = 1

rd = sqlcmd.ExecuteReader()

while (rd.Read())

{

personList.Add(new Person { PersonAge = (short)rd[2], PersonName = rd[1].ToString() })

}

}

catch (Exception e)

{

throw new Exception(e.Message)

}

finally

{

sqlconn.Close()

}

}

同样,希望我的复制粘贴没有出错。。

希望对于此类需要讲解的只有以下这些内容,如

SqlCommand sqlcmd = new SqlCommand("myProcedure", sqlconn)

sqlcmd.CommandType = CommandType.StoredProcedure

如果你用过ASP.NET WebForm,那么对这两条中的第一条语句你应该很熟悉,相对于ASP.NET WebForm,SqlCommand sqlcmd = new SqlCommand("myProcedure", sqlconn)只是把第一个参数由原来的SQL语句换成了定义在数据库里的存储过程的名字;而第二条语句只是告诉sqlcmd它的命令类型而已。

当然,我还要说的是,其实这根本就是在ASP.NET WebForm可以用的用法,只是我把它放到ASP.NET MVC里举例子了而已。。其实我们完全可以或说应当使用LINQ。。

还有两条要说的语句是

sqlcmd.Parameters.Add(new SqlParameter("@parameter1",SqlDbType.Int))

sqlcmd.Parameters["@parameter1"].Value = 1

要说的是@parameter1就是定义存储过程里的那个参数,这里给这个参数的值为1,它完全可以根据你的需要而变。

接着看Controllers里的HomeController,它唯一的一个action就是Index(),定义如下

public ViewResult Index()

{

SqlRepository sr = new SqlRepository(WebConfigurationManager.ConnectionStrings["connectionString01"].ConnectionString)

return View(sr.PersonList)

}

如果对此有不明之处,请补充问题。。

最后是强类型(类型为List<UsingProcedureInMVC.Models.Person>)的名叫Index的View,主要内容如下

<body>

<div>

<% foreach (var v in Model)

{ %>

Name:<%: v.PersonName %><br />

Age: <%: v.PersonAge %><br />

<% } %>

</div>

</body>

如果你按着这个例子做,显示的结果将会是

Name:Lc

Age: 22

祝你好运(当然,这条是不会显示的)。。

希望可以帮到你,如果还有疑问,请补充问题。

如果这对你有帮助,请标为最佳答案。

一OracleClient方式,是微软专门针对Oracle数据库开发的

引用类库:System.Data.OracleClient.dll命名空间:System.Data.OracleClient

常用类:OracleConnection、OracleCommand、OracleDataAdapter、OracleTransaction、OracleDataReader等

连接字符串:“data source=**user id=**password=**”(注意:可以不指定 provider 驱动)

二OleDb方式

引用类库:System.Data.dll命名空间:System.Data.OleDb

常用类:OleDbConnection、OleDbCommand、OleDbDataAdapter、OleDbTransaction、OleDbDataReader等。

连接字符串:与OracleClient方式相比,要添加一个provider,“provider=MSDAORA.1”

下面是示例,分别用这两种方式实现了相同的功能:连接数据库,并将查询到的数据放到dataSet中。

你直接上asp.net mvc的官方网站就可以了,上面有实例,也有一些项目的简单源码,你可以看看MusicStore的源码,以下是链接,希望对你有帮助。

http://www.asp.net/mvc/tutorials/mvc-music-store/mvc-music-store-part-1


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9659029.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-30
下一篇 2023-04-30

发表评论

登录后才能评论

评论列表(0条)

保存