2013-12-11 40 views
0

剛剛被拋棄在我身上,所以第一個答案是「不,我無法改變它」。在C#項目中通過SQL引用一個INTERNAL表

SQL Server中有一個表格,內容爲INTERNAL \ N55XX1。我正在嘗試編寫一些C#代碼隱藏功能,以便將內容提取出來並放入下拉列表中。我以前從來沒有做過任何不是「dbo」的事情,而且它不工作。我所得到的是:

private void LoadFilterNames() 
    { 
     using (SqlConnection con = new SqlConnection(str)) 
     { 

      try 
      { 
       // string cboActive = Convert.ToString(cboFilterOption.SelectedValue); 
       string strSQL = "SELECT Sample_Title FROM tbl_Sample_Title ORDER BY Sample_Title;"; 

       SqlDataAdapter adapter = new SqlDataAdapter(strSQL, con); 
       DataSet SmpTitle = new DataSet(); 
       adapter.Fill(SmpTitle); 

       cboSmpTitle.DataSource = SmpTitle; 
       cboSmpTitle.DataTextField = "Sample_Title"; 
       cboSmpTitle.DataValueField = "Sample_Title"; 
       cboSmpTitle.DataBind(); 


      } 
      catch (Exception ex) 
      { 
       // Handle the error 
       Console.WriteLine("Making Call to " + ex + ""); 

      } 
      con.Close(); 

     } 

     // Insert a blank row into the DropDownLists so there is no default name 
     // DropDownList_Reporting_RunForDaily.Items.Insert(0, new ListItem("", "")); 
     // cboFilterOption.Items.Insert(0, new ListItem("", "")); 

    } 

我也試着寫SQL字符串:

"SELECT Sample_Title FROM INTERNAL\N55XX1.tbl_Sample_Title ORDER BY Sample_Title;" 

而是N後的反斜槓變得強調,當你將鼠標懸停在它有一個消息說,「無法識別的轉義序列」。

+0

我得到相同的錯誤。 –

+0

你也確定'INTERNAL \ N55XX1'實際上是模式嗎?它絕對不是'INTERNAL'服務器上運行的'N55XX1'命名實例嗎? –

+0

稍微偏離主題。但你根本沒有層次。 SqlConnection不應該顯示在與組合框相同的代碼中.....即使您正在爲您的孩子足球隊編寫代碼。恕我直言。一些基本的分層不是太難。 – granadaCoder

回答

4

在查詢中使用FROM [INTERNAL\N55XX1].tbl_Sample_Title,因爲這不是標準的TSQL標識符,必須進行分隔。

還將C#字符串字面值前綴@創建爲verbatim string literal並避免「無法識別的轉義序列」問題。

string strSQL = 
@"SELECT Sample_Title FROM [INTERNAL\N55XX1].tbl_Sample_Title ORDER BY Sample_Title;"; 
+0

你剛剛救了我的命。或者至少我的理智。 –

相關問題