Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在Web表单C和ASP中显示SQL表中具有Identity属性的ID_C#_Sql_Asp.net_Forms - Fatal编程技术网

C# 在Web表单C和ASP中显示SQL表中具有Identity属性的ID

C# 在Web表单C和ASP中显示SQL表中具有Identity属性的ID,c#,sql,asp.net,forms,C#,Sql,Asp.net,Forms,我用C#和ASP.net开发了一个简单的票证跟踪软件 我的问题是,我无法显示或打印数据库中的ID值。 我的应用程序运行良好,每次我填写web表单时,它都会更新数据库并生成一个新的ID号 我所有的代码都正常工作,只是没有显示数字 基本上,用户填写表单,然后进入成功提交页面。我希望数字显示在提交页面中 这是我的存储过程 USE [TrackITApp] GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO ALTER PROCEDURE [dbo

我用C#和ASP.net开发了一个简单的票证跟踪软件

我的问题是,我无法显示或打印数据库中的ID值。 我的应用程序运行良好,每次我填写web表单时,它都会更新数据库并生成一个新的ID号

我所有的代码都正常工作,只是没有显示数字

基本上,用户填写表单,然后进入成功提交页面。我希望数字显示在提交页面中

这是我的存储过程

USE [TrackITApp]
GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

ALTER PROCEDURE [dbo].[StoredProcGetSupportTicket]
-- Add the parameters for the stored procedure here
@fname nvarchar(50),
@lname nvarchar(50),
@email nvarchar(50),
@severityID bigint,
@statusID bigint,
@departmentID bigint,
@issuetype bigint,
@issuedesc nvarchar(500),
@ticketnumber bigint OUTPUT
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;

-- Insert statements for procedure here
INSERT INTO supporticket(fname,lname,email,severityID,statusID,departmentID,issuetype,issuedesc)
VALUES(@fname,@lname,@email,@severityID,@statusID,@departmentID,@issuetype,@issuedesc)

SET @ticketnumber=SCOPE_IDENTITY()
END
这是我的储蓄班

using System;
using System.Collections.Generic;
using System.Configuration;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Web.Security;
using System.Data.SqlClient;

namespace TrackIT
{
    public class SupportTicket
    {
        #region Declarations
        public string fname { get; set; }
        public string lname { get; set; }
        public string email { get; set; }
        public int statusID { get; set; }
        public string issuedesc { get; set; }
        public int severityID { get; set; }
        public int issuetype { get; set; }
        public int departmentID { get; set; }
        public int ticketnum { get; set; }



    #endregion

    #region Methods
    public void Save()
    {

        string constr = ConfigurationManager.ConnectionStrings["constr"].ConnectionString;
        using (SqlConnection con = new SqlConnection(constr))
        {
            using (SqlCommand cmd = new SqlCommand("StoredProcGetSupportTicket"))
            {
                cmd.CommandType = CommandType.StoredProcedure;

                SqlParameter parameterFName = new SqlParameter("@fname", SqlDbType.NVarChar, 50);

                parameterFName.Value = fname;

                cmd.Parameters.Add(parameterFName);

                SqlParameter parameterLName = new SqlParameter("@lName", SqlDbType.NVarChar, 50);

                parameterLName.Value = lname;

                cmd.Parameters.Add(parameterLName);

                SqlParameter parameterEmail = new SqlParameter("@email", SqlDbType.NVarChar, 50);

                parameterEmail.Value = email;

                cmd.Parameters.Add(parameterEmail);

                SqlParameter parameterSeverity = new SqlParameter("@severityID", SqlDbType.BigInt);

                parameterSeverity.Value = severityID;

                cmd.Parameters.Add(parameterSeverity);

                SqlParameter parameterStatus = new SqlParameter("@statusID", SqlDbType.BigInt);

                parameterStatus.Value = statusID;

                cmd.Parameters.Add(parameterStatus);

                SqlParameter parameterDepartment = new SqlParameter("@departmentID", SqlDbType.BigInt);

                parameterDepartment.Value = departmentID;

                cmd.Parameters.Add(parameterDepartment);

                SqlParameter parameterissuedesc = new SqlParameter("@issuedesc", SqlDbType.NVarChar, 500);

                parameterissuedesc.Value = issuedesc;

                cmd.Parameters.Add(parameterissuedesc);

                SqlParameter parameterissuetype = new SqlParameter("@issuetype", SqlDbType.BigInt);

                parameterissuetype.Value = issuetype;

                cmd.Parameters.Add(parameterissuetype);

                SqlParameter parameterticketnum = new SqlParameter("@ticketnumber", SqlDbType.BigInt);

                parameterticketnum.Direction = ParameterDirection.Output;

                parameterticketnum.Value = ticketnum;

                cmd.Parameters.Add(parameterticketnum);

                con.Open();
                cmd.Connection = con;
                cmd.ExecuteNonQuery();
                cmd.ExecuteScalar();
                int tickID = (int)Convert.ToInt32(ticketnum.ToString());
                con.Close();
                try
                {

                    con.Open();
                    cmd.Connection = con;
                }
                catch (Exception e)
                {
                    throw new Exception(e.Message.ToString());

                }
                finally
                {
                    cmd.Dispose();
                    con.Close();


                }


            }

            #endregion
        }
    }
}
}
最后,这里是aspx.cs,它获取更新数据库的所有信息:

using System;
using System.Collections.Generic;
using System.Configuration;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Web.Security;
using System.Data.SqlClient;


namespace TrackIT
{
    public partial class ticket : System.Web.UI.Page
    {

    #region Declarations
    SupportTicket tk = new SupportTicket();
    public int ticketnum { get; set; }
    #endregion

    #region Methods
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            LoadCombos();
        }
    }

    protected void LoadCombos()
    {
        ICollection<Severity> severity = Severity.GetSeverities();
        listSeverity.DataTextField = "severitytype";
        listSeverity.DataValueField = "sevid";
        listSeverity.DataSource = severity;
        listSeverity.DataBind();

        ICollection<Status> status = Status.GetStatuses();
        liststatus.DataTextField = "statustype";
        liststatus.DataValueField = "statid";
        liststatus.DataSource = status;
        liststatus.DataBind();

        ICollection<Department> deptartment = Department.GetDepartments();
        ListDept.DataTextField = "deptname";
        ListDept.DataValueField = "deptID";
        ListDept.DataSource = deptartment;
        ListDept.DataBind();

        ICollection<Employee> employee = Employee.GetEmployee();
        ListEmp.DataTextField = "EmployeeName";
        ListEmp.DataValueField = "empID";
        ListEmp.DataSource = employee;
        ListEmp.DataBind();

        ICollection<Type> type = Type.GetIssueType();
        Listissuetype.DataTextField = "issuetype";
        Listissuetype.DataValueField = "typeid";
        Listissuetype.DataSource = type;
        Listissuetype.DataBind();
    }

    protected void btnSubmit_Click(object sender, EventArgs ex)
    {


        tk.fname = fnamebox.Text;
        tk.lname = lnamebox.Text;
        tk.email = emailbox.Text;
        tk.severityID = Convert.ToInt32(listSeverity.SelectedValue);
        tk.statusID = Convert.ToInt32(liststatus.SelectedValue);
        tk.departmentID = Convert.ToInt32(ListDept.SelectedValue);
        tk.issuetype = Convert.ToInt32(Listissuetype.SelectedValue);
        tk.issuedesc = BoxDetails.Text;
        tk.Save();
        tForm.Visible = false;
        SubmitSuccess.Visible = true;


    }




    #endregion

}

}
让它在我提交的表格中打印出来

我没有收到任何错误。我只是不明白,如果我正在检索ticketnumber标识号,为什么它无法打印


非常感谢您提供的所有帮助。

我认为问题在于您检索返回值的方式

不使用ticketnum:

int tickID=(int)Convert.ToInt32(ticketnum.ToString())

做一些更像这样的事情:

int tickID=Convert.ToInt32(cmd.Parameters[“@ticketnumber”].Value)


希望这有帮助

具体说明代码和问题。。
    SqlParameter parameterticketnum = new SqlParameter("@ticketnumber", SqlDbType.BigInt);

                parameterticketnum.Direction = ParameterDirection.Output;

                parameterticketnum.Value = ticketnum;

                cmd.Parameters.Add(parameterticketnum);

                con.Open();
                cmd.Connection = con;
                cmd.ExecuteNonQuery();
                cmd.ExecuteScalar();
                int tickID = (int)Convert.ToInt32(ticketnum.ToString());
                con.Close();