2012-05-25 8 views
0

Я разрабатываю серию процессов на C#, которые повторно используют один и тот же код SQL. Ниже приведен пример класса I, созданного для подключения SQL к моей тестовой базе данных. Вопрос: как мне назвать класс в моем процессе? Я попробовал несколько вещей, однако, я получаю ошибки нижеCalling Class in C#

Ошибки:

SQLHelperCode.FirstConnect is a 'type' which is not valid in the given context. 
Only Assignment, call, increment, decrement and new object expressions can be used as a statement 

Класс FirstConnect

public class FirstConnect 
{ 
    public FirstConnect() 
    { 
     SqlConnection conn; 
     string path = @"C:\Program Files (x86)\Microsoft SQL Server\MSSQL.1\MSSQL\Data"; 
     const string dbName = "datadetail"; 
     { 
      conn = new SqlConnection("user id=TestUser;" + 
            "server=TestData\\SQLEXPRESS;" + 
            "Trusted_Connection=yes;" + 
            "connection timeout=30"); 

      try 
      { 
       conn.Open(); 
      } 
      catch (Exception e) 
      { 
       Console.WriteLine(e.ToString()); 
      } 
     } 
    } 
} 

Хотите вызвать FirstConnect в этом коде:

protected override void OnBarUpdate() 
{ 
    accountName = Account.Name.ToString(); 

    if (accountName == 'Test1234') 
    { 
     //Call FirstConnect here. 
    } 
} 
+0

экземпляра класса и вызова метод вроде так: FirstConnect myThing = new FirstConnect(); myThing.DoSomething. Код, который вы указали выше, не имеет метода для вызываемого класса. – Kell

+0

заменить // Вызовите FirstConnect здесь. с новый FirstConnect(); И убедитесь, что вы закрыли соединение – prashanth

ответ

5

Эта строка определяет класс

public class FirstConnect 
{ 

Эта линия определяет constuctor

public FirstConnect() 
     { 

Ниже будет определять переменную типа FirstConnect и затем вызвать конструктор для создания его (я сделал это две строки в быть явным)

FirstConnect fc; 
fc = new FirstConnect(); 

Обычно вы тогда хотите иметь метод, который фактически делает что-то с объектом

, например.

SomeOtherObject varaibleName = fc.GetSomeData(accountName); 
1

Не ответ, а просто большой комментарий ...

При использовании классов, реализующих IDisposable как SqlConnection делает, они должны быть использованы следующим образом:

using (var conn = new SqlConnection("user id=TestUser;server=TestData\\SQLEXPRESS;Trusted_Connection=yes;connection timeout=30")) 
{ 
    //... do work ... 
} 
+0

То, что вы написали, правда, но не применимо здесь. conn - это поле на FirstConnect, поэтому область подключения не может быть ограничена блоком использования. Поэтому FirstConnect должен либо реализовать IDisposable, либо быть рефакторизованным, чтобы он имел поле connectionString, которое используется, как вы предлагаете в каждом методе, который его использует. –