2013-07-27 3 views
0

Привет У меня этот код в класс, который работает SqlConnection:SqlConnection из класса в SqlCommand

using System.Data.SqlClient; 
using System.IO; 

namespace tours 
{ 
    class myConnection 
    { 
     public static SqlConnection GetConnection() 
     { 
       string path = "C:\\Users\\marek\\Documents\\Visual Studio 2012\\Projects\\tours\\tours\\sql_string.txt"; 
       StreamReader sr = new StreamReader(File.Open(path, FileMode.Open)); 

       string str = "Data Source='" + sr.ReadLine() + "';Initial Catalog ='" + sr.ReadLine() + "' ;User ='" + sr.ReadLine() + "';Password = '" + sr.ReadLine() + "'"; 

       SqlConnection spojeni = new SqlConnection(str); 
       spojeni.Open(); 
       return spojeni; 
     } 
    } 
} 

В других формах, которые я получил SqlCommand или SqlDataAdapter, и мне нужно, чтобы добавить к ним SqlConnection, но не знаю, как могу ли я получить к ним доступ? Не могли бы вы предложить мне что-нибудь? например так:

DataTable dt = new DataTable(); 
SqlDataAdapter SDA = new SqlDataAdapter("SELECT * FROM zajezd",); 
SDA.Fill(dt); 
+5

Вы не "добавить" в SqlCommand к SqlConnection. Возможно, вы искали конструктор 'SqlDataAdapter (string, SqlConnection)' constructor? –

ответ

5

попробовать

new SqlDataAdapter("SELECT * FROM zajezd",tours.myConnection.GetConnection()) 

или вы уже добавить using tours; в верхней части файла, то вы можете позвонить в myConnection.GetConnection()

Примечание:

макияжем MyConnection как общественные

public class myConnection 

если myConnection находится в отдельной библиотеке классов необходимо добавить ссылку на библиотеку классов данных


Я изменил бы вернуть сословное соединение только строку соединения, как показано ниже

public class myConnection 
{ 
    public static string GetConnectionString() 
    { 
     string connection = string.Empty; 
     string path = "C:\\Users\\marek\\Documents\\Visual Studio 2012\\Projects\\tours\\tours\\sql_string.txt"; 
     using (StreamReader sr = new StreamReader(File.Open(path, FileMode.Open))) 
     { 
      connection = "Data Source='" + sr.ReadLine() + "';Initial Catalog ='" + sr.ReadLine() + "' ;User ='" + sr.ReadLine() + "';Password = '" + sr.ReadLine() + "'"; 

     } 

     return connection; 

    } 
} 

Когда нам нужно получить доступ к базе данных,

DataTable dt = new DataTable(); 

using (SqlConnection con = new SqlConnection(myConnection.GetConnectionString())) 
using (SqlDataAdapter adapter = new SqlDataAdapter("SELECT * FROM zajezd", con)) 
{ 
    adapter.Fill(dt); 
} 

В случае вам нужно ExecuteNonQuery или ExecuteScalar

using (SqlConnection con = new SqlConnection(myConnection.GetConnectionString())) 
using (SqlCommand commad = new SqlCommand("sql statements", con)) 
{ 
    con.Open(); 
    commad.ExecuteNonQuery(); 
    //var result = commad.ExecuteScalar(); 

} 
+0

Здравствуйте, большое вам спасибо, я пытался это сделать: («SELECT * FROM zajezd», myConnection.myConnection()); но он сказал: tours.myConnection не определяет определение для 'myConnection'. Как его улучшить? еще раз спасибо. – Marek

+0

@Marek вы меняете myConnection как общедоступный? – Damith

+0

Да, да. Я не уверен теперь, где проблема:/ – Marek

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