第46章、调用简单存储过程

 

【知识要点】
  (1)SQL SERVER如何创建存储过程
  (2)如何调用无参数存储过程

【问题提出】
  存储过程的好处我们早已知道了,那么如何使用C#调用无参数存储过程呢?

  

【在线指导】

  SQL SERVER数据库创建存储过程回顾:第36章、创建无参数存储过程

  C#调用无参数存储过程是非常简单的,我们可以简单的把“EXEC prcClient”作为一个SQL语句一样,返回结果填充到GridView即可。   

创建存储过程语句:
  CREATE PROCEDURE prcClient
  AS
    SELECT vClientName,cMobile,vAddress FROM Client
-------------------------------------------------------------------------------------------
调用存储过程语句:
  EXEC prcClient

1、设计界面

  (1)打开Hello项目,单击“启动页>最近使用的项目>Hello”。

  (2)在“解决方案资源管理器”中添加“SqlProcedure.aspx”页面。

  (3)从工具箱中拖1个按钮Button到SqlProcedure.aspx页面,控件“调用简单存储过程”按钮:ID属性为“btnProcedure”;

            

  (4)从工具箱中拖1个GridView到SqlProcedure.aspx页面,GridView的ID属性为“gvClient”;  

  注:GridView的样式设置与列的设置由于我们前面章节多次重复,不再赘述。 

  

2、添加代码

  (4)双击页面上的“调用简单存储过程”按钮。

  我们在btnProcedure_Click()中间输入:

//连接SQL SERVER
string ConnSqlServer = "Server=www.woshicainiao.net;Database=SuperMarket;User ID=sa;Pwd=xxx";
SqlConnection Conn = new SqlConnection(ConnSqlServer);

//打开
Conn.Open();

//声明SqlCommand对象
string ProcedureSql = "EXEC prcClient";

SqlDataAdapter Adapter = new SqlDataAdapter(ProcedureSql, Conn);
DataSet Ds = new DataSet();
Adapter.Fill(Ds, "Client");

//执行命令
gvClient.DataSource = Ds.Tables["Client"];
gvClient.DataBind();

//关闭数据库
Conn.Close();

  讲解:
  string ProcedureSql = "EXEC prcClient";对于简单存储过程,我们只需把“EXEC prcClient”当作一个SQL查询语句就OK了。

  

  (5)单击“调用简单存储过程”按钮。

  

  当然了,这么几条记录我们还不能够体会到存储过程的优势,先学会它,以后你会用得到它的。

阅读终点,创作起航,您可以撰写心得或摘录文章要点写篇博文。去创作
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
当然可以!以下是实现要求的程序: ``` ; 程序开始 assume cs:code, ds:data data segment buffer db 16 dup (?) ; 存储输入的字符 numList db 10, 20, 30, 40, 50 ; 待处理的数据列表 maxNum db 0 ; 最大值 minNum db 0 ; 最小值 data ends code segment start: mov ax, data mov ds, ax ; 初始化数据段寄存器 ; 将47H号中断向量设置为当前程序的入口地址 mov dx, offset convert mov ax, seg convert mov es, ax mov ax, 0047h mov word ptr es:[ax*4], dx ; 将46H号中断向量设置为当前程序的入口地址 mov dx, offset findMinAndMax mov ax, seg findMinAndMax mov es, ax mov ax, 0046h mov word ptr es:[ax*4], dx ; 调用输入函数将字符读入 buffer 数组 call input ; 调用 47H 号中断将 buffer 数组中的字符转换成 16 进制数字 mov ah, 47h int 47h ; 调用 46H 号中断求出最大值和最小值 mov ah, 46h int 46h ; 显示结果 call display mov ax, 4c00h ; 程序结束 int 21h ; 47H 号软中断,将字符转换成16进制数码 convert: push ax ; 保存寄存器 push bx push cx push dx push si xor si, si ; 初始化索引 mov cx, 16 ; 循环 16 次,处理 buffer 数组中的每个字符 loop1: mov al, buffer[si] ; 获取 buffer 数组中的字符 cmp al, 30h ; 判断字符是否为数字 jb skip ; 如果不是数字,则跳过 cmp al, 39h ; 判断字符是否为数字 ja skip ; 如果不是数字,则跳过 sub al, 30h ; 将字符转换成数字 mov bl, al ; 将数字保存到 bl 中 shl al, 4 ; 将数字左移 4 位 and al, 0F0h ; 将高 4 位清零 or al, bl ; 将低 4 位和高 4 位合并 mov buffer[si], al ; 将转换后的数字保存回 buffer 数组 skip: inc si ; 索引加 1 loop loop1 ; 循环 pop si ; 恢复寄存器 pop dx pop cx pop bx pop ax iret ; 返回 ; 46H 号软中断,求出一系列数据中的最大值、最小值 findMinAndMax: push ax ; 保存寄存器 push bx push cx push dx push si mov maxNum, numList ; 初始化最大值为第一个数 mov minNum, numList ; 初始化最小值为第一个数 xor si, si ; 初始化索引 loop2: mov al, numList[si] ; 获取 numList 数组中的数 cmp al, maxNum ; 判断是否大于当前最大值 jle notMax ; 如果不大于,则跳过 mov maxNum, al ; 更新最大值 jmp nextNum notMax: cmp al, minNum ; 判断是否小于当前最小值 jge nextNum ; 如果不小于,则跳过 mov minNum, al ; 更新最小值 nextNum: inc si ; 索引加 1 cmp si, 5 ; 判断是否处理完所有的数 jl loop2 ; 如果没有处理完,则继续循环 pop si ; 恢复寄存器 pop dx pop cx pop bx pop ax iret ; 返回 ; 显示结果的子程序 display: ; 显示转换后的数字 mov ah, 02h ; 调用中断 21H 的 02H 功能 mov cx, 16 ; 循环 16 次,显示 buffer 数组中的每个字符 mov si, offset buffer ; 初始化索引 loop3: mov dl, buffer[si] ; 获取 buffer 数组中的字符 mov ah, 02h ; 调用中断 21H 的 02H 功能 int 21h ; 显示字符 inc si ; 索引加 1 loop loop3 ; 循环 ; 显示最大值和最小值 mov ah, 09h ; 调用中断 21H 的 09H 功能 mov dx, offset maxMsg ; 显示最大值的提示信息 int 21h mov ah, 02h ; 调用中断 21H 的 02H 功能 mov dl, maxNum ; 显示最大值 add dl, 30h ; 将数字转换成字符 int 21h ; 显示字符 mov dl, 0Ah ; 换行 int 21h ; 显示字符 mov dl, 0Dh ; 回车 int 21h ; 显示字符 mov ah, 09h ; 调用中断 21H 的 09H 功能 mov dx, offset minMsg ; 显示最小值的提示信息 int 21h mov ah, 02h ; 调用中断 21H 的 02H 功能 mov dl, minNum ; 显示最小值 add dl, 30h ; 将数字转换成字符 int 21h ; 显示字符 mov dl, 0Ah ; 换行 int 21h ; 显示字符 mov dl, 0Dh ; 回车 int 21h ; 显示字符 ret ; 返回 ; 调用中断 21H 的 01H 功能,读入一个字符 input: mov ah, 01h ; 调用中断 21H 的 01H 功能 int 21h ; 读入一个字符 mov buffer, al ; 将读入的字符保存到 buffer 数组 ret ; 返回 ; 显示最大值的提示信息 maxMsg db 'The maximum number is: $' ; 显示最小值的提示信息 minMsg db 'The minimum number is: $' code ends end start ``` 希望这个程序对你有所帮助!

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蒋会全

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值