2016-05-27 14 views
1

我是asp.net和sql server的初学者。我使用sql认证在sql server 2014中创建了一个数据库。如何在ASP.NET中解决这个错误

这里是我的代码:

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数据库。下面的卡扣是我得到的错误:

Error page

+4

在连接字符串中检查您的密码传递给SqlConnection的字符串完全匹配您在SSMS中使用的密码; – techspider

+0

根据您的错误,听起来您的凭据不正确。尝试使用相同的登录到SQL Server Management Studio来查看是否有帮助。另外,请考虑使用参数来构建查询,而不是串联字符串。 –

+0

正如前面的用户指出的那样(确认证书)您可以在您想要打开连接的代码中指向断点。 其他建议: 1.不要使用“sa”作为你的网络应用sql连接 - 非常危险的做法 2.使用@ – DaniDev

回答

1

正如其他人说,这可能是只是一个错误的密码。 为了确保在SSMS中启用了Sql Server身份验证,请右键单击该实例,选择属性并确保选择了Sql Server和Windows身份验证。

enter image description here 也...

  1. 要创建和测试连接字符串您可以创建一个新的文本文件,并将其重命名为anything.udl。 如果您双击它,您将能够创建和测试几种不同连接类型的连接字符串。如果你保存你的改变,然后在记事本中打开文件,你会看到你需要的格式的连接字符串。

  2. 你不应该用sa连接到你的数据库,就像你有一个sql注入漏洞一样(如你一样),如果你只是一个普通用户,可能造成的损害要大得多。

  3. 在你做任何事之前,请阅读sql injection,因为你写的代码是一本教科书的例子。

+0

谢谢你们。一旦我将身份验证更改为“Windows身份验证”,我得到了一个输出,但它在sql身份验证中不起作用。你能告诉我为什么? – John

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。您不希望授予用户更改表结构等的权限。

更安全的是只给予数据读取器权限并授予存储过程的执行权限。此链接显示了:GRANT EXECUTE to all stored procedures

您放弃了使用UPDATE,INSERT,DELETE语句的能力,并且有一点工作要编写存储过程来执行这些更新。但是,您可以控制数据的更新方式。您不希望用户在预期DELETE MyPreciousTable WHERE id = 123456789时能够执行DELETE MyPreciousTable

您可以使用GRANTDENY命令作为管理员来微调允许外部用户执行的操作。