这个资源/表有什么问题?

时间:2012-02-09 09:21:46

标签: c# ado.net sql-server-express

我有一个带有单个表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的屏幕截图,显示了数据库,它的结构和内容,以及它在解决方案资源管理器中的存在: enter image description here

3 个答案:

答案 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的限制,其他数据库类型没有无网络驱动器限制。

可行的解决方案是:

  1. 将所有项目放在本地驱动器上。
  2. 在网络驱动器上运行SQL Server实例,并通过远程连接访问数据库。
  3. 将数据库保留在项目外的本地驱动器上。

答案 2 :(得分:-1)

似乎数据库中缺少表People或默认模式中没有

尝试使用完全限定名称(例如select * from dbo.People