![](/img/trans.png)
[英]SQL output parameter of varbinary to use as image on ASPX web form
[英]Output parameter from SQL Server not printing to web form
我有商店手續
create proc spAddEmployees
@Name varchar(50),
@Gender varchar(10),
@Salary int,
@EmployeeId int out
as
begin
insert into tblEmployees values (@Name, @Gender, @Salary)
select EmployeeId = SCOPE_IDENTITY()
end
它的輸出參數告訴用戶當前的scope_identity標記看起來像
<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
<table style="border: 1px solid black; font-family:Arial">
<tr>
<td>
Employee Name
</td>
<td>
<asp:TextBox ID="txtEmployeeName" runat="server"></asp:TextBox>
</td>
</tr>
<tr>
<td>
Gender
</td>
<td>
<asp:DropDownList ID="ddlGender" runat="server">
<asp:ListItem>Male</asp:ListItem>
<asp:ListItem>Female</asp:ListItem>
</asp:DropDownList>
</td>
</tr>
<tr>
<td>
Salary
</td>
<td>
<asp:TextBox ID="txtSalary" runat="server"></asp:TextBox>
</td>
</tr>
<tr>
<td colspan="2">
<asp:Button ID="btnSubmit" runat="server" Text="Submit"
onclick="btnSubmit_Click" />
</td>
</tr>
<tr>
<td colspan="2">
<asp:Label ID="lblMessage" runat="server"></asp:Label>
</td>
</tr>
</table>
和后面的代碼
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void btnSubmit_Click(object sender, EventArgs e)
{
//read from the config file so you don't have to hardcode the connection string
string cs = ConfigurationManager.ConnectionStrings["dbcs"].ConnectionString;
//when you use the using statement the database connection is automatically closed for you
using(SqlConnection con = new SqlConnection(cs))
{
SqlCommand cmd = new SqlCommand("spAddEmployees", con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@Name", txtEmployeeName.Text);
cmd.Parameters.AddWithValue("@Gender",ddlGender.SelectedValue);
cmd.Parameters.AddWithValue("@Salary", txtSalary.Text);
SqlParameter outputParmeter = new SqlParameter();
outputParmeter.ParameterName = "@EmployeeId";
outputParmeter.SqlDbType = SqlDbType.Int;
outputParmeter.Direction = ParameterDirection.Output;
cmd.Parameters.Add(outputParmeter);
con.Open();
cmd.ExecuteNonQuery();
string EmpId = outputParmeter.Value.ToString();
lblMessage.Text = "Employee Id = " + EmpId;
}
}
}
該程序應在tblEmployees表中添加新行,然后將存儲過程的輸出參數輸出給用戶。 單擊該按鈕時,它將運行並將行添加到數字中,但是輸出參數未打印到屏幕上。 有什么想法嗎?
也許:
select EmployeeId = SCOPE_IDENTITY()
在存儲過程中應為:
select @EmployeeId = SCOPE_IDENTITY()
存儲過程中的語法不正確。
你應該用
select @EmployeeId = SCOPE_IDENTITY()
^
檢索輸出參數的常用方法是通過命令集合。 我不確定在此過程中是否將參數替換為某處
string EmpId = cmd.Parameters["@EmplyeeId"].Value.ToString();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.