协助SqlConnection

时间:2017-03-26 19:01:38

标签: c# asp.net sql-server

我正在尝试将我的项目连接到数据库,在使用数据库时,我相当新。当我运行该程序时,我收到服务器错误,指出用户登录失败。我正在处理一个注册表单,填写完后会在单击创建帐户后填充数据库中的字段。

这是我的后端代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;

public partial class SignUp : System.Web.UI.Page
{

    SqlConnection conn = new SqlConnection();

    protected void Page_Load(object sender, EventArgs e)
    {
        conn.ConnectionString = @"Data Source=184.168.47.13;Initial Catalog=portfoliobrown;User ID=crossfire19;Password=***********";
    //error occurs here    conn.Open();
    }

    public void ExecuteConnection()
    {

        SqlCommand Command = new SqlCommand("Insert into SignUp" + "(FirstName, LastName, Password, Email)values(@FirsName, @LastName, #Password, @Email)",conn);

        Command.Parameters.AddWithValue("@FirstName", FirstName.Text);
        Command.Parameters.AddWithValue("@LastName", LastName.Text);
        Command.Parameters.AddWithValue("@Password", Email.Text);
        Command.Parameters.AddWithValue("@Email", Password.Text);
        Command.ExecuteNonQuery();

        conn.Close();
    }

    protected void Button1_Click(object sender, EventArgs e)
    {
        ExecuteConnection();
    }
}

我在数据库中有一个表。 FirstName,LastName,密码,电子邮件等 此外,我的数据库的密码和用户名应该是正确的,因为当我测试连接它工作得很好

感谢您的帮助,我将不胜感激。

2 个答案:

答案 0 :(得分:1)

没有更多细节,我唯一要做的就是“用户登录失败”这一短语。因此,您需要考虑代码运行的过程,就像它尝试建立此连接时一样。鉴于这似乎是一个网页,我会猜测它是由IIS进程运行(检查是哪个用户)。我无法判断该进程是否能够“看到”您在连接字符串中给出的IP地址;我的猜测是它不能。我猜你正在使用Microsoft SQL服务器,因为你已经使用了标签。

出现此错误的原因有很多:进程看到网络的能力(例如本地服务无法看到网络),防火墙(阻止SQL服务器使用的端口),SQL的配置服务器允许远程连接(我认为默认情况下它'关闭'),允许混合模式身份验证(再次,根据版本,我认为这是默认关闭),也许数据库名称是错误的,也许用户没有' t存在于服务器上,或者没有该数据库的权限,或者可能(一次)错误消息实际上是正确的,并且连接字符串中给出的密码不正确。 (这不是一个完整的清单。)

如果我在IIS下运行是正确的,我建议在控制台应用程序中输入完全相同的代码,以协助诊断。当您运行控制台应用程序时,它将以您的权限运行,具有访问网络的权限,而不是IIS用户。如果这不起作用,那么(如果可以的话)在与SQL服务器相同的机器上运行控制台应用程序:如果这样做,那么你知道它只是一个网络/连接/配置问题。

除了上面提到的关于SQL注入的担忧(感谢解决这些问题),我建议你也阅读IDisposable的内容,以及如何使用“using”语句(不是一个出现在顶部的命名空间)。连接和命令都是一次性的,因此最好在使用块中使用。

希望这会有所帮助。如果没有,那么你需要提供更多信息。

答案 1 :(得分:0)

这是我使用的连接字符串格式,它是用VS 2010编码的,现在已经生产了8年。几年前首次使用VS 2008升级到VS 2010进行编码。

connectionString="server=192.168.1.1;database=MyDb;uid=sa; pwd=Password" providerName="System.Data.SqlClient"

希望这有帮助。

R / 普雷斯科特......