[英]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.