【问题标题】:How to fix network related errors in visual studio when i tried to connect to database当我尝试连接到数据库时如何修复 Visual Studio 中与网络相关的错误
【发布时间】:2019-09-24 18:19:02
【问题描述】:

当我尝试在 Visual Studio 2010 中运行此程序时,它显示错误。像这样“建立与 SQL Server 的连接时发生与网络相关或特定于实例的错误。找不到或无法访问服务器。验证实例名称是否正确以及 SQL Server 是否配置为允许远程连接。( provider:Named pipelines Provider,error:40-could not open a connection to SQL Server)"

public partial class tcregistration : Form
    {
        SqlConnection conn = new SqlConnection("Data Source=./SQLEXPRESS;AttachDbFilename=C:/Users/dce 3/documents/visual studio 2010/Projects/TC_Maker/TC_Maker/TC_REG.mdf;Integrated Security=True;User Instance=True");
        public tcregistration()
        {
            InitializeComponent();
        }

        private void insert_Click(object sender, EventArgs e)
        {
            string gender = string.Empty;
            if (rbmale.Checked)
                {
                    gender = "M";
                }
            else if (rbfemale.Checked)
                {
                    gender = "F";
                }
            string tcrecieved = string.Empty;
            if (rbyes.Checked)
                {
                    tcrecieved = "Y";
                }
            else if (rbno.Checked)
                {
                    tcrecieved = "N";
                }
            try
            {
                if (conn.State == ConnectionState.Closed) 
                    conn.Open();
                    SqlCommand cmd = new SqlCommand ("TCAddorUpdate",conn);
                    cmd.CommandType=CommandType.StoredProcedure;
                    cmd.Parameters.AddWithValue("@mode","Add");
                    cmd.Parameters.AddWithValue("@tcnumber",txttcno.Text.Trim());
                    cmd.Parameters.AddWithValue("@name",txtname.Text.Trim());
                    cmd.Parameters.AddWithValue("@dob",dtpdob);
                    cmd.Parameters.AddWithValue("@religion",txtrelig.Text.Trim());
                    cmd.Parameters.AddWithValue("@caste",txtcaste.Text.Trim());
                    cmd.Parameters.AddWithValue("@sex",gender);
                    cmd.Parameters.AddWithValue("@doa",dtpdoa);
                    cmd.Parameters.AddWithValue("@regno",txtregno.Text.Trim());
                    cmd.Parameters.AddWithValue("@dor",dtpdor);
                    cmd.Parameters.AddWithValue("@dept",txtdept.Text.Trim());
                    cmd.Parameters.AddWithValue("@sem", combosem);
                    cmd.Parameters.AddWithValue("@ifqulify",txtqualified.Text.Trim());
                    cmd.Parameters.AddWithValue("@conduct",txtconduct.Text.Trim());
                    cmd.Parameters.AddWithValue("@applieddate",dtpdoapp);
                    cmd.Parameters.AddWithValue("@ifrecieved",tcrecieved);
                    cmd.Parameters.AddWithValue("@receiveddate",dtpdor);
                cmd.ExecuteNonQuery();
                MessageBox.Show("Data Inserted Successfully");
            }
            catch(Exception ex)
            {
                MessageBox.Show(ex.Message,"Error Message");
            }
            finally
            {
                conn.Close();
            }
        }

    }
}

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

【问题讨论】:

  • 已经有很多个重复的问题了。确保服务器名称正确且服务器正在运行。
  • 那个连接字符串是错误的。命名实例使用反斜杠,而不是正斜杠。 . 是命名管道名称,仅在 Windows 上有效。您应该改用localhost,例如Data Source=localhost\\SQLEXPRESS
  • 您的连接字符串错误。使用 SQL Server Management Studio 并检查登录窗口。确保它显示 Windows 凭据,并且 SOURCE 与服务器名称和实例匹配(源 = 服务器名称/实例)。如果服务器在同一台机器上,则服务器可以是一个句点。然后使用 SSMS 检查数据库是否已连接到服务器。当附加到服务器时,您不能使用 AttachDbFilename,因为它已经附加并且数据库拥有 mdf 文件。 Integrated Security=True 表示正在使用的窗口凭据应与 SSMS 登录窗口匹配。
  • 既然你提到了VS 2010,你的目标不是Linux,所以文件名也需要使用反斜杠
  • 我无法解决这个问题......

标签: c#


【解决方案1】:

这不是编程问题,而是网络/连接字符串问题。

连接字符串是他们自己的专业领域,超出了普通程序员的知识范围。幸运的是有一个页面:https://www.connectionstrings.com/sql-server/

事实证明,即使在附加时,您也必须提供数据库名称:“为什么需要 Database 参数?如果指定的数据库已经附加,SQL Server 不会重新附加它。它使用附加的数据库作为默认值用于连接。”

正如其他人提到的,你也得到了错误的斜线。

有点跑题了,但异常处理是我最讨厌的。你的有一些严重的错误。就像捕获异常并且只暴露消息一样。那是2个大罪。你有两篇关于我经常链接的主题的文章:

【讨论】:

    猜你喜欢
    • 2014-06-17
    • 2018-08-11
    • 1970-01-01
    • 1970-01-01
    • 2021-10-20
    • 2016-05-29
    • 2011-07-12
    • 2021-09-12
    • 1970-01-01
    相关资源
    最近更新 更多