调试 C# 中的 VS 与 SQL 服务器之间的连接

Debugging a connection between VS in C# and SQL Server

下面是我这两天一直在研究的一段代码:

SqlConnection connectMOBILE = new SqlConnection("Server=OMADB03;Database=MOBILE;Trusted_Connection=True;");
string masterErrorString;

connectMOBILE.Open();

string stringIncorrectPassword = string.Concat(
            "SELECT SERVICE_ID, RESPONSE_DATA, DATE_ENTERED",
            "FROM WS_TRANSACTION",
            "WHERE SERVICE_ID = 'GETUSERTOKENLOGIN'");

SqlCommand commandIncorrectPassword = connectMOBILE.CreateCommand();
commandIncorrectPassword.CommandText = stringIncorrectPassword;
SqlDataReader reader = commandIncorrectPassword.ExecuteReader();

while (reader.Read())
     {
         masterErrorString = reader.ToString();
         BOAssistant.WriteLine(masterErrorString);
     }

此代码使用名为 BOAssistant 的 class,其工作方式与 Console.WriteLine 类似,但会写入日志文件。

这段代码应该做的是从我的查询中收集结果并将它们放在我的日志文件中,但是当我 运行 这个程序时,我收到以下错误消息:

System.Data.SqlClient.SqlException (0x80131904): Incorrect syntax near 'SERVICE_ID'.

还有大约 20 多行,但这是最突出的一行。这是我第一次编写连接 Visual Studio 和 SQL 服务器的程序,所以我想知道代码中是否有问题,或者我的代码中是否遗漏了一些东西来建立更牢固的连接?现在代码中的内容是我在互联网上进行的研究的结果。此外,当我 运行 SQL 服务器中的查询时,它可以正常工作,所以我知道查询的语法是正确的。

当您组合字符串时,您会得到不正确的 SQL,因为缺少空格。 string.Concat 为您创建此查询:

SELECT SERVICE_ID, RESPONSE_DATA, DATE_ENTEREDFROM WS_TRANSACTIONWHERE SERVICE_ID = 'GETUSERTOKENLOGIN'

显然缺少一些空格。

相反,使用空格更新您的查询:

string stringIncorrectPassword = string.Concat(
        "SELECT SERVICE_ID, RESPONSE_DATA, DATE_ENTERED ",    // added space
        "FROM WS_TRANSACTION ",    // added space
        "WHERE SERVICE_ID = 'GETUSERTOKENLOGIN'");