我遇到了这段代码的问题。在我的数据库中,我将Passphase列设置为二进制(20)。为了获得下面列出的代码,我正在学习一个教程,但我调整了很多以满足我的需求。我的问题是我不知道如何将密码存储为二进制而不是nvarchar。
这是针对SQL服务器的注册页面,如果这会产生影响。
SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["RegDNMembershipConnectionString"].ConnectionString);
con.Open();
string insCmd = "Insert into Accounts (AccountName, Passphrase, EmailAddress, FullName, Country) VALUES (@AccountName,@Passphrase,@EmailAddress,@FullName,@Country)";
SqlCommand insertUser = new SqlCommand(insCmd, con);
insertUser.Parameters.AddWithValue("@AccountName", TextBoxUN.Text);
insertUser.Parameters.AddWithValue("@Passphrase", TextBoxPass.Text);
insertUser.Parameters.AddWithValue("@EmailAddress", TextBoxEA.Text);
insertUser.Parameters.AddWithValue("@FullName", TextBoxFN.Text);
insertUser.Parameters.AddWithValue("@Country", DropDownListCountry.SelectedItem.ToString());
答案 0 :(得分:1)
我相信你想改变这个:
insertUser.Parameters.AddWithValue("@Passphrase", TextBoxPass.Text);
到此:
insertUser.Parameters.AddWithValue("@Passphrase",
Encoding.Default.GetBytes(TextBoxPass.Text));
此外,请尊重IDisposable
界面。您上面的代码更适合编写:
using (var con = new SqlConnection(ConfigurationManager.ConnectionStrings["RegDNMembershipConnectionString"].ConnectionString))
{
con.Open();
string insCmd = "Insert into Accounts (AccountName, Passphrase, EmailAddress, FullName, Country) VALUES (@AccountName,@Passphrase,@EmailAddress,@FullName,@Country)";
using (var insertUser = new SqlCommand(insCmd, con))
{
...
}
}
答案 1 :(得分:1)
试试这个
SqlParameter insertUser = new SqlParameter("@Passphrase",SqlDbType.Binary, 15);
insertUser.Value = System.Text.Encoding.ASCII.GetBytes(TextBoxPass.Text);
insCmd.Parameters.Add(insertUser);