aspnet存儲過程返回值
㈠ c#如何取得存儲過程的返回值
比如你的存儲過程返回參數變數名字為@res,而且sqlcommand cmd已經聲明定義;
那麼在執行sql語句之前
應該:
cmd.Parameters["@res"].Direction = ParameterDirection.InputOutput;
然後執行sql語句;
執行完畢再:
int res=(int)cmd.Parameters["@res"].Value;
結束,res就是存儲過程的返回值了
㈡ asp.net(c#)中如何使用存儲過程請大家幫忙
public DataSet getDataByPage(int pageIndex)
{
DataSet ds = new DataSet();
String m_connectionString = ConfigurationSettings.AppSettings["connectionString"].Trim();
OleDbConnection conn = null;
String tablename = " mytable"; //表名
String orderName = "orderTime"; //排序的欄位名
try
{
conn = new OleDbConnection(m_connectionString);
conn.Open();
OleDbCommand cmd = new OleDbCommand();
cmd.CommandText = "pagination";
cmd.CommandType = CommandType.StoredProcere;
cmd.Connection = conn;
cmd.Parameters.Add(new OleDbParameter("@tablename",OleDbType.VarChar));
cmd.Parameters["@tablename"].Value = tablename;
cmd.Parameters.Add(new OleDbParameter("@tableField",OleDbType.VarChar));
cmd.Parameters["@tableField"].Value = " * " ;
cmd.Parameters.Add(new OleDbParameter("@orderName",OleDbType.VarChar));
cmd.Parameters["@orderName"].Value = orderName;
cmd.Parameters.Add(new OleDbParameter("@pageSize",OleDbType.Integer));
cmd.Parameters["@pageSize"].Value = m_pageSize;
cmd.Parameters.Add(new OleDbParameter("@pageIndex",OleDbType.Integer));
cmd.Parameters["@pageIndex"].Value = pageIndex;
cmd.Parameters.Add(new OleDbParameter("@doCount",OleDbType.Integer));
cmd.Parameters["@doCount"].Value = 0;
cmd.Parameters.Add(new OleDbParameter("@orderType",OleDbType.Integer));
cmd.Parameters["@orderType"].Value = 1;
OleDbDataAdapter adapter = new OleDbDataAdapter(cmd);
adapter.Fill(ds,"music");
}
catch(Exception e)
{
System.Diagnostics.Trace.WriteLine(e.Message);
}
finally
{
conn.Close();
}
return ds;
}
//綁定數據到DateGrid
private void BindData(int pageIndex)
{
DataView dataview = new DataView(this.getDataByPage(pageIndex).Tables["newdata"]);
DataGrid1.DataSource = dataview;
DataGrid1.DataBind();
}
應該沒有問題!
㈢ Asp.net(C#) 獲取 執行sql server 語句/存儲過程後的 多個返回值
如果返回標量值的話,例如文章的個數,可以使用儲存過程的輸出(OUTPUT)參數。在定義存儲過過程時為參數指定OUTPUT關鍵字。C#調用存儲過程時指定參數SqlParameter對象的Direction屬性為Output。
如果是返回多個結果集的話,可以直接在存儲過程中使用多個select查詢就行。在C#代碼中使用SqlDataReader對象的NextResult方法提取下一個結果集。
㈣ c# 處理存儲過程output返回值的問題
因為ExecuteReader每次讀取一行,沒有和資料庫斷開連接,就像一個方法正在執行中,還沒執行return呢。所以沒值。
而ExecuteNonQuery是根據條件全查出來了放在你本地內存,就像一個方法執行完一樣,所以return也執行了,也就有值。
返回值我一般寫在添加等操作的存儲過程里,查詢沒必要即查詢結果還要在附帶一個返回值。不如只查結果,返回值不就是通過一些計算得來的嗎,完全可以在代碼中計算出來。
比如我添加的存儲過程是:
ALTER PROC [dbo].[sp_InsertModal]
@ModalName int
AS
INSERT tb_Modal(ModalName) values(@ModalName);
SELECT @@IDENTITY;
通過@@IDENTITY我能在添加一條數據後,直接拿到此數據的id數(自動增長的)。
像查詢的都寫成:
ALTER PROC [dbo].[sp_SelectLog]
@LogWork VARCHAR(50),
@StartTime DATETIME,
@EndTime DATETIME,
@UserId INT,
@ModalId INT
AS
SELECT LogId,LogWork,CreateTime,UserId,ModalId
FROM tb_Log tl
WHERE (@LogWork='' OR tl.LogWork=@LogWork)
AND (@StartTime <= tl.CreateTime AND @EndTime >= tl.CreateTime)
AND (@UserId = 0 OR tl.UserId = @UserId)
AND (@ModalId = 0 OR tl.ModalId = @ModalId)
樓主考慮一下,如果存儲過程不好解決可以試著在代碼中去處理。 因為存儲過程也是類似於程序中的方法。在存儲過程裡面處理業務邏輯和方法裡面是一樣的。但你要考慮那個更適合你的程序。
㈤ C# 中接收 存儲過程 的輸出參數問題
就這一句錯了:sqlCmd.Parameters.Add(new SqlParameter("@outResult", SqlDbType.VarChar));
應該改成:
sqlCmd.Parameters.Add(new SqlParameter("@outResult", SqlDbType.VarChar,30));
這里要定義VarChar的長度,我這里定為30,你再試下,就不會報錯了,你其它的代碼都是對的
㈥ Asp.net(C#) 獲取 執行sql server 語句/存儲過程後的 多個返回值
如果返回
標量
值的話,例如文章的個數,可以使用儲存過程的輸出(OUTPUT)參數。在定義存儲過過程時為參數指定OUTPUT關鍵字。C#調用
存儲過程
時指定參數
SqlParameter
對象的
Direction
屬性為Output。
如果是返回多個
結果集
的話,可以直接在存儲過程中使用多個select查詢就行。在C#代碼中使用SqlDataReader對象的NextResult方法提取下一個結果集。
㈦ C# 調用 存儲過程中,參數 input output return 的含義.
input 是輸入參數
output 是輸出參數
return 是返回值,是存儲過程中調用 RETURN 語句返回的值,調用此語句也就代表存儲過程返回了,執行完畢
一般如果只需要存儲過程返回一個值,那麼使用RETURN就行了
如果需要多個值,那麼就需要OUTPUT參數交互取值
也就是說OUTPUT和RETURN取得的效果是相同的
㈧ c# 執行存儲過程,並且返回DataSet
DataSet ds=new Dataset();
DataAdapter da= new DataAdapter(conn,"Select 語句");
da.Fill(ds);
㈨ C#如何過得SqlServer存儲過程的返回值
那要分情況了,如果是在Insert之後則需要返回他的ID值就直接用Select @@Identity
㈩ ASPNET怎樣調用一個存儲過程(帶參數的)
ASPNET怎樣調用一個存儲過程(帶參數的)使用的是Ado.NET中的相關的資料庫操作方法。
Ado.NET連接資料庫有以下幾個步驟:
1:使用配置的資料庫連接串,創建資料庫連接 Connection 對象
2:構建操作的sql語句
3:定義command對象
4:打開數據連接
5:執行命令
舉一個例子,刪除操作
public int DeleteStudent3(int stuID)
{
int result = 0;
using (SqlConnection connection = new SqlConnection(connString))
{
SqlCommand objCommand = new SqlCommand(dboOwner + ".usp_DeleteStudent", connection);
objCommand.CommandType = CommandType.StoredProcere;
objCommand.Parameters.Add("@stuID", SqlDbType.Int).Value = stuID;
connection.Open();
result = objCommand.ExecuteNonQuery();
}
return result;
}