2013-01-09 87 views
-1

我從連接到c#窗口窗體中的SQL Server本地實例時收到了一些錯誤消息。連接到SQL Server的本地實例時出錯

請幫忙,謝謝。

名稱 'lstLocalInstances' 不會在目前情況下

using System.Data.SqlClient; 
using System.IO; 
using Microsoft.SqlServer.Management.Smo; 
using Microsoft.SqlServer.Management.Common; 
using Microsoft.Win32; 


RegistryKey rk = Registry.LocalMachine.OpenSubKey 
     (@"SOFTWARE\Microsoft\Microsoft SQL Server"); 
String[] instances = (String[])rk.GetValue("InstalledInstances"); 
if (instances.Length > 0) 
{ 
    foreach (String element in instances) 
    { 
     if (element == "MSSQLSERVER") 
      lstLocalInstances.Items.Add(System.Environment.MachineName); 
     else 
      lstLocalInstances.Items.Add(System.Environment.MachineName + @"\" + element); 
    } 
} 
+1

是否定義了'lstLocalInstances'?你拼錯了嗎?你的表單上是否存在這樣一個命名的列表框?這是編譯時錯誤,而不是運行時異常。 – shahkalpesh

+0

您正在嘗試訪問您尚未定義的變量......並且該變量無效(變量不能以數字開頭) –

+0

對shahkalpesh所說的內容+1。您能否發佈包含您上面提供的代碼示例的方法? – Brian

回答

2

總之存在:爲本地實例添加聲明。就像下面的示例中:

var lstLocalInstances = new List<string> {"instance1", "instance2"}; 
// the rest of the code where lstLocalInstances is used 

RegistryKey rk = Registry.LocalMachine.OpenSubKey 
     (@"SOFTWARE\Microsoft\Microsoft SQL Server"); 
String[] instances = (String[])rk.GetValue("InstalledInstances"); 
if (instances.Length > 0) 
{ 
    foreach (String element in instances) 
    { 
     if (element == "MSSQLSERVER") 
      lstLocalInstances.Items.Add(System.Environment.MachineName); 
     else 
      lstLocalInstances.Items.Add(System.Environment.MachineName + @"\" + element); 
    } 
} 

編輯:code-project link,好像lstLocalInstances實際上是在項目例如雙贏的形式列表框控制。我的建議是下載源代碼並按原樣運行。

此外,你的代碼需要類似:

lstLocalInstances.Items.add(new ListBoxItem("name", "value")); 
+0

還是有一些錯誤信息;表達式字符'string'無效\t 語法錯誤;預期值\t ;預計 – Kam2012

+0

此代碼簡單從「http://www.codeproject.com/Articles/123441/SQL-Server-2008-Backup-and-Restore-Databases-using」 – Kam2012

+0

lstLocalInstances實際上是該示例中的列表框控件。因此,你需要像'list.Items.add(新的ListBoxItem(「名稱」,「值」));' –

0

程序員從代碼的codeproject site留出部分文章爲簡潔的身體。

您需要點擊文章頂部的「Download Source」鏈接以獲取完整的可編譯代碼或自己填寫缺失的代碼。