2013-02-24 6 views
0

Недавно я начал создавать свои собственные классы, и я решил создать simpel один, но я столкнулся с 1 проблемой. вот что происходит:Как создать ссылку на объект в C#?

В моей Form1 у меня есть

SqlCeConnection sqlCEconn = new SqlCeConnection(@"Data Source = C:\Dropbox\Visual\Database test2 -treeview\Database test2 -treeview\Database2.sdf"); 

и в моем новом классе под названием тест, у меня есть это:

namespace Database_test2__treeview 
{ 
class test 
{ 
    public string testCHECK() 
    { 

     SqlCeConnection sqlCEconn = new SqlCeConnection(); 

     if (sqlCEconn.State == ConnectionState.Open) 
     { 
      return "Database connection: Open"; 
     } 
     if (sqlCEconn.State == ConnectionState.Closed) 
     { 
      return "Database connection: Closed"; 
     } 
     else 
     { 
      return ""; 
     } 
    } 
} 
} 

Позже в Form1 им с помощью моего нового класса чтобы проверить, открыто или нет соединение:

private void Form1_Load(object sender, EventArgs e) 
    { 
     sqlCEconn.Open(); 
     test testconnection = new test(); 

     Toolstrip1.Text = testconnection.testCHECK(); 

Очевидно, что возвращаемая строка будет «Закрыта», так как мой SqlCeConnection в test.cs не связан с SqlCeConnection в моей форме1

как это сделать простым способом?

спасибо.

+4

Вам необходимо прочитать книгу о C#, обложке к обложке. Это решает вашу проблему. –

ответ

3

если вы хотите ссылку, а затем просто отправить его в качестве параметра:

public string testCHECK(SqlCeConnection thisConnection) 
{ 
    if (thisConnection.State == ConnectionState.Open) 
    { 
     return "Database connection: Open"; 
    } 
    if (thisConnection.State == ConnectionState.Closed) 
    { 
     return "Database connection: Closed"; 
    } 
    else 
    { 
     return ""; 
    } 
} 
+0

большое спасибо :) работал –

1

Вы создаете новый объект подключения в вашем test классе - если вы хотите, чтобы проверить состояние существующего соединения, вы должны передать его к test класса или даже метода testCheck:

class test 
{ 
    public string testCHECK(SqlCeConnection sqlCEconn) 
    { 
     if (sqlCEconn.State == ConnectionState.Open) 
     { 
      return "Database connection: Open"; 
     } 
     if (sqlCEconn.State == ConnectionState.Closed) 
     { 
      return "Database connection: Closed"; 
     } 
     else 
     { 
      return ""; 
     } 
    } 
} 

И называть это так:

sqlCEconn.Open(); 
test testconnection = new test(); 

Toolstrip1.Text = testconnection.testCHECK(sqlCEconn); 
0

Вы должны создать класс под названием SqlManager или что-то, и управлять соединениями и операциями с базой данных.

Это позволит нескольким несвязанным классам работать с точно таким же объектом соединения.

0

В чеке вы создаете новое соединение, тем временем он должен следовать в вашем testCHECK, как пары

public string testCHECK(SqlCeConnection sqlCEconn) 

и ваш звонок

Toolstrip1.Text = testconnection.testCHECK(sqlCEconn) 
0

Я думаю, вы хотите открыть свое соединение с помощью конструктора тестов. Другой альтернативой может быть передача sqlCEconn, которую вы создаете на Form1_Load, в качестве аргумента для вашего тестового объекта.

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