2012-02-09 63 views
0

我有一個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'.

基於一些休閒谷歌上搜索我想先擁有dbo表名(DBO .People)但這並沒有解決問題。我可能會做錯什麼?

編輯:這裏是Visual Studio中的示出的數據庫中的屏幕截圖,它的結構和內容,以及它在解決方案瀏覽器存在: enter image description here

+0

你在哪一行得到錯誤? – 2012-02-09 09:25:22

+0

你可以發表表格的確切結構嗎? – joshhendo 2012-02-09 09:27:05

+0

@Adel:如果我用'SqlCommand'對象註釋掉那行,那麼我不會得到這個錯誤。 – dotancohen 2012-02-09 09:31:40

回答

1

請嘗試此查詢,而不是告訴我們,如果你看到一個表名的人:

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

謝謝!該查詢(在不同的代碼中)編譯並運行,但在用SqlDataReader查看命令時看不到任何輸出。 – dotancohen 2012-02-09 11:19:53

+1

如果您沒有看到任何輸出,那麼表格不存在,請確保數據庫路徑正確,確保配置正確 – 2012-02-09 11:27:35

+0

謝謝Adel。路徑當然是正確的(不正確的路徑給出錯誤)並且表名是正確的(複製粘貼)。我可以檢查什麼配置? – dotancohen 2012-02-09 16:48:56

-1

好像表People缺少從數據庫或不在默認架構

嘗試使用完全合格的名稱(如select * from dbo.People

+0

謝謝,但那不是。我甚至在OP中提到我用dbo試過,但是它在底部,很容易錯過! – dotancohen 2012-02-09 09:33:36

+0

以迂迴的方式您是對的,請參閱下面的答案。謝謝! – dotancohen 2012-02-21 18:17:42

0

對於歸檔挖掘機和未來的我,回答我的問題:

我現在明白了,因爲我的項目是一個網絡驅動器上的Visual Studio是在項目中創建數據庫,然後悄悄地在我的個人檔案文件夾中創建一個副本(我沒有以Admin身份運行)並使用該文件夾。因此,在該項目中創建的數據庫與Database Explorer中顯示的數據庫不同。看起來這是SQL Express的限制,其他數據庫類型沒有無網絡驅動器限制。

的更多鈔票的解決方案是:

  1. 將所有項目的本地驅動器上。
  2. 在網絡驅動器上運行SQL Server實例並通過遠程連接訪問數據庫。
  3. 將數據庫保存在項目外的本地驅動器上。
+1

正如我懷疑:) – 2012-02-22 10:38:02