.NET使用存储过程实现对数据库的增删改查
一、整体思路
先建立存储过程,再通过.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使用存储过程实现对数据库的增删改查的更多相关文章
- 【转载】通过JDBC对MySQL数据库的增删改查
通过JDBC进行简单的增删改查(以MySQL为例) 目录 前言:什么是JDBC 一.准备工作(一):MySQL安装配置和基础学习 二.准备工作(二):下载数据库对应的jar包并导入 三.JDBC基本操 ...
- ThinkPHP实现对数据库的增删改查
好久都没有更新博客了,之前老师布置的任务总算是现在可以说告一段落了,今天趁老师还没提出其他要求来更新一篇博客. 今天我想记录的是我之前做项目,自己所理解的ThinkPHP对数据库的增删改查. 首先要说 ...
- Android学习---数据库的增删改查(sqlite CRUD)
上一篇文章介绍了sqlite数据库的创建,以及数据的访问,本文将主要介绍数据库的增删改查. 下面直接看代码: MyDBHelper.java(创建数据库,添加一列phone) package com. ...
- Android 系统API实现数据库的增删改查和SQLite3工具的使用
在<Android SQL语句实现数据库的增删改查>中介绍了使用sql语句来实现数据库的增删改查操作,本文介绍Android 系统API实现数据库的增删改查和SQLite3工具的使用. 系 ...
- Android SQL语句实现数据库的增删改查
本文介绍android中的数据库的增删改查 复习sql语法: * 增 insert into info (name,phone) values ('wuyudong','111') * 删 delet ...
- java jdbc 连接mysql数据库 实现增删改查
好久没有写博文了,写个简单的东西热热身,分享给大家. jdbc相信大家都不陌生,只要是个搞java的,最初接触j2ee的时候都是要学习这么个东西的,谁叫程序得和数据库打交道呢!而jdbc就是和数据库打 ...
- 利用API方式进行数据库的增删改查
/* 将数据库的增删改查单独放进一个包 */ package com.itheima28.sqlitedemo.dao; import java.util.ArrayList; import java ...
- MySQL数据库学习笔记(十二)----开源工具DbUtils的使用(数据库的增删改查)
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...
- Asp.net MVC4 使用EF实现数据库的增删改查
EF的使用 步骤: (1)将EF添加到项目:在Model右击添加新建项 找到ADO.NET实体数据模型,接着... (2)实现数据库的增删改查 查询 (因为在Model中已经添加EF实体了 ...
随机推荐
- RaspberryPi2B使用bcm2835c库控制GPIO
RaspberryPi2B使用bcm2835c库控制GPIO 网上有很多RaspberryPi控制GPIO的方法,有Python.WiringPi.bcm2835 C library 使用bcm283 ...
- Cell重用时数据混乱的管理方法
UITableView继承自UIScrollview,是苹果为我们封装好的一个基于scroll的控件.上面主要是一个个的UITableViewCell,可以让UITableViewCell响应一些点击 ...
- MySQL修改表
一.给表mytablename添加新字段newcolumn alter table mytablename add newcolumn varchar(50) COMMENT '新字段备注信息' 二. ...
- Mac中配置nvm
1.安装 nvm curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.2/install.sh | bash 安装成功默认将 ...
- C# 通过反射初探ORM框架的实现原理
背景: 以前学的Java进行开发,多用到Mybatis,Hiberante等ORM框架,最近需要上手一个C#的项目,由于不是特别难,也不想再去学习C#的ORM框架,所以就想着用反射简单的实现一下ORM ...
- Guice之IOC教程
Guice 在上一篇博客中, 我们讲解了Spring中的IOC示例与实现, 本文着重介绍Guice注入以及与Spring中的差异. Guice是Google开发的, 一个轻量级的依赖注入框架, 跟Sp ...
- IE之页面加载慢.
场景 场景是大屏页面一张深色背景, 里面一些文本元素以及图表展示. 结果在IE下发现加载异常缓慢, 还有部分人员反馈页面卡死. 后台读写优化 默认处理图片逻辑是, ImageIO读取原图, 转成byt ...
- Android IntentService的使用和源码分析
引言 Service服务是Android四大组件之一,在Android中有着举足重轻的作用.Service服务是工作的UI线程中,当你的应用需要下载一个文件或者播放音乐等长期处于后台工作而有没有UI界 ...
- Asteroids!-裸的BFS
G - Asteroids! Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Subm ...
- android UI布局
一.设置反复背景 在drawable目录下建一个mybackground.xml文件 在文件里写入: <?xml version="1.0" encoding="u ...