我使用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 ]
表格结构
返回false。有人可以指出我的错误吗?
提前致谢。
答案 0 :(得分:0)
您的问题是您指定的是System.Data.CommandType.TableDirect
。
当您更改代码以使用以下内容时,您将避免您看到的错误。
cmd.CommandType = System.Data.CommandType.Text;
您甚至可以排除设置CommandType
属性,因为Text
是默认属性。
TableDirect
是OLEDB遗留命令类型。除非您的命令只是表或视图名称,否则不要使用它。在内部,命令对象将构造一个SELECT * FROM
语句,从指定的表或视图中选择所有字段和所有记录。