2016-11-01 4 views
0

私はこのサイトを構築してsql paramsを使用しようとしています。私は私が与えられた例に従ったと思ったが、SQLのデータはテキストボックスに入れられた値の代わりに '@username'と 'number'を表示する。SQLパラメータを取得しようとしています

私は困惑。あなたはSQLのINSERT文でパラメータ名の前後に引用符を置くための助け

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

public partial class management_Default : System.Web.UI.Page 
{ 

    public void runsql(string sqlCmdTxt, bool adduserbool) 
    { 
     SqlConnection sqlConnection = new SqlConnection("Server=DELLXPS\\SQLEXPRESS; Initial Catalog=Warren_SEINDATASYSTEMS; Integrated Security=true;"); 
     SqlCommand cmd = new SqlCommand(); 
     SqlDataReader reader; 

     cmd.CommandText = sqlCmdTxt; 
     cmd.CommandType = CommandType.Text; 
     cmd.Connection = sqlConnection; 

     //If statement uses adduserbool param to determine if the code needs to make sql params for users 
     if (adduserbool == true) 
     { 
      SqlParameter user = new SqlParameter(); 
      user.ParameterName = "@username"; 
      user.Value = CreateUserWizard1.UserName.Trim(); 
      cmd.Parameters.Add(user); 

      if (txtboxNumberOfVisitors.Text != "") 
      { 
       SqlParameter number = new SqlParameter(); 
       number.ParameterName = "@number"; 
       number.Value = txtboxNumberOfVisitors.Text; 
       cmd.Parameters.Add(number); 
      } 
      else 
      { 
       // this else will send "2" if the text box is empty 
       SqlParameter number = new SqlParameter(); 
       number.ParameterName = "@number"; 
       number.Value = "2"; 
       cmd.Parameters.Add(number); 
      } 
     } 

     sqlConnection.Open(); 

     //cmd.ExecuteScalar(); 

     reader = cmd.ExecuteReader(); 

     sqlConnection.Close(); 

     //if user was created, clear number of visitors text box 
     if (adduserbool == true) 
     { 
      txtboxNumberOfVisitors.Text = ""; 
     } 
    } 
    protected void Page_Load(object sender, EventArgs e) 
    { 

    } 
    protected void CreateUserWizard1_CreatedUser(object sender, EventArgs e) 
    { 
     //Add residents to resident role 
      Roles.AddUserToRole(CreateUserWizard1.UserName, "resident"); 
      runsql("INSERT INTO [dbo].[NumberOfVisitors] ([ResidentName],[NumberOfVisitors]) VALUES ('@username','@number')", true); 

    } 

} 

答えて

0

ため

感謝。だから、SQLはそれがリテラル文字列だと考えています。パラメータへの参照ではありません。

はこれを試してみてください:

runsql("INSERT INTO [dbo].[NumberOfVisitors] ([ResidentName],[NumberOfVisitors]) VALUES (@username,@number)", true); 
+0

うわー。私はそれを信じられません。私は問題がコードであり、文字列を見ていないと考えました。ありがとうございました – birdseed

+0

公正であるように、それは午前6時を押していて、私は一晩中働いていました – birdseed

1

あなたはそれが文字列ではないので、SQL文では'を省略していますが、パラメータ:

runsql("INSERT INTO [dbo].[NumberOfVisitors] ([ResidentName],[NumberOfVisitors]) VALUES (@username,@number)", true); 
+0

うわー。私はそれを信じられません。私は問題がコードであり、文字列を見ていないと考えました。ありがとうございます – birdseed

+0

ちょうど公正であるようにそれは午前6時を押していて、私は一晩中働いていました – birdseed

関連する問題