一、整体思路

先建立存储过程,再通过.net 调用存储过程,来实现对表的增删改查。

二、新建数据库及存储过程

打开SqlServer2008,新建数据库orm1,及表Student。

数据库和表建立好我们现在来建立存储过程。

存储过程 ad :新增学生信息

CREATE PROCEDURE ad
@sid char() ,
@sname char(),
@sage int
AS
insert into Student values(@sid,@sname,@sage)
RETURN

第一句 ad 代表的是存储过程的名字,AS之前的@sid、@sname、@sage 为输入或输出参数,默认是输入参数,如果需要设置为输出参数,则需要在参数后面添加 OUTPUT,也就是这样:

    @sname char() OUTPUT,

还有就是仔细看你会发现,最后一个参数是末尾是不需要加逗号的!

那么现在我们来执行下这个存储过程,是否正确。

在SqlServer2008中,选中该存储过程,右键 执行存储过程 ,会弹出输入窗口,输入对应的学生信息,点确定即可运行。

执行后,查看数据库,发现新增的信息已经插入数据库,代表新建存储过程成功!

三、.NET调用存储过程

先新建 WebForm1.aspx 文件

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="WebApplication3.WebForm1" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
学号:<asp:TextBox ID="sid" runat="server"></asp:TextBox>
</div>
<div>
姓名:<asp:TextBox ID="sname" runat="server"></asp:TextBox>
</div>
<div>
年龄:<asp:TextBox ID="sage" runat="server"></asp:TextBox>
</div>
<div>
<asp:Button ID="Add" runat="server" Text="新增" OnClick="Add_Click" />
<asp:Button ID="Select" runat="server" Text="查询" OnClick="Select_Click" />
<asp:Button ID="Delete" runat="server" Text="删除" OnClick="Delete_Click" />
<asp:Button ID="Update" runat="server" Text="修改" OnClick="Update_Click" />
<asp:Button ID="ShowAll" runat="server" Text="显示所有" OnClick="ShowAll_Click" />
</div>
<div>
<asp:GridView ID="GridView1" runat="server"></asp:GridView>
</div>
</form>
</body>
</html>

新增学生信息

然后,打开对应的 cs 文件,编写新增方法 Add_Click

        protected void Add_Click(object sender, EventArgs e)
{
String constr = "Data Source=.;database=orm1;Integrated Security=True";
SqlConnection con = new SqlConnection(constr); //新建连接
con.Open(); //打开连接
SqlCommand cmd = con.CreateCommand(); //创建sqlCommand对象
cmd.CommandText = "ad"; //调用存储过程 ad
cmd.CommandType = CommandType.StoredProcedure; //设置cmd的执行类型为存储过程
cmd.Parameters.AddWithValue("@sid", sid.Text); //设置参数并赋值
cmd.Parameters.AddWithValue("@sname", sname.Text); //设置参数并赋值
cmd.Parameters.AddWithValue("@sage", int.Parse(sage.Text)); //设置参数并赋值
if (cmd.ExecuteNonQuery() > ) //执行存储过程
{
Response.Write("添加成功!");
}
else
{
Response.Write("添加失败");
}
con.Close(); //关闭连接
}

运行这段代码就可以执行存储过程了。

查询学生信息

新增功能完成了,现在我们来看看如何实现查询学习信息的功能吧。

同样是先建存储过程 ss。

CREATE PROCEDURE ss
@sid char()
AS
BEGIN SELECT * FROM Student WHERE @sid = Student.sid
END

调用存储过程 ss

        protected void Select_Click(object sender, EventArgs e)
{
String constr = "Data Source=.;Initial Catalog=orm1;Integrated Security=True";
SqlConnection con = new SqlConnection(constr);
con.Open(); //打开连接
SqlCommand cmd = new SqlCommand("ss", con); //使用存储过程
cmd.CommandType = CommandType.StoredProcedure; //设置Command对象的类型
SqlParameter spr; //表示执行一个存储过程
spr = cmd.Parameters.Add("@sid", SqlDbType.NChar,); //增加参数id
cmd.Parameters["@sid"].Value = sid.Text; //为参数初始化
GridView1.DataSource = cmd.ExecuteReader(); //执行存储过程并将数据绑定在GridView
GridView1.DataBind();
con.Close(); //关闭存储过程
}

这次我们运行程序看下效果吧

我们输入我们前面新建的sid 200,点击查询

到这里,相信大家应该能了解如何使用.net 调用存储过程了,所以,修改、删除功能我就直接贴代码了。

修改学生信息

CREATE PROCEDURE ud
@sid nchar() ,
@sname nchar(),
@sage int
AS
update Student set Student.sname=@sname,Student.sage=@sage where Student.sid=@sid
RETURN 0
        protected void Update_Click(object sender, EventArgs e)
{
String constr = "data source=.;database=orm1;Integrated Security=true";
SqlConnection con = new SqlConnection(constr);
con.Open();
SqlCommand cmd = con.CreateCommand();
cmd.CommandText = "ud";
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@sid", sid.Text);
cmd.Parameters.AddWithValue("@sname", sname.Text);
cmd.Parameters.AddWithValue("@sage", int.Parse(sage.Text));
if (cmd.ExecuteNonQuery() >)
{
Response.Write("修改成功");
}
else
{
Response.Write("修改失败");
}
con.Close(); }

删除学生信息

CREATE PROCEDURE de
@sid char()
AS
delete FROM Student WHERE @sid = Student.sid
        protected void Delete_Click(object sender, EventArgs e)
{
String constr = "Data Source=.;database=orm1;Integrated Security=True";
SqlConnection sqlConnection = new SqlConnection(constr);
sqlConnection.Open();
SqlCommand cmd = sqlConnection.CreateCommand();
cmd.CommandText = "de";
cmd.CommandType = CommandType.StoredProcedure;
SqlParameter spr;
spr = cmd.Parameters.Add("@sid", SqlDbType.NChar, );
cmd.Parameters["@sid"].Value = sid.Text;
if (cmd.ExecuteNonQuery() > )
{
Response.Write("删除成功!");
}
else
{
Response.Write("删除失败");
}
sqlConnection.Close();
}

.NET使用存储过程实现对数据库的增删改查的更多相关文章

  1. 【转载】通过JDBC对MySQL数据库的增删改查

    通过JDBC进行简单的增删改查(以MySQL为例) 目录 前言:什么是JDBC 一.准备工作(一):MySQL安装配置和基础学习 二.准备工作(二):下载数据库对应的jar包并导入 三.JDBC基本操 ...

  2. ThinkPHP实现对数据库的增删改查

    好久都没有更新博客了,之前老师布置的任务总算是现在可以说告一段落了,今天趁老师还没提出其他要求来更新一篇博客. 今天我想记录的是我之前做项目,自己所理解的ThinkPHP对数据库的增删改查. 首先要说 ...

  3. Android学习---数据库的增删改查(sqlite CRUD)

    上一篇文章介绍了sqlite数据库的创建,以及数据的访问,本文将主要介绍数据库的增删改查. 下面直接看代码: MyDBHelper.java(创建数据库,添加一列phone) package com. ...

  4. Android 系统API实现数据库的增删改查和SQLite3工具的使用

    在<Android SQL语句实现数据库的增删改查>中介绍了使用sql语句来实现数据库的增删改查操作,本文介绍Android 系统API实现数据库的增删改查和SQLite3工具的使用. 系 ...

  5. Android SQL语句实现数据库的增删改查

    本文介绍android中的数据库的增删改查 复习sql语法: * 增 insert into info (name,phone) values ('wuyudong','111') * 删 delet ...

  6. java jdbc 连接mysql数据库 实现增删改查

    好久没有写博文了,写个简单的东西热热身,分享给大家. jdbc相信大家都不陌生,只要是个搞java的,最初接触j2ee的时候都是要学习这么个东西的,谁叫程序得和数据库打交道呢!而jdbc就是和数据库打 ...

  7. 利用API方式进行数据库的增删改查

    /* 将数据库的增删改查单独放进一个包 */ package com.itheima28.sqlitedemo.dao; import java.util.ArrayList; import java ...

  8. MySQL数据库学习笔记(十二)----开源工具DbUtils的使用(数据库的增删改查)

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

  9. Asp.net MVC4 使用EF实现数据库的增删改查

    EF的使用 步骤: (1)将EF添加到项目:在Model右击添加新建项 找到ADO.NET实体数据模型,接着... (2)实现数据库的增删改查       查询 (因为在Model中已经添加EF实体了 ...

随机推荐

  1. ajax实现用户名校验的传统和jquery的$.post方式

    第一种:传统的ajax异步请求,后台代码以及效果在最下边 首先我们在eclipse中创建一个注册页面regist.jsp,创建一个form表单,注意,由于我们只是实现用户名校验的效果,下边红色部门是我 ...

  2. [epub] epub.js的ePubReader函数报URI malformed错误的解决办法

    报错信息:URI malformed 今天遇到了一个奇怪的问题折腾三个小时,最后发现是作者在底层使用了decodeURIComponent进行URL解码,而我在应用层使用了escape/unescap ...

  3. Java第二季

    1.封装 (1)概念 将类的某些信息隐藏在类的内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问. (2)封装的实现步骤 2.Java中的访问修饰符 3.继承 (1)Ja ...

  4. Cesium基础使用介绍

    前言 最近折腾了一下三维地球,本文简单为大家介绍一款开源的三维地球软件--Cesium,以及如何快速上手Cesium.当然三维地球重要的肯定不是数据显示,这只是数据可视化的一小部分,重要的应该是背后的 ...

  5. 使用python

    最近看视频学习,老师布置了个作业,关于如何使用python将多个excel进行合并,老师写的代码我感觉比较复杂,下面是我自己改良之后较简单的方式. 实现这个功能主要有两种方法,一种是用xlwd,xls ...

  6. ATL实现ActiveX插件

    文章属于原创,转载请联系本人.有参照两个博客(http://blog.csdn.net/jiangtongcn/article/details/13509633 http://blog.csdn.ne ...

  7. MYSQL常见运算符和函数

    字符函数 (1)CONCAT():字符连接 SELECT CONCAT('IMOOC','-','MySQL');//IMOOC-MySQL SELECT CONCAT (first_name,las ...

  8. javascript设计模式——迭代器模式

    前面的话 迭代器模式是指提供一种方法顺序访问一个聚合对象中的各个元素,而又不需要暴露该对象的内部表示.迭代器模式可以把迭代的过程从业务逻辑中分离出来,在使用迭代器模式之后,即使不关心对象的内部构造,也 ...

  9. jmeter接口系列:时间戳、加密

    JMeter安装配置 从官网下载JMeter的软件包apache-jmeter-x.x.zip,下载完成之后解压打开jmeter.bat即可. 说明 这里使用的jmeter版本是3.0,jdk版本是j ...

  10. Swagger服务API治理详解

    swager2的简介 在App后端开发中经常需要对移动客户端(Android.iOS)提供RESTful API接口,在后期版本快速迭代的过程中,修改接口实现的时候都必须同步修改接口文档,而文档与代码 ...