簡體   English   中英

C#查詢未返回任何內容

[英]c# query is not returning anything

這是我的查詢:

select reporttime, datapath, finalconc, instrument from batchinfo 
    join qvalues on batchinfo.rowid=qvalues.rowid where qvalues.rowid 
    in (select rowid from batchinfo where instrument LIKE '%TF1%' and reporttime
    like '10/%/2010%') and compound='ETG' and  name='QC1'

我正在這樣運行:

    // Create a database connection object using the connection string    
    OleDbConnection myConnection = new OleDbConnection(myConnectionString);

    // Create a database command on the connection using query    
    OleDbCommand myCommand = new OleDbCommand(mySelectQuery, myConnection);

它不返回任何結果。

當我在sql server GUI中嘗試相同的查詢時,它返回很多行

c#查詢的語法是否存在問題?

請注意,如果我簡化查詢,例如select * from table ,則沒有問題

您可以嘗試使用SqlCommand代替OleDbCommand嗎?

根據MSDN,它: Represents a Transact-SQL statement or stored procedure to execute against a SQL Server database.

因此,如果您確實在使用SQL Server 2008,則應該使用它。 您不是什么原因?

您如何設置mySelectQuery字符串? 這可能是轉義字符有問題嗎?

如果您還沒有這樣做,

string mySelectQuery = @"query text here";

我個人將運行查詢事件探查器以查看正在運行的查詢(如果有),然后從那里開始。

您確定要在代碼中連接到相同的數據庫嗎?

另外,您需要內部選擇嗎? 您不能按以下方式編寫此查詢。

select reporttime,
         datapath,
         finalconc, 
         instrument 
    from batchinfo  
           join qvalues on batchinfo.rowid = qvalues.rowid
   where compound = 'ETG' 
     and name = 'QC1'
     and batchinfo.instrument like '%TF1%'
     and batchinfo.reporttime like '10/%/2010%'

編輯-沒關系,只需閱讀一下您的日期在varchar字段中的注釋即可。 將其保留在此處,因為它可能仍然是有用的信息。

嘗試這個:

reporttime like 'Oct%2010%'

我在這里有一個測試表,當我使用它查詢時

where LastModified like '11/%/2010%'

盡管表中的所有行都有日期都是2010年11月,但沒有返回行。當我使用like 'Nov%2010%'運行相同的查詢時,它將返回所有行。

詳細信息可以在這里找到:

LIKE子句也可以用於搜索特定日期。 您需要記住,LIKE子句用於搜索字符串。 因此,您要搜索的值將需要以字母日期格式表示。 使用的正確格式是:MON DD YYYY HH:MM:SS.MMMAM,其中MON是月份的縮寫,DD是日期,YYYY是年份,HH是小時,MM是分鍾,SS是秒,而MMM是毫秒,AM表示AM或PM。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM