TCP / IP连接

时间:2011-01-20 17:10:15

标签: c# sql-server odbc

我一直在其他网站上尝试和搜索数千次,但从未找到过要使用的示例或简单代码。

我创建了一个使用ODBC连接的应用程序C#,我还安装并配置了MS SQL以启用远程数据库信息共享。我想让我的数据库可供所有人使用我使用连接创建的应用程序。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;

namespace CaseMatter
{

public partial class mainLog : Form
{
    string userID, userName, userAddress, userFName, userLastName, userCity, userPassword, userTele;
    public mainLog()
    {
        InitializeComponent();
        this.Size = new Size(442, 162);

    }


    private void Submitbtn_Click(object sender, EventArgs e)
    {

            string ConnectionString =
              "Data Source=xx.xx.xx.xx,1433;Initial Catalog=master;Integrated Security=SSPI;";

            var conn = new SqlConnection(ConnectionString);
            conn.Open();

            var strSQLCommand = "SELECT Name FROM example WHERE id='1'";
            var command = new SqlCommand(strSQLCommand, conn);
            var reader = command.ExecuteReader();

            while (reader.Read())
            {
                passwordBox.Text = reader.GetString(0);
            }

            reader.Close();
            conn.Close();

    }
}

}

我刚刚编辑了代码并试了一下,我添加了一个try catch来处理sql异常,但是当我点击提交按钮时它仍然会冻结。

希望有人知道这一点。 错误: “建立与SQL Server的连接时发生与网络相关或特定于实例的错误。未找到服务器或无法访问服务器。验证实例名称是否正确以及SQL Server是否配置为允许远程连接。(提供程序: TCP提供程序,错误:0 - 无法建立连接,因为目标计算机主动拒绝它。)“

4 个答案:

答案 0 :(得分:2)

我怀疑这里有四件事之一。

  1. SQL Server配置错误,并且没有响应tcp连接。解决问题的最简单方法是使用SQL Management Studio进行连接。如果您无法以这种方式连接,那么您将不得不查看sql server服务设置。另外,请确保SQL Browser服务正在服务器上运行。

  2. SQL Server配置为使用与您尝试的TCP端口不同的TCP端口。从连接字符串中删除“,1433”,然后重试。 SQL Browser应该回复sql server正在侦听的实际端口。

  3. SQL Server有一个阻止远程连接的防火墙。暂时关闭防火墙,看看是否可以连接。如果可以,请正确配置防火墙并重新打开。

  4. 您的本地邮箱有某种类型的防火墙阻止该端口上的传出连接。尝试关闭你的,看看这是否有帮助。如果是这样,请正确配置并重新打开。


  5. 如果这是一个没有人远程连接的全新sql服务器,那么它很可能完全在SQL服务器或Windows配置的配置中。

答案 1 :(得分:1)

在您的示例中,您没有传递用户ID和密码。这只是因为你不想包含你的凭据吗?我认为不是你正确的XXX你的IP地址。我首先提供可以访问您的数据库的SQL服务器帐户的凭据。

答案 2 :(得分:0)

我注意到您使用的是不是ODBC连接对象的SqlConnection。使用SqlConnection,您实际上是通过ADO.NET连接的。可以在以下站点上找到SqlConnection(ODBC和ADO.NET)的连接字符串语法:

http://connectionstrings.com

顺便说一句,如果你连接到SQL 2005,连接字符串将如下所示:

using System.Data.SqlClient;

// trusted connection (SQL configured to use your windows ID)
string ConnectionString = 
  "Data Source=xxxxxxx;Initial Catalog=xxxxxx;Integrated Security=SSPI;"

// sql authentication (SQL manages its own users/pwds)
//string ConnectionString = 
  //"Data Source=myServerAddress;Initial Catalog=myDataBase;User Id=myUsername;Password=myPassword;"

var conn = new SqlConnection(ConnectionString);
conn.Open();

var strSQLCommand = "SELECT Name from [example_autoincrement] where id='1'";     
var command = new SqlCommand(strSQLCommand, conn);
var reader = command.ExecuteReader();

while (reader.Read())
{   
    passwordBox.Text = reader.GetString(0);
}

reader.Close();
conn.Close();

答案 3 :(得分:0)

好的,这是一个奇怪的检查,但只是确保客户端和服务器上的时间和日期是准确的。 SSPI要求每个

之间的最大间隔为5分钟