2012-06-15 78 views
-1

雙引號不起作用,因此在執行SQL語句直接執行時,必須鍵入'some value'來實際進行變量比較。在ASP.Net中執行SQL語句的問題C#代碼

問題是,現在,當我執行從ASP.NET代碼我不SQL語句似乎得到任何讀數 ...我也不得到錯誤:S ....

I HAVE嘗試自行執行SQL語句,並且確實有效。

public static string testExi(string localIncidentNum) 
     { 

      try 
      { 
       string query = "SELECT TOP 1 UniqueColID From DBNAME WHERE LocalIncidentNum = @localIncidentNum ORDER BY [version] DESC"; 

       DataTable dt = new DataTable(); 
       SqlConnection connection = new SqlConnection(connectionStr); 

       SqlCommand command = new SqlCommand(query, connection); 
       command.Parameters.AddWithValue("@localIncidentNum", localIncidentNum); 

       connection.Open(); 
       SqlDataAdapter adp = new SqlDataAdapter(command); 
       adp.Fill(dt); 
       connection.Close(); 
       command.Dispose(); 
       connection.Dispose(); 

       if (dt.Rows.Count != 0) 
       { 
        string UniqueColID = dt.Rows[0]["UniqueColID"].ToString(); 
        return UniqueColID; 
       } 
       else 
       { 
        return null; 
       } 


       string some = dt.Rows[0]["UniqueColID"].ToString(); 
       return some; 
      } 


      catch (Exception err) 
      { 
       Global.tmpmsg = " Updating follow up was not successful. " + err.ToString(); 
       return null; 
      } 


     } 

如果我硬編碼在它的工作原理,但如果我硬編碼在.addwithvalue事件價值,這是行不通的SELECT語句的事件值。

command.Parameters.AddWithValue("@localIncidentNum", "12-023696"); 
+1

我會建議你使用'using'您SqlConnection對象。 http://msdn.microsoft.com/en-us/library/yh598w02(v=vs.100).aspx – Stephen

回答

-1

我解決它。問題是,我(因爲某些原因)需要從C調文件執行時,它把在SQL代碼表名前表的完整路徑:

SELECT TOP 2 [DB name].[dbo]. [table name] 
+0

你不應該將自己的答案標記爲最佳答案,因爲你完全錯過了答案(你找到了解決辦法,而不是答案)。您必須完全限定表名的原因是因爲您沒有在連接字符串中正確指定數據庫/目錄。您已連接到SQL實例,但未連接到實際的數據庫。 – slugster

5

仔細檢查你的SQL語句:

SELECT TOP 1 UniqueColID From WHERE LocalIncidentNum = @localIncidentNum ORDER BY [version] DESC 

From Where

編輯 爲了遵守您的更改,最好在描述您的問題時始終儘可能準確。拋出類似sql語句的表名是非常具有誤導性的。

+0

對不起,這是在我的實際代碼中存在,但由於機密性,我不得不刪除的東西和表名I在粘貼代碼時意外刪除了這個代碼,但這不是問題 – Bulvak

+1

什麼數據類型是LocalIncidentNum? – Jeremy

+0

varchar ...................... – Bulvak

0

也許給你的命令參數添加一個數據類型。我相信你沒有得到任何東西,因爲它可能會在命令中超時。

command.Parameters.AddWithValue("@localIncidentNum", localIncidentNum); 
command.Parameters[0].SqlDbType = SqlDbType.VarChar; 

我在這裏找到了類似的問題,也採用的Varchar:

AddWithValue without DBType causing queries to run slowly