带参数的SQL内联查询。执行查询时不读取参数

时间:2010-04-23 19:41:41

标签: c# asp.net

我在c#中遇到sql查询问题,基本上它是带参数的内联查询,但是当我运行它时它告诉我参数1或参数2不存在

这是我的查询在页面顶部声明为public:

public const string InsertStmtUsersTable = "insert into Users (username, password, email, userTypeID, memberID, CM7Register) " +
               "Values(@username, @password, @email, @userTypeID, @memberID,@CM7Register ); select @@identity";

这是我分配参数的代码,我知道我遇到问题所以我分配了两次参数:

Username =(cmd.Parameters["@username"].Value = row["username"].ToString()) as string; 
cmd.Parameters["@username"].Value = row["username"].ToString();

在1 methopd中,它调用此查询并尝试插入表,这里是代码:

Result = Convert.ToInt32(SqlHelper.ExecuteScalar(con, CommandType.Text,InsertStmtUsersTable));

确切的错误消息是:必须声明变量'@username'。 这段代码可能是一个问题,因为除了查询声明之外,所有先前的编码都在此using语句中声明,这里是using语句:

  using (SqlCommand cmd = new SqlCommand(InsertStmtUsersTable, con))

1 个答案:

答案 0 :(得分:1)

这就是各种丑陋。这可能会简单得多(即使我不确定SqlHelper的作用:

using(SqlConnection conn = new SqlConnection(connString))
{
    conn.Open();

    SqlCommand command = new SqlCommand(InsertStmtUsersTable, conn);
    command.CommandType = CommandType.Text;

    command.Parameters.Add(new SqlParameter("username", userNameString));
    command.Parameters.Add(new SqlParameter("password", passwordString));
    command.Parameters.Add(new SqlParameter("email", emailString));
    command.Parameters.Add(new SqlParameter("userTypeId", userTypeId));
    command.Parameters.Add(new SqlParameter("memberId", memberId));
    // Rest of your Parameters here

    var result = (int)command.ExecuteScalar();
}