2015-07-20 72 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'");