2016-06-26 17 views
-2

我正在使用C#Visual Studio和SQL Server作爲其後端。這是我的代碼 - 我試圖根據數據庫名檢索表名。它使用的命令是在SQL Server Management Studio中查詢生成器可以正常使用,但是當我運行這一點,示值誤差從Visual Studio中從SQL Server中檢索表格

對象引用不設置到對象

的實例在下一行

cmbAlterAdd1.Items.Add(Reader2["name"].ToString()); 

我給出了名字,因爲在結果列名稱即將有名稱只顯示圖像。我想我需要專家的建議來解決這個問題,請大家幫忙!

ConnectionPath = sqlPath; 
DBName = databaseName; 

SqlConnection con = new SqlConnection(ConnectionPath); 
con.Open(); 

SqlCommand cmd = new SqlCommand("USE "+DBName+" SELECT name FROM sys.Tables", con); 
SqlDataReader Reader2 = cmd.ExecuteReader(); 

while (Reader2.Read()) 
{ 
    cmbAlterAdd1.Items.Add(Reader2["name"].ToString()); 
} 

con.Close(); 

IMAGE LINK

+1

您應該移除「'USE'+ DBName」 - 您*已經*在您的*連接字符串中定義要處理的數據庫* –

+0

感謝您的評論marc_s您的建議是正確的我更新了我的查詢,但仍然錯誤沒有消失。 – Santigo

+0

@marc_s這種類型取決於,您可能想要枚舉輔助數據庫中的表的原因很多。 –

回答

-1

下面是使用.NET數據庫對象的完全工作樣本。我沒有注意錯誤處理或其他任何東西,但只是概念。

SqlConnection insSqlConnection = new SqlConnection("Your connection string"); 
 
SqlCommand insSqlCommand = new SqlCommand("SELECT * FROM INFORMATION_SCHEMA.TABLES", insSqlConnection); 
 
SqlDataAdapter insSqlDataAdapter = new SqlDataAdapter(insSqlCommand); 
 
DataTable insDt_Tables = new DataTable(); 
 
insSqlConnection.Open(); 
 
insSqlDataAdapter.Fill(insDt_Tables); 
 
insSqlConnection.Close();

需要注意的是,此查詢將列出在連接字符串中定義的初始目錄表。

我希望這有助於

+0

對任何人而言,如果你是在低調投票,你是否會善意地說出原因? –

+0

使用數據適配器而不是數據讀取器是另一個好主意我欣賞它:) – Santigo

+0

Upvoted to nullify,因爲沒有人評論的原因,但真的我不知道什麼寫在那裏; P –

0

也許嘗試使用

SqlCommand cmd = new SqlCommand("USE "+DBName+"; SELECT name FROM sys.Tables", con); 

另一種思考後一個分號,並在連接字符串中的ID /密碼應用到其它數據庫中呢?

相關問題