错误:System.Data.dll中发生未处理的“System.Data.SqlClient.SqlException”类型异常

时间:2015-07-30 15:13:11

标签: c# sql-server visual-studio login sqlconnection

  

System.Data.dll中出现未处理的“System.Data.SqlClient.SqlException”类型异常

     

其他信息:建立与SQL Server的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确,以及SQL Server是否配置为允许远程连接。 (提供者:命名管道提供程序,错误:40 - 无法打开与SQL Server的连接)

我使用了这些代码:

public partial class Form1 : Form
{
    SqlConnection con = new SqlConnection();
    public Form1()
    {
        SqlConnection con = new SqlConnection();
        con.ConnectionString = "Data Source=SQLEXPRESS;Initial Catalog=StudentInformation;Integrated Security=True";

        InitializeComponent();
    }

    private void Form1_Load(object sender, EventArgs e)
    {
        // TODO: This line of code loads data into the 'sTUDENTDataSet.login' table. You can move, or remove it, as needed.  
        //this.loginTableAdapter.Fill(this.sTUDENTDataSet.login);  
        SqlConnection con = new SqlConnection("Data Source=SQLEXPRESS;Initial Catalog=StudentInformation;Integrated Security=True");
        con.Open();

        {
        }
    }

    private void btnLogin_Click_1(object sender, EventArgs e)
    {
        SqlConnection con = new SqlConnection();
        con.ConnectionString = "Data Source=SQLEXPRESS;Initial Catalog=StudentInformation;Integrated Security=True";
        con.Open();
        string UserId = txtUsername.Text;
        string UserPass = txtPassword.Text;
        SqlCommand cmd = new SqlCommand("Select UserId,UserPass from Login where UserId='" + txtUsername.Text + "'and UserPass='" + txtPassword.Text + "'", con);
        SqlDataAdapter da = new SqlDataAdapter(cmd);
        DataTable dt = new DataTable();
        da.Fill(dt);
        if (dt.Rows.Count > 0)
        {
            MessageBox.Show("Login sucess!");
            Form2 form = new Form2();
            form.Show();
        }
        else
        {
            MessageBox.Show("Invalid Login Information. Please check username and password");
        }
        con.Close();
    }

此处的错误是属于此处的con.Open();

SqlConnection con = new SqlConnection();
            con.ConnectionString = "Data Source=SQLEXPRESS;Initial Catalog=StudentInformation;Integrated Security=True";
            con.Open();

我尝试删除它,因为我不知道还有什么要做,第二个错误在da.Fill(dt);所以我想唯一应该解决的问题是con.Open();

我该怎么办?

2 个答案:

答案 0 :(得分:1)

错误在您的连接字符串中。

作为DataSource,您必须指定SERVER\INSTANCE; SQLEXPRESS通常是默认安装中的实例名称,因此请尝试:

con.ConnectionString = "Data Source=.\SQLEXPRESS;Initial Catalog=StudentInformation;Integrated Security=True";

.(LOCAL)LOCALHOSTYourMachineName都是等效的,将您自己的计算机称为服务器。如果您的数据库位于另一台PC上,则必须指定其名称。

答案 1 :(得分:0)

您的连接字符串看起来不完整。虽然它命名服务器(SQLEXPRESS),但它忽略了对哪个数据库的提及。

虽然它引用的是LocalDB,但是将下面的工作连接字符串与您的工作连接字符串进行比较会向您建议您需要添加的内容。

Data Source =(LocalDB)\ v11.0; AttachDbFilename =“$$ WorkingDirectory $$ \ RGUNC_Tag_Browser \ RGUNC_Tags.mdf”; Integrated Security = True

底线是错误消息告诉您它无法使用连接字符串中提供的信息找到您的数据库。