簡體   English   中英

插入參數,C#,T-Sql

[英]Inserting Parameters, C#, T-Sql

我正在嘗試通過文本框通過apx頁面插入參數。 我設置了參數,但是每當我執行nonquery時,@ Username就會顯示在數據庫中,而不是實際值。 下面是我的代碼。 誰能透露一點見識?

這是完整的代碼:

protected void btn_SubmitUserInfo_Click(object sender, EventArgs e)
    {
        SqlConnection conn = new SqlConnection();
        conn = new SqlConnection("Data Source=.\\SQLEXPRESS;AttachDbFilename=c:\\Documents and Settings\\xm\\My Documents\\Visual Studio 2010\\Projects\\CreateUser\\CreateUser\\App_Data\\UserInformation.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True; Integrated Security=SSPI");

        //Open the connection outside of the try statement
        conn.Open();

        try
        {
            //Create a command for the stored procedure and tie it into the connection
            SqlCommand cmd = new SqlCommand("InsertUserValues", conn);

            //Set the command type so it know to execute the stored proc
            cmd.CommandType = CommandType.StoredProcedure;

            //Declare Parameters


            SqlParameter @UserID = new SqlParameter("@UserID", System.Data.SqlDbType.Int);
            @UserID.Direction = ParameterDirection.Input;
            @UserID.Value = txtUserID.Text;


            SqlParameter @UserName = new SqlParameter("@UserName", System.Data.SqlDbType.VarChar);
            @UserName.Direction = ParameterDirection.Input;
            @UserName.Value = txtUserName.Text;

            SqlParameter @UserPassword = new SqlParameter("@UserPassword", System.Data.SqlDbType.VarChar);
            @UserPassword.Direction = ParameterDirection.Input;
            @UserPassword.Value = txtPassword.Text;

            SqlParameter @FirstName = new SqlParameter("@FirstName", System.Data.SqlDbType.VarChar);
            @FirstName.Direction = ParameterDirection.Input;
            @FirstName.Value = txtFirstName.Text;

            SqlParameter @LastName = new SqlParameter("@LastName", System.Data.SqlDbType.VarChar);
            @LastName.Direction = ParameterDirection.Input;
            @LastName.Value = txtLastName.Text;

            SqlParameter @Address = new SqlParameter("@Address", System.Data.SqlDbType.VarChar);
            @Address.Direction = ParameterDirection.Input;
            @Address.Value = txtAddress.Text;

            SqlParameter @AptNum = new SqlParameter("@AptNum", System.Data.SqlDbType.VarChar);
            @AptNum.Direction = ParameterDirection.Input;
            @AptNum.Value = txtAptNumber.Text;

            SqlParameter @City = new SqlParameter("@City", System.Data.SqlDbType.VarChar);
            @City.Direction = ParameterDirection.Input;
            @City.Value = txtCity.Text;

            SqlParameter @State = new SqlParameter("@State", System.Data.SqlDbType.VarChar);
            @State.Direction = ParameterDirection.Input;
            @State.Value = txtState.Text;

            //SqlParameter @Zip = new SqlParameter("@Zip", System.Data.SqlDbType.Int);
            //@Zip.Direction = ParameterDirection.Input;
            //@Zip.Value = Convert.ToInt32(txtZip.Text);

            //add new parameter command to object
            cmd.Parameters.Add(@UserID);
            cmd.Parameters.Add(@UserName);
            cmd.Parameters.Add(@UserPassword);
            cmd.Parameters.Add(@FirstName);
            cmd.Parameters.Add(@LastName);
            cmd.Parameters.Add(@Address);
            cmd.Parameters.Add(@AptNum);
            cmd.Parameters.Add(@City);
            cmd.Parameters.Add(@State);
            //cmd.Parameters.Add(@Zip);

            //execute nonquery
            cmd.ExecuteNonQuery();

        }
        finally
        {
            lblSucess.Text = "Your information has been submitted";
            //Close the connection
            if (conn != null)
            {
                conn.Close();
            }
        }

這是存儲過程:

ALTER PROCEDURE dbo.InsertUserValues

@UserID int,
@UserName varchar(50),
@UserPassword varchar(100),
@FirstName varchar(50),
@LastName varchar(50),
@Address varchar(50),
@AptNum varchar(50),
@City varchar(50),
@State varchar(50)


AS
INSERT INTO tb_User( user_Name, password, f_Name, l_Name, address, apt_Number, city, state)
VALUES (                '@UserName', '@UserPassword', '@FirstName', '@LastName', '@Address', '@AptNum', '@City', '@State')

您在SQL語句中引用了參數。 從存儲過程定義中的參數周圍刪除單引號。 引用它們會將它們視為文字字符串,而不是要替換的參數。

ALTER PROCEDURE dbo.InsertUserValues

@UserID int,
@UserName varchar(50),
@UserPassword varchar(100),
@FirstName varchar(50),
@LastName varchar(50),
@Address varchar(50),
@AptNum varchar(50),
@City varchar(50),
@State varchar(50)


AS
INSERT INTO tb_User( user_Name, password, f_Name, l_Name, address, apt_Number, city, state)
VALUES (@UserName, @UserPassword, @FirstName, @LastName, @Address, @AptNum, @City, @State)

您的參數名稱不正確-您不應在C#變量的開頭使用@。 它應該是:

SqlParameter UserName = new SqlParameter("@UserName", System.Data.SqlDbType.VarChar);
UserName.Direction = ParameterDirection.Input;
UserName.Value = txtUserName.Text;
cmd.Parameters.Add(UserName);

我認為這不是問題的根源,但這只是我注意到的問題。 我們需要更多代碼來查看問題所在

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM