A * .sdf数据库不能与密码一起使用

时间:2011-11-13 20:46:32

标签: c# .net sql sql-server-ce

我使用Visual Studio创建了一个密码保护的*.sdf文件,运行正常。我插入了一些数据,我尝试使用Visual Studio SQL编辑器进行读取,但是当我转到不起作用的C#代码时。

我尝试了以下内容:

using System;
using System.Data.SqlServerCe;


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

            SqlCeCommand cmd = con.CreateCommand();
            cmd.CommandText = "select * from Cookies";
            cmd.CommandType = System.Data.CommandType.TableDirect;
            cmd.Connection = con;

            SqlCeDataReader result = cmd.ExecuteReader();
            //...
            con.Close();
        }
    }

我收到以下错误: The specified table does not exist. [ select * from Cookies ]

表格结构

enter image description here

返回false。有人可以指出我的错误吗?

提前致谢。

1 个答案:

答案 0 :(得分:0)

您的问题是您指定的是System.Data.CommandType.TableDirect

当您更改代码以使用以下内容时,您将避免您看到的错误。

cmd.CommandType = System.Data.CommandType.Text;

您甚至可以排除设置CommandType属性,因为Text是默认属性。

TableDirect是OLEDB遗留命令类型。除非您的命令只是表或视图名称,否则不要使用它。在内部,命令对象将构造一个SELECT * FROM语句,从指定的表或视图中选择所有字段和所有记录。