ASP.NET MVC 学习(一) ado.net 调用存储过程

ASP.NET MVC  学习(一) ado.net 调用存储过程

    见证我的菜鸟历史:
想学一学存储过程,自己写了一下简单的例子,发现了一些问题这里记录一下
以下是存储过程:
create procedure [dbo].[UserAll]
 @loginname nvarchar(200),
 @password nvarchar(200),
 @issuccess int output
as
begin
print @loginname
print @password
declare @isexist int
declare  @userid  uniqueidentifier
declare  @roleid uniqueidentifier
if  exists(select 1 from Tuser where LoginName=@loginname and PassWord=@password)
begin
 set @issuccess=1
  set @userid=(select UserId from Tuser where LoginName=@loginname and PassWord=@password)
  set @roleid=(select top 1 RoleId from  UserRole where UserId=@userid);
  select * from  Trole where RoleId= @roleid
  end
  else
  begin
 set @issuccess=0
  end
end


.net  mvc  代码如下:
public ActionResult Index()
        {
            ViewBag.issuccess = false;
            if (Request.Form["loginname"]==null|| Request.Form["loginname"]=="")
            {
                return View();
            }
            string loginname = Request.Form["loginname"];
            string password = Request.Form["password"];
            //存储过程
            SqlConnection con = new SqlConnection("data source=192.168.124.93;initial catalog=PadOrder;persist security info=True;user id=sa;password=Jxasfw2017;");
            SqlCommand cmd = new SqlCommand("UserAll", con);
            cmd.CommandType = System.Data.CommandType.StoredProcedure;
            cmd.Parameters.AddWithValue("@loginname", loginname);//添加参数
            cmd.Parameters.AddWithValue("@password", password);//添加参数
            SqlParameter issuccess=  cmd.Parameters.AddWithValue("@issuccess", 0);//添加参数
            cmd.Parameters["@issuccess"].Direction = ParameterDirection.Output;//设置参数类型
            con.Open();
            SqlDataReader yh = cmd.ExecuteReader();
            DataReaderHelper helper = new DataReaderHelper();
            DataSet dataset= helper.ConvertDataReaderToDataSet(yh);
            con.Close();//
            if (int.Parse(issuccess.Value.ToString()) != 0)
            {
                ViewBag.issuccess = true;
                var datahelper = new DataHelper<Trole>();
                var res = datahelper.FillModel(dataset);
                ViewBag.userdata = res;
            }
            return View();
        }


在代码中发现   存储过程的 output  类型的参数只有在  连接关闭以后才能获取到值 也就是  con.Close()之后
读取到的数据库的一列显示到view:

view 页如下:
@{
    Layout = null;
}
<!DOCTYPE html>
<title>hhda</title>
<html>
<head></head>
<body>
    <div class="jumbotron">
        <h1>ASP.NET</h1>
    <form action="@Url.Action("Index","Home")" enctype="multipart/form-data" method="post">
        <div><label>登录名</label><input id="loginname" name="loginname"/></div>
        <div><label>密--码</label><input id="password" name="password" /></div>
        <br />
        <br />
        <input type="submit" value="登陆"/>
    </form>
        @if (ViewBag.issuccess)
        {
            <div>
                <div><label>你的角色信息如下:</label></div>
                <table>
                    @foreach (var item in ViewBag.userdata)
                    {
                        <tr>
                            <td><label>Id</label><input type="text" value="@item.Id" /></td>
                            <td><label>URL</label><input type="text" value="@item.name" /></td>
                            <td><label>SortId</label><input type="text" value="@item.context" /></td>
                            <td><label>ParentId</label><input type="text" value="@item.OrgStationID" /></td>
                            <td><label>Ischange</label><input type="text" value="@item.RoleId" /></td>
                        </tr>
                    }
                </table>
            </div>
        }
        else
        {
           <div><label style="color:red">密码或账号错误</label></div>
        }


        <table></table>
    </div>
</body>
</html>
三个表的情况:






  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ASP.NET MVC 中,可以使用 Entity Framework 来调用和执行存储过程。下面是一种在 ASP.NET MVC 中编写存储过程的方法: 1. 创建数据库上下文类(DbContext): ```csharp public class YourDbContext : DbContext { public YourDbContext() : base("YourConnectionString") { } // 声明用于执行存储过程的方法 public virtual int ExecuteStoredProcedure(string storedProcedureName, SqlParameter[] parameters) { return Database.ExecuteSqlCommand(storedProcedureName, parameters); } } ``` 上述代码中,你需要替换 "YourConnectionString" 为你自己的数据库连接字符串,并添加适当的命名空间引用。 2. 在你的控制器中使用存储过程: ```csharp public class YourController : Controller { private YourDbContext db = new YourDbContext(); public ActionResult YourAction() { // 创建存储过程参数 var parameters = new[] { new SqlParameter("@Parameter1", value1), new SqlParameter("@Parameter2", value2), // 添加其他参数... }; // 执行存储过程 int result = db.ExecuteStoredProcedure("YourStoredProcedureName", parameters); // 处理存储过程执行结果 return View(); } } ``` 在上面的代码中,你需要将 "YourStoredProcedureName" 替换为你要执行的存储过程的名称,并根据需要添加参数和处理结果。 请注意,这只是一种在 ASP.NET MVC 中使用 Entity Framework 调用存储过程的方法之一。你还可以使用其他 ORM 工具或直接使用 ADO.NET 进行存储过程的编写和调用。根据你的实际需求,选择适合的方法来编写和执行存储过程

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值