我一直在其他网站上尝试和搜索数千次,但从未找到过要使用的示例或简单代码。
我创建了一个使用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 - 无法建立连接,因为目标计算机主动拒绝它。)“
答案 0 :(得分:2)
我怀疑这里有四件事之一。
SQL Server配置错误,并且没有响应tcp连接。解决问题的最简单方法是使用SQL Management Studio进行连接。如果您无法以这种方式连接,那么您将不得不查看sql server服务设置。另外,请确保SQL Browser服务正在服务器上运行。
SQL Server配置为使用与您尝试的TCP端口不同的TCP端口。从连接字符串中删除“,1433”,然后重试。 SQL Browser应该回复sql server正在侦听的实际端口。
SQL Server有一个阻止远程连接的防火墙。暂时关闭防火墙,看看是否可以连接。如果可以,请正确配置防火墙并重新打开。
您的本地邮箱有某种类型的防火墙阻止该端口上的传出连接。尝试关闭你的,看看这是否有帮助。如果是这样,请正确配置并重新打开。
如果这是一个没有人远程连接的全新sql服务器,那么它很可能完全在SQL服务器或Windows配置的配置中。
答案 1 :(得分:1)
在您的示例中,您没有传递用户ID和密码。这只是因为你不想包含你的凭据吗?我认为不是你正确的XXX你的IP地址。我首先提供可以访问您的数据库的SQL服务器帐户的凭据。
答案 2 :(得分:0)
我注意到您使用的是不是ODBC连接对象的SqlConnection
。使用SqlConnection
,您实际上是通过ADO.NET连接的。可以在以下站点上找到SqlConnection
(ODBC和ADO.NET)的连接字符串语法:
顺便说一句,如果你连接到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分钟