2011-11-13 94 views
0

我正在使用sqlite精简版,我使用linqdpad做了一些测试,工作正常。但是当我转到C#代码时,它不起作用。我试图从数据库中获取领域与下面的代码:简单的SQLite查询不起作用

using System; 
using System.Data.SqlServerCe; 

namespace ConsoleApplication1 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      var conStr = @"data source=C:\path\db.sdf;password=..."; 
      var con = new SqlCeConnection(conStr); 
      con.Open(); 

      var cmd = new SqlCeCommand("select * from quest", con); 
      SqlCeDataReader result = cmd.ExecuteReader(); 
      Console.Write(result.Read()); 
      Console.ReadLine(); 
      con.Close(); 
     } 
    } 
} 

result.Read()回报false。仿佛没有田野。我如何解决它?

使用linqpad我可以看到:

enter image description here

查询:

select * from quest; 

UPDATE 当数据库(。自卫队)使用密码的问题发生。

+0

希望您正在关闭此代码下的连接。考虑为此使用'using'。你可以请张贴你用来给你发布结果的linqpad查询。 –

+0

@AdamWenger:添加完整的代码。和linqpad查询/输出。 –

回答

0

在查询结尾处检查分号,可以删除它,查询执行权限。另一方面,一切事物都是正确的。

0

它看起来好了,我 - 也许这:

var result 

将其更改为SqlCeDataReader。它是我能看到的唯一的'错误'。

另外,不要忘记在完成后关闭连接。

+0

我认为问题不在这里。基本上,编译器会将'var'转换为编译时的实际类型。是的,我用我的“真实”代码关闭了连接。 –