我在这段代码上遇到了麻烦。在我的数据库中,我将Passphase列设置为binary(20)。为了获得下面列出的代码,我正在学习一个教程,但是我做了很多调整以满足我的需求。我的问题是我不知道如何将密码存储为二进制而不是nvarchar。
如果这有所不同,则用于SQL Server的注册页面。
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());
最佳答案
我相信您要更改此设置:
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))
{
...
}
}
关于c# - 不允许从数据类型nvarchar隐式转换为二进制。使用CONVERT函数运行此查询。,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21286661/