[英]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.