我在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))
答案 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();
}