我有一个带有单个表People的SQL Express文件。人们有六到七列,但没有行。该数据库是我的Visual Studio 2010 Express项目中的资源。我正在尝试连接此代码:
SqlConnection conn = new SqlConnection("Data Source=.\\SQLEXPRESS; AttachDbFilename=C:\\someLocation\\someDatabase.mdf; Integrated Security=True; User Instance=True ");
conn.Open();
SqlCommand cmd = new SqlCommand(@"select * from People;", conn);
但是,我收到以下错误:
Invalid object name 'People'.
基于一些偶然的谷歌搜索,我试图在表名与dbo(dbo.People)之前,但这并没有解决问题。我可能做错了什么?
编辑:以下是Visual Studio的屏幕截图,显示了数据库,它的结构和内容,以及它在解决方案资源管理器中的存在:
答案 0 :(得分:1)
请尝试此查询,并告诉我们您是否看到名为People的表格
select TABLE_SCHEMA+'.'+TABLE_NAME from information_schema.tables where TABLE_TYPE ='BASE TABLE'
C#代码示例:
SqlCommand command = SqlConnection .CreateCommand();
command.CommandText = "select TABLE_SCHEMA+'.'+TABLE_NAME as Name from
INFORMATION_SCHEMA.Tables where TABLE_TYPE =
'BASE TABLE'";
connection.Open();
答案 1 :(得分:0)
对于档案挖掘者和我未来的自我,回答我自己的问题:
我现在看到,由于我的项目是在网络驱动器上,Visual Studio正在项目中创建数据库,然后在我的配置文件文件夹中静默创建一个副本(我不是以管理员身份运行)并使用那个。因此,在项目中创建的数据库与数据库资源管理器中显示的数据库不同。这似乎是SQL Express的限制,其他数据库类型没有无网络驱动器限制。
可行的解决方案是:
答案 2 :(得分:-1)
似乎数据库中缺少表People
或默认模式中没有
尝试使用完全限定名称(例如select * from dbo.People
)