2015-07-20 42 views
1

下面VS之间的连接是一段代码,我一直工作在过去几天:调试在C#和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类,就像Console.WriteLine而是写入日志文件。

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

System.Data.SqlClient的。 SqlException(0x80131904):“SERVICE_ID”附近的语法错误。

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

回答

4

当你组合你的字符串时,你会得到不正确的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'");