2013-01-09 2 views
-1

У меня возникли сообщения об ошибках от подключения к локальным экземплярам SQL Server в форме окна C#.Ошибка подключения к локальным экземплярам 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

+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); 
    } 
} 

Edit: Из 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" или напишите его.

Смежные вопросы