Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在C#中以编程方式连接到SQL Server?_C#_Sql_Visual Studio_Connection_Lan - Fatal编程技术网

如何在C#中以编程方式连接到SQL Server?

如何在C#中以编程方式连接到SQL Server?,c#,sql,visual-studio,connection,lan,C#,Sql,Visual Studio,Connection,Lan,我开发了一个程序(C#),它使用以下代码创建SQL数据库: string SQLCreation = "IF NOT EXISTS (SELECT * FROM master..sysdatabases WHERE Name = 'x') CREATE DATABASE x"; SqlConnection PublicSQLDBCreationConnection = new SqlConnection(connectionString); SqlCommand PublicSQLDBCreat

我开发了一个程序(C#),它使用以下代码创建SQL数据库:

string SQLCreation = "IF NOT EXISTS (SELECT * FROM master..sysdatabases WHERE Name = 'x') CREATE DATABASE x";
SqlConnection PublicSQLDBCreationConnection = new SqlConnection(connectionString);
SqlCommand PublicSQLDBCreation = new SqlCommand(SQLCreation, PublicSQLDBCreationConnection);

try
{
   PublicSQLDBCreationConnection.Open();
   PublicSQLDBCreation.ExecuteNonQuery();
   PublicSQLDBCreationConnection.Close();
}
//'then creates a table and so on
现在我想有一个客户端应用程序连接到这个数据库(通过局域网),而不使用IP或计算机名。这怎么可能?在不提及IP Adr的情况下,是否可以这样做并拥有一个数据集。还是计算机名


别担心,伙计们,我简化了我的代码只是为了你们的观点,我已经确保SQL注入或其他尝试不会发生。 另外,我必须指出,我之所以不提及servername或IP,是因为我想在许多网络上大规模部署我的应用程序

您可以使用这些网络获取所有可见和可浏览的Sql服务器的列表。这不是一种好技术,因为您可能会得到一个您无权在其上创建数据库的实例,但您仍然可以尝试使用它

var enumerator = SqlDataSourceEnumerator.Instance;
foreach (DataRow row in enumerator.GetDataSources().Rows)
{
    var serverName = row["ServerName"];
    var instance = row["InstanceName"];

    // build a connection string and try to connect to it
}

你如何告诉它服务器在哪里?“在第一个路由器处左转,然后连接到右侧的第三个CAT-5插孔?”没有IP或主机名不连接是什么意思?好的,您必须将其中一个作为连接字符串的一部分。如果不指定数据库所在的计算机,则无法直接连接到数据库。根据您的需求,您可以使用服务层或其他东西进行间接寻址;您不能指定IP或计算机名的要求/原因是什么?我发现您编写代码来创建数据库,却不了解如何连接SQL Server,这很可怕。此外,看起来您将面临SQL注入攻击,其帐户可能具有更高的权限。当然-但最终,您也使用了服务器名称-您不必提前知道,您可以从列表中选择它-但您仍然使用服务器名称连接到itI-know,但是用户不知道服务器名,所以我认为这可能是BShakiba的要求。