我有一个注册页面,用户可以在其中将电子邮件输入到电子邮件中。将文本和密码输入到pass.Text中,但是当我单击Enter按钮时,我得到了一个错误,似乎系统认为哈希密码和电子邮件地址是列名,所以我得到的列名不明确,后跟输入的电子邮件和哈希密码,我不确定自己做错了什么,但我想可能与INSERT函数有关。
private void enterdetails_Click(object sender, EventArgs e)
{
string query = String.Format("INSERT INTO tbl_register(email,password) VALUES({0},{1})",
mail.Text,Hashing.ComputeHash(pass.Text, Supported_HA.SHA256,
ASCIIEncoding.ASCII.GetBytes("Supported_HA.SHA256")));
SqlConnection sqlconn = new SqlConnection(@"");
sqlconn.Open();
SqlCommand comm = new SqlCommand(query, sqlconn);
comm.ExecuteNonQuery();
sqlconn.Close();
}
答案 0 :(得分:1)
using
块中(这适用于通过类型实现IDisposable
的任何实例)。password
和email
也是保留字。您应该使用方括号将其转义。 ([email], [password])
查看已编辑的代码,确保选择正确的SqlDbType
以及长度。我对两者都做了一些猜测。
private void enterdetails_Click(object sender, EventArgs e)
{
string query = "INSERT INTO tbl_register([email],[password]) VALUES(@email,@password)";
using(SqlConnection sqlconn = new SqlConnection(@""))
using(SqlCommand comm = new SqlCommand(query, sqlconn))
{
sqlconn.Open();
comm.Parameters.Add("@email", SqlDbType.VarChar, 200).Value = mail.Text
comm.Parameters.Add("@password", SqlDbType.VarBinary, 256).Value = Hashing.ComputeHash(pass.Text, Supported_HA.SHA256, ASCIIEncoding.ASCII.GetBytes("Supported_HA.SHA256"));
comm.ExecuteNonQuery();
}
}