.NET用使用儲存過程獲取輸出引數的程式碼示例!
在網上也找到許多關於.NET中使用儲存過程獲取輸出引數的程式碼,但怎麼看怎麼都是記不住,還是自己親自實踐一遍後再記錄下來,這樣才能記得住,必竟自己做過的東西是比較難忘記的!!!
步驟如下:
①建立資料庫logintest,在資料庫中建立表User.
[img]http://niunan.iteye.com/upload/picture/pic/23583/c5f8348e-2333-3944-8713-69753e148b60.jpg[/img]
向建立的表中新增幾條測試資料.
②在資料庫中建立儲存過程:
③在VS中建立一個測試頁面ProcTest.aspx,在ProcTest.aspx.cs中匯入名稱空間
④在Page_Load方法裡寫入如下程式碼:
執行ASPX頁面,則能夠看到執行儲存過程後返回的結果!
[color=red]需要注意的是如果輸出引數是varchar型別的話則必須定義長度,否則會出錯,如果輸出引數是數字型的話就不必定義長度了![/color]
下面是完整的ProcTest.aspx.cs的原始碼:
步驟如下:
①建立資料庫logintest,在資料庫中建立表User.
[img]http://niunan.iteye.com/upload/picture/pic/23583/c5f8348e-2333-3944-8713-69753e148b60.jpg[/img]
向建立的表中新增幾條測試資料.
②在資料庫中建立儲存過程:
USE [logintest]
GO
-- =============================================
-- Author: 牛腩
-- Create date: 2008-10-21 14:01
-- Description: 通過傳入的uid獲取使用者姓名
-- =============================================
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[GetUNameById]
@uid int,
@name varchar(50) output
AS
BEGIN
select @name=uname from [User] where uid=@uid
END
③在VS中建立一個測試頁面ProcTest.aspx,在ProcTest.aspx.cs中匯入名稱空間
using System.Data;
using System.Data.SqlClient;
④在Page_Load方法裡寫入如下程式碼:
// 建立連線字串,在正式專案中可放在web.config中
string connStr = "server=niunan\\sqlexpress;uid=sa;pwd=123456;database=logintest";
// 連線資料庫
SqlConnection conn = new SqlConnection(connStr);
try
{
// 開啟資料庫連線
conn.Open();
// 建立用於執行資料庫操作的命令物件, GetUNameById為儲存過程名稱
SqlCommand cmd = new SqlCommand("GetUNameById", conn);
// 設定執行命令的方式為儲存過程
cmd.CommandType = CommandType.StoredProcedure;
// 向命令物件新增儲存過程所需要的引數
cmd.Parameters.Add("@uid", SqlDbType.Int);
// 設定要傳入到儲存過程的引數值
cmd.Parameters["@uid"].Value = 2;
// 新增儲存過程中的輸出引數,如果是字元型的必須定義長度
cmd.Parameters.Add("@name", SqlDbType.VarChar, 50);
// 設定引數為output輸出引數
cmd.Parameters["@name"].Direction = ParameterDirection.Output;
// 執行儲存過程
cmd.ExecuteReader();
// 獲取執行儲存過程後的輸出引數
string name = cmd.Parameters["@name"].Value.ToString();
Response.Write(name);
}
catch (Exception ex)
{
Response.Write(ex.Message);
if (conn.State == ConnectionState.Open)
{
conn.Close();
}
}
finally
{
if (conn.State == ConnectionState.Open)
{
conn.Close();
}
}
執行ASPX頁面,則能夠看到執行儲存過程後返回的結果!
[color=red]需要注意的是如果輸出引數是varchar型別的話則必須定義長度,否則會出錯,如果輸出引數是數字型的話就不必定義長度了![/color]
下面是完整的ProcTest.aspx.cs的原始碼:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;
public partial class ProcTest : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
// 建立連線字串,在正式專案中可放在web.config中
string connStr = "server=niunan\\sqlexpress;uid=sa;pwd=123456;database=logintest";
// 連線資料庫
SqlConnection conn = new SqlConnection(connStr);
try
{
// 開啟資料庫連線
conn.Open();
// 建立用於執行資料庫操作的命令物件, GetUNameById為儲存過程名稱
SqlCommand cmd = new SqlCommand("GetUNameById", conn);
// 設定執行命令的方式為儲存過程
cmd.CommandType = CommandType.StoredProcedure;
// 向命令物件新增儲存過程所需要的引數
cmd.Parameters.Add("@uid", SqlDbType.Int);
// 設定要傳入到儲存過程的引數值
cmd.Parameters["@uid"].Value = 2;
// 新增儲存過程中的輸出引數
cmd.Parameters.Add("@name", SqlDbType.VarChar, 50);
// 設定引數為output輸出引數
cmd.Parameters["@name"].Direction = ParameterDirection.Output;
// 執行儲存過程
cmd.ExecuteReader();
// 獲取執行儲存過程後的輸出引數
string name = cmd.Parameters["@name"].Value.ToString();
Response.Write(name);
}
catch (Exception ex)
{
Response.Write(ex.Message);
if (conn.State == ConnectionState.Open)
{
conn.Close();
}
}
finally
{
if (conn.State == ConnectionState.Open)
{
conn.Close();
}
}
}
}
相關文章
- 使用帶有輸出引數的儲存過程儲存過程
- 帶輸出引數的儲存過程儲存過程
- Oracle帶輸入輸出引數的儲存過程Oracle儲存過程
- Java呼叫儲存過程(帶輸出引數)Java儲存過程
- oracle父儲存過程呼叫子儲存過程procedure與輸出引數Oracle儲存過程
- dos下呼叫帶輸出引數的儲存過程儲存過程
- 【ASP.NET開發】ADO.NET呼叫帶輸出引數的儲存過程ASP.NET儲存過程
- oracle procedure 儲存過程輸入及輸出in out示例Oracle儲存過程
- JDBC 呼叫儲存過程程式碼示例JDBC儲存過程
- SQL Server系統儲存過程和引數示例SQLServer儲存過程
- 在sqlplus中呼叫in out輸入輸出引數的儲存過程SQL儲存過程
- C#中呼叫SQL儲存過程(帶輸入輸出引數的例子)C#SQL儲存過程
- mysql儲存過程的引數MySql儲存過程
- MySQL儲存過程in、out、inout引數示例與總結MySql儲存過程
- tcbs_批量儲存過程_輸出引數out與異常的關係儲存過程
- SQL儲存過程示例SQL儲存過程
- ORACLE 儲存過程示例Oracle儲存過程
- SQL Server-儲存過程(Procedure),帶入引數和出引數SQLServer儲存過程
- MyBatis 呼叫Oracle儲存過程,傳參、返回遊標的值獲取--示例MyBatisOracle儲存過程
- go 如何呼叫 sqlserver 帶傳出引數的儲存過程GoSQLServer儲存過程
- 儲存過程獲取表被引用的資訊儲存過程
- 儲存過程的引數可以使用sql的函式儲存過程SQL函式
- 【實戰】oracle job + 儲存過程 的使用示例Oracle儲存過程
- 儲存過程輸入引數型別定義引起的問題儲存過程型別
- MyBatis 示例之儲存過程MyBatis儲存過程
- 動態呼叫帶引數的儲存過程儲存過程
- SQL SERVER 儲存過程 獲取三個數中的最大值SQLServer儲存過程
- asp.net利用儲存過程分頁程式碼ASP.NET儲存過程
- PostgreSQL獲取建表語句儲存過程SQL儲存過程
- shell中獲取儲存過程返回值儲存過程
- GreenPlum儲存過程的原始碼匯出儲存過程原始碼
- oracle procedure儲存過程輸入引數用於sql like模糊匹配2演算法Oracle儲存過程SQL演算法
- MySQL 儲存過程引數IN OUT INOUT對比MySql儲存過程
- oracle儲存過程將引數字串分割sqlOracle儲存過程字串SQL
- 簡單的mysql儲存過程,輸出結果集MySql儲存過程
- 獲取某庫某個儲存過程內容儲存過程
- 使用儲存過程儲存過程
- 我的測試儲存過程程式碼儲存過程