C# 从C连接到SQL Server Express#

C# 从C连接到SQL Server Express#,c#,sql,visual-studio,sql-server-express,C#,Sql,Visual Studio,Sql Server Express,我正试图从C#连接到SQL Server数据库,但仍被异常抛出: 尝试打开()连接时,System.Data.SqlClient.SqlException 我创建了一个简单的web表单,有两个文本框:用户名文本框和密码文本框,以及一个“登录”按钮 目前,仅出于测试目的,我尝试在单击登录按钮时,将值插入用户表中,这就是我目前所做的: using System; using System.Collections.Generic; using System.Data.SqlClient; using

我正试图从C#连接到SQL Server数据库,但仍被异常抛出:

尝试打开()连接时,System.Data.SqlClient.SqlException

我创建了一个简单的web表单,有两个文本框:用户名文本框和密码文本框,以及一个“登录”按钮

目前,仅出于测试目的,我尝试在单击
登录
按钮时,将值插入
用户
表中,这就是我目前所做的:

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

public partial class _default : System.Web.UI.Page
{
    protected void signInButton_Click(object sender, EventArgs e)
    {
        string connection_str="Data Source=.\\SQLEXPRESS;"+
        "AttachDbFilename=|DataDirectory|\\project.mdf;"+
        "Integrated Security=True;"+
        "User Instance=True";

        SqlConnection connection = new SqlConnection(connection_str);
        connection.Open();

        SqlCommand command = new SqlCommand();
        command.Connection = connection;
        command.CommandText="INSERT INTO users VALUES ('"+userNameTextBox.Text+"','"+passwordTextBox.Text+"');";
        command.ExecuteNonQuery();
        connection.Close();
    }
}
如上所述,这在
connection.Open()处失败

project.mdf
文件位于VS project文件夹中的“App_Data”文件夹中

有人知道什么会导致
Open()
失败吗

如果需要,我还可以提供“例外信息”

谢谢

顺便说一句,什么时候应该建立连接?在“登录按钮处理程序”或“页面加载”处理程序中

编辑

因此,例外情况是:

Message=无法打开用户默认数据库。登录失败。 用户“J***-PC\J***”登录失败

这意味着用户无法访问默认数据库,通常是
master

更改用户,使其可以访问默认数据库,或者更好地将默认数据库指向另一个数据库

使用此sql进行以下操作:

alter login [username] with default_database = database_that_user_can_access
或通过添加以下内容更改连接字符串:

Database=database_that_user_can_access
试试这个:

  AttachDbFilename=~\..\ProjectName\App_Data\project.mdf

失败时的错误消息是什么?“keep get Brown by a exception”-异常到底是什么样子的?请显示包含消息的完整堆栈跟踪。顺便说一句:不要使用用户输入来构建带有字符串连接的sql查询。您的代码易受sql注入攻击。您应该使用参数化sql查询,如SqlCommand.Parameters property.Hi上的msdn库页面所示。那么到底应该改变什么呢?如何授予用户访问默认数据库的权限?更改连接字符串?这应该在哪里:
alter login[username],使用默认的\u database=database\u来输入\u user\u access
?您必须更改您的数据库(授权permission,使用我给出的语句)或连接字符串。我会更新答案。@so.very.treat:运气好吗?需要更多帮助吗?不需要:(它一直给我这个恼人的例外,我试图通过“SQL数据管理器”直接连接到SQL,但也失败了,出现了一些奇怪的非信息错误,因此我决定删除SQL server和任何与SQL server远程相关的软件,并重新安装这个该死的东西。如果有帮助,我会发布……非常感谢您的帮助/s。)使用的yntax是正确的,并且是首选标准。
  AttachDbFilename=~\..\ProjectName\App_Data\project.mdf