Что не так с этим ресурсом / таблицей? - PullRequest
0 голосов
/ 09 февраля 2012

У меня есть файл SQL Express с одной таблицей People.У людей есть шесть или семь столбцов, но нет рядов.База данных является ресурсом в моем проекте 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'.

На основании случайного поиска в Google, который я пыталсяперед именем таблицы укажите dbo (dbo.People), но это не решило проблему.Что я могу делать не так?

РЕДАКТИРОВАТЬ: Вот снимок экрана Visual Studio, показывающий базу данных, ее структуру и содержание, а также ее присутствие в обозревателе решений: enter image description here

Ответы [ 3 ]

1 голос
/ 09 февраля 2012

Попробуйте вместо этого этот запрос и сообщите нам, если вы видите таблицу с именем 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();
0 голосов
/ 21 февраля 2012

Для архивных копателей и моего будущего себя, отвечая на мой собственный вопрос:

Теперь я вижу, что, поскольку мой проект находится на сетевом диске, Visual Studio создает базу данных внутри проекта, затем делает копию в папке моего профиля (я не являюсь администратором) и использую ее. Таким образом, база данных, созданная в проекте, не совпадает с базой данных, отображаемой в Database Explorer. Похоже, что это ограничение SQL Express, другие типы баз данных не имеют ограничения без сетевого диска.

Возможные решения:

  1. Поместите все проекты на локальный диск.
  2. Запустите экземпляр SQL Server на сетевом диске и получите доступ к базе данных через удаленное соединение.
  3. Храните базу данных на локальном диске вне проекта.
0 голосов
/ 09 февраля 2012

Похоже, таблица People отсутствует в базе данных или отсутствует в схеме по умолчанию

Попробуйте использовать полное имя (например, select * from dbo.People)

...