OriginalGriff
До тех пор, пока ваш проект ссылается на систему.Данные - и это должно быть по умолчанию, если вы не использовали "нечетный" шаблон проекта, то все, что вам нужно использовать, это проверить .CS - файл и убедитесь, что у вас есть обе эти строки в верхней части файла:
using System.Data;
using System.Data.SqlClient;
Если эти строки не показывают никакой ошибки (то есть ни одна из них не подчеркнута красным цветом), то вы можете использовать
SqlConnection
,
SqlCommand
, и так далее очень легко:
using (SqlConnection con = new SqlConnection(strConnect))
{
con.Open();
using (SqlCommand cmd = new SqlCommand("SELECT Id, description FROM myTable", con))
{
using (SqlDataReader reader = cmd.ExecuteReader())
{
while (reader.Read())
{
int id = (int) reader["Id"];
string desc = (string) reader["description"];
Console.WriteLine("ID: {0}\n {1}", id, desc);
}
}
}
}
Если какой-либо из этих кодов подчеркнут красным цветом (за исключением строки подключения в первой строке), то у вас есть проблема.
Кроме этого, вам строго не нужно
using
линии для системы.Data или System.Data.SqlClient: вы можете давать полное имя класса каждый раз, когда используете их:
using (System.Data.SqlClient.SqlConnection con = new System.Data.SqlClient.SqlConnection(strConnect))
{
con.Open();
using (System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand("SELECT Id, description FROM myTable", con))
{
using (System.Data.SqlClient.SqlDataReader reader = cmd.ExecuteReader())
{
while (reader.Read())
{
int id = (int)reader["Id"];
string desc = (string)reader["description"];
Console.WriteLine("ID: {0}\n {1}", id, desc);
}
}
}
}
Добавление
using
операторы просто сокращают набор текста и делают его более читабельным, вот и все.
Hassan Y. Ansari
Большое спасибо вам обоим за ответ. Но у меня другой вопрос. Предположим, я объявляю одно пространство имен с именем "namespace1", а внутри него объявляю один класс с именем "HelloWorld". После этого, если я хочу использовать класс "HelloWorld" в своем проекте позже, я должен использовать оператор "using namespace1". Когда я это сделаю, то смогу использовать класс "HelloWorld" без использования полного имени.
Теперь, если я объявлю еще одно пространство имен с именем "namespace2" под объявлением "namespace1". Когда я использую оператор "using namespace1", он должен автоматически предоставлять доступ к "namespace2" также, как и после включения namespace1, я смогу использовать класс "HelloWorld". Как класс "HelloWorld", так и "namespace2" объявлены в разделе "namespace1", поэтому он разрешает доступ только к классу "HelloWorld", а не к пространству имен "namespace2".
OriginalGriff
Это действительно так - но только тогда, когда вы используете второе имя пространства имен для явного префикса классов внутри него:
используя Namespace1;
...
ClassInNS1 c1 = новый ClassInNs1();
Namespace2.ClassInNS2 = новый Namespace2.ClassInNS2();
Если вы подумаете об этом, если это сработает:
используя Namespace1;
...
ClassInNS1 c1 = новый ClassInNs1();
ClassInNS2 = новый ClassInNS2();
Тогда может ли это вызвать проблемы?
Да, это возможно - очень легко.
Существует только так много "хороших имен" для методов, свойств, полей и событий - так что довольно часто можно записать метод "Load" или "Save" в класс, например. И сами имена классов, как правило, одинаковы - разные пространства имен часто содержат одни и те же имена классов, потому что они, как правило, делают по крайней мере некоторые из тех же вещей.
Если оператор using добавит каждый подкласс (а также их подклассы), то вы увеличите количество потенциальных дубликатов имен, а затем вам придется добавлять полное полное имя при все большем и большем использовании классов.
И... если это так, то когда вы видите имя класса, вы не знаете, где оно находится - оно может быть в NS1 или NS1.NS2 - вы, как разработчик, должны пойти и проверить, как оно работает.
Сделав "using" только "bring in" единственным именованным пространством имен, вы не получите этих проблем - если вам нужны классы Namespace1, вы добавляете их в список using. Если Вам также нужны классы Namespace1.Namespace2, вы явно добавляете их.
Помните, что "использование" вовсе не обязательно - вы можете удалить их все и использовать полные имена, если хотите, - это просто делает вещи немного проще для всех нас, а не является универсальным решением "один размер подходит всем"!