2016-11-01 4 views
0

Я пытаюсь создать этот сайт для использования sql params. Мне показалось, что я следовал примеру, который мне дали, но мои данные sql показывают «@username» и «number» вместо значений, которые были помещены в текстовые поля.Попытка получить параметры sql для работы

Я в тупике.

спасибо за помощь

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 INSERT заявление. Поэтому SQL считает, что это буквальная строка, а не ссылка на параметр.

Попробуйте это:

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

Wow. Не могу поверить, что я это сделал. Я решил, что моя проблема связана с кодом и даже не смотрит на мою строку. Спасибо – birdseed

+0

Просто, чтобы быть справедливым, он толкал 6 утра, и я работал всю ночь – birdseed

1

Вы должны опустить ' в вашем SQL заявление, потому что это не строка, а параметр:

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

Вау. Не могу поверить, что я это сделал. Я решил, что моя проблема связана с кодом и даже не смотрит на мою строку. Спасибо – birdseed

+0

Просто, чтобы быть справедливым, он толкал 6 утра, и я работал всю ночь – birdseed

Смежные вопросы