C # запрос ничего не возвращает - PullRequest
1 голос
/ 04 ноября 2010

вот мой запрос:

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, он возвращает много строк

есть ли проблема именно с синтаксисом запроса для c #?

обратите внимание, чтоесли я упросту запрос как select * from table, проблема не будет

Ответы [ 5 ]

4 голосов
/ 04 ноября 2010

Можете ли вы попробовать использовать SqlCommand вместо OleDbCommand ?

Согласно MSDN это: Represents a Transact-SQL statement or stored procedure to execute against a SQL Server database.

Так что если вы действительно используетеSQL Server 2008 вы, вероятно, должны использовать это.По какой причине вы не?

2 голосов
/ 04 ноября 2010

Лично я бы запустил профилировщик запросов, чтобы увидеть, какой запрос (если есть) выполняется, а затем перейти оттуда.

2 голосов
/ 04 ноября 2010

Как вы настраиваете строку mySelectQuery?Может ли это быть проблемой с побегом?

Если вы этого еще не сделали,

string mySelectQuery = @"query text here";
1 голос
/ 04 ноября 2010

Редактировать - не берите в голову, просто прочитайте комментарий, что ваша дата находится в поле varchar. Оставим это здесь, так как это может быть полезной информацией.

Попробуйте это:

reporttime like 'Oct%2010%'

У меня есть тестовая таблица, и когда я запрашиваю ее, используя

where LastModified like '11/%/2010%'

строки не возвращаются, хотя все строки таблицы имеют даты в ноябре 2010 года. Когда я выполняю один и тот же запрос, используя like 'Nov%2010%', он возвращает все строки.

Подробности можно найти здесь :

Предложение LIKE также можно использовать для поиска определенных дат. Вы должны помнить, что предложение LIKE используется для поиска строк символов. По этой причине значение, которое вы ищете, должно быть представлено в формате буквенной даты. Правильный формат: MON ДД ГГГГ ЧЧ: ММ: СС.МММАМ, где MON - сокращение месяца, ДД - день, ГГГГ - год, ЧЧ - часы, ММ - минуты, СС - секунды, МММ - миллисекунды, а AM обозначает либо AM, либо PM.

1 голос
/ 04 ноября 2010

Вы уверены, что подключаетесь к той же базе данных в своем коде?

На боковой ноте вам нужен внутренний выбор? Не могли бы вы написать этот запрос следующим образом.

  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%'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...