c#查询没有返回任何内容

时间:2010-11-03 22:13:08

标签: c# .net sql sql-server-2008 select

这是我的查询:

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之类的查询,则没有问题

5 个答案:

答案 0 :(得分:4)

您可以尝试使用SqlCommand代替OleDbCommand吗?

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

因此,如果您确实在使用SQL Server 2008,那么您应该使用它。你不是的任何理由?

答案 1 :(得分:2)

你是如何设置mySelectQuery字符串的? 这可能是转义字符的问题吗?

如果你还没有这样做,

string mySelectQuery = @"query text here";

答案 2 :(得分:2)

就个人而言,我会运行查询分析器以查看正在运行的查询(如果有),然后从那里开始。

答案 3 :(得分:1)

您确定要连接到代码中的同一个数据库吗?

在旁注上你需要内部选择吗?你不能按如下方式写这个查询。

  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%'

答案 4 :(得分:1)

编辑 - 没关系,只需阅读您的日期在varchar字段中的注释。将此留在此处,因为它可能仍然是有用的信息。

试试这个:

reporttime like 'Oct%2010%'

我在这里有一个测试表,当我使用

查询它时
where LastModified like '11/%/2010%'

虽然表中的所有行都是2010年11月的日期,但不会返回任何行。当我使用like 'Nov%2010%'运行相同的查询时,它会返回所有行。

可以找到详细信息here

  

LIKE子句也可用于搜索特定日期。您需要记住,LIKE子句用于搜索字符串。因此,您要搜索的值需要以字母日期的格式表示。使用的正确格式是:MON DD YYYY HH:MM:SS.MMMAM,其中MON是月缩写,DD是日,YYYY是年,HH是小时,MM是分钟,SS是秒,MMM是毫秒,AM指定AM或PM。