我是asp.net和sql server的初学者。我在sql server 2014中使用sql身份验证创建了一个数据库。
这是我的代码:
Registration.aspx.cs
public partial class Registration : System.Web.UI.Page
{
SqlConnection con = new SqlConnection(@"Data Source=DESKTOP-U9DUN78\SQLEXPRESS;Initial Catalog=LoginRegisterData;Persist Security Info=True;User ID=sa;Password=***********;Pooling=False");
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
try
{
con.Open();
SqlCommand cmd = con.CreateCommand();
cmd.CommandType = CommandType.Text;
cmd.CommandText = "insert into UserDetails values('" + TextBoxUsername.Text + "','" + TextBoxEmailid.Text+ "','" + TextBoxPassword.Text + "','" + TextBoxDate.Text + "','" + DropDownListCountry.SelectedItem + "')";
cmd.ExecuteNonQuery();
con.Close();
}
catch(Exception ee)
{
Response.Write(ee);
}
}
我想将数据存储到sql server数据库中。以下快照是我得到的错误:
答案 0 :(得分:1)
正如其他人所说,它可能只是一个错误的密码。 要确保在SSMS中启用了Sql Server身份验证,请右键单击该实例,选择属性并确保选中Sql Server和Windows身份验证。
要创建和测试连接字符串,您可以创建一个新的文本文件并将其重命名为anything.udl。 如果双击它,您将能够为几种不同的连接类型创建和测试连接字符串。如果保存更改,然后在记事本中打开文件,您将看到所需格式的连接字符串。
您不应该使用sa连接到您的数据库,就好像您有一个SQL注入漏洞(就像您一样),如果您只有普通用户,可能造成的损害要大得多。
在您做其他任何事情之前,请阅读sql injection,因为您编写的代码是教科书示例。
答案 1 :(得分:1)
在Sql Server 2008 R2上测试。正如@etoisarobot所说,如上配置服务器以接受SQL和Windows身份验证。然后,管理员(希望是您)的某个人使用Windows身份验证进行连接。运行此脚本以更改sa
密码 - 这样您就知道自己拥有正确的密码。运行此脚本:
ALTER LOGIN [sa] WITH PASSWORD='PickAPassword', CHECK_POLICY=OFF
GO
ALTER LOGIN [sa] ENABLE
GO
重新启动“Sql Server”服务以使更改生效。
然后,您应该能够以sa
登录。
正如其他人所说,你应该创建一个除sa
以外的新登录帐户,只需要他们需要的权限,例如datareader和datawriter。您不希望授予用户更改表结构等的权限。
更安全的是仅提供datareader权限并授予对存储过程的执行权限。此链接显示了如何:GRANT EXECUTE to all stored procedures。
您放弃使用UPDATE,INSERT,DELETE语句的能力,并且编写存储过程以执行这些更新还有一些工作要做。但您可以控制数据的更新方式。您不希望用户在预期DELETE MyPreciousTable
时执行DELETE MyPreciousTable WHERE id = 123456789
。
您可以使用GRANT
和DENY
命令作为管理员来微调外部用户可以执行的操作。