Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/75.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.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
Can';t使SQL Server连接为C#_C#_Sql_Sql Server - Fatal编程技术网

Can';t使SQL Server连接为C#

Can';t使SQL Server连接为C#,c#,sql,sql-server,C#,Sql,Sql Server,我正在尝试连接到本地计算机上的SQL Server,对其运行SQL命令并记录结果。代码始终无法连接到服务器 我不太明白我做错了什么。我搜索的所有内容要么不适用于此方法,要么似乎与我正在做的匹配。我认为代码中还有其他问题,但我甚至无法通过SQL连接来测试其余部分。这是我的密码: string svrConnection = "Server=.\\sqlexpress;Database="+db+";User ID=user;Password=password;"; SqlConnection c

我正在尝试连接到本地计算机上的SQL Server,对其运行SQL命令并记录结果。代码始终无法连接到服务器

我不太明白我做错了什么。我搜索的所有内容要么不适用于此方法,要么似乎与我正在做的匹配。我认为代码中还有其他问题,但我甚至无法通过SQL连接来测试其余部分。这是我的密码:

string svrConnection = "Server=.\\sqlexpress;Database="+db+";User ID=user;Password=password;";

SqlConnection con;
SqlCommand cmd;

Directory.CreateDirectory("C:\\"db"\\");
FileInfo file = new FileInfo("C:\\script.sql");

string PCS = file.OpenText().ReadToEnd();
con = new SqlConnection(svrConnection);

StreamWriter PCSLog = new StreamWriter(@"C:\\" + db + "\\Log" + db + ".txt");

try
{
    con.Open();
    cmd = new SqlCommand(PCS, con);
    cmd.ExecuteNonQuery();

    using (SqlDataReader pcsrdr = cmd.ExecuteReader())
        using (PCSLog)
        {
            while (pcsrdr.Read())
                PCSLog.WriteLine(pcsrdr[0].ToString() + pcsrdr[1].ToString() + ",");
        }

    PCSLog.Close();
    cmd.Dispose();
    con.Close();
}
catch (Exception ex)
{
    MessageBox.Show("Can not open connection !", ex.Message);
}

我认为问题在于你的连接字符串。试试这个:

string svrConnection = "Data Source=.\\SQLEXPRESS;Initial Catalog=" + db + ";User Id=user;Password=password;"
或使用windows凭据获取连接:

string svrConnection = "Data Source=.\\SQLEXPRESS;Initial Catalog=" + db + ";Trusted_Connection=True;"

此外,ExecuteOnQuery不会运行每个由GO分隔的命令。您需要将查询拆分为多个部分,并分别运行每个部分。

我认为问题在于您的连接字符串。试试这个:

string svrConnection = "Data Source=.\\SQLEXPRESS;Initial Catalog=" + db + ";User Id=user;Password=password;"
或使用windows凭据获取连接:

string svrConnection = "Data Source=.\\SQLEXPRESS;Initial Catalog=" + db + ";Trusted_Connection=True;"

此外,ExecuteOnQuery不会运行每个由GO分隔的命令。您需要将查询拆分为多个部分,并分别运行每个部分。

您的代码还存在其他问题:

  • 台词 cmd.Dispose(); con.Close(); 不保证在发生异常时执行

  • 处理完后,可以调用
    PCSLog.Close

我建议这是一个更好的选择(不管这里的其他评论如何)


您的代码还存在其他问题:

  • 台词 cmd.Dispose(); con.Close(); 不保证在发生异常时执行

  • 处理完后,可以调用
    PCSLog.Close

我建议这是一个更好的选择(不管这里的其他评论如何)


ex.Message告诉你什么?在“GO”附近有不正确的语法,我想如果它使用的是'ExecuteOnQuery();'它将正确读取GO命令。然后我认为您成功连接到数据库,并且您尝试执行的脚本有问题。不过,还有另一个问题-您调用
ExecuteNonQuery()
,然后调用
ExecuteReader
-这是不正确的-
ExecuteNonQuery()
用于不返回结果集的sql。仅供参考,您可能希望尝试使用而不是执行
”;Initial Catalog=“+db+”;“…”
它将自动执行正确的转义,以防用户执行一些愚蠢的操作,例如放置
。以类似的方式,您可以使用来可靠地构建您的
“C:\\”+db+“\\Log”+db+“.txt”
。例如,Message告诉您什么?如果使用“ExecuteOnQuery();”的话,“GO”附近的语法不正确它将正确读取GO命令。然后我认为您成功连接到数据库,并且您尝试执行的脚本有问题。不过,还有另一个问题-您调用
ExecuteNonQuery()
,然后调用
ExecuteReader
-这是不正确的-
ExecuteNonQuery()
用于不返回结果集的sql。仅供参考,您可能希望尝试使用而不是执行
”;Initial Catalog=“+db+”;“…”
它将自动执行正确的转义,以防用户执行一些愚蠢的操作,例如放置
。以类似的方式,您可以使用来可靠地构建您的
“C:\\”+db+“\\Log”+db+“.txt”
。不需要
PCSLog.Close()作为
使用(StreamWriter PCSLog=…
行的一部分处理。不需要
PCSLog.Close();
作为
使用的一部分处理(StreamWriter PCSLog=…
line。问题不在于连接字符串-而在于脚本-您的最后一条评论是答案问题不在于连接字符串-而在于脚本-您的最后一条评论是答案