#c# #sql #winforms #user-controls #connection-string
#c# #sql #winforms #пользовательские элементы управления #строка подключения
Вопрос:
Я пытался (учился) создать UserControl в Winforms.Вот мое приложение.config
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<connectionStrings>
<add name="LoginTestDB_cf"
connectionString="Data Source=.SqlExpress;Initial Catalog=LoginTestDB;Integrated Security=True;Pooling=False"
providerName="System.Data.SqlClient" />
</connectionStrings>
</configuration>
Я создал статический класс и попытался получить строку подключения. Вот как я пытался:
static class Helper
{
public static string ConnectionString
{
get
{
string str = System.Configuration.ConfigurationManager.ConnectionStrings["LoginTestDB_cf"].ConnectionString;
return str;
}
}
}
Затем я попытался получить доступ к строке подключения следующим образом:
_myCommand = "my_command_text";
SqlConnection con = new SqlConnection();
con.ConnectionString = Helper.ConnectionString; //getting error
_cmd = new SqlCommand(_myCommand, con);
con.Open();
Ошибка: «Ссылка на объект не установлена на экземпляр объекта».
Я получаю ошибку при настройке строки подключения. Могу я узнать, что здесь не так? Я уверен, что есть небольшая ошибка или незнание, играющее грязную роль, но не способное распознать это.
Во вспомогательном классе я даже пытался с
string str = System.Configuration.ConfigurationManager.AppSettings["LoginTestDB_cf"].ToString();
Но все еще безуспешно.
Спасибо.
Комментарии:
1. вы пробовали устанавливать точку останова в свойстве ConnectionString вспомогательного класса и проверять свойство ConnectionStrings менеджера конфигурации?
2. Ваш код кажется правильным, изначально я думал, что вы могли неправильно написать имя подключения…
3. строка str = System. Конфигурация. ConfigurationManager. Строки подключения[«LoginTestDB_cf»]. ConnectionString; // выдает ошибку в этом коде…
4. это из-за того, что я делаю это в Usercontrol??
5. Сколько у вас проектов и где эти файлы? app.config должен находиться в проекте, который генерирует exe, а не в библиотеке классов, которая генерирует dll.
Ответ №1:
Хорошо, итак, я придумал решение и отчаянно надеюсь, что кто-нибудь докажет, что я неправ. Я скопировал те же файлы (добавил существующие элементы) в другое решение Winforms (windowsFormApplication). И volla!! все работало нормально. Итак, на данный момент я думаю, что строки подключения нельзя использовать в UserControl, хотя я не могу обосновать то, что я говорю. Но да, я использовал те же файлы проекта и то же содержимое app.config (конечно, я изменил имя пространства имен для файлов), и все работало отлично. Пожалуйста, дайте мне знать, если я неправильно понимаю основы. конечно, я продолжу искать в Интернете эту проблему. Спасибо.
Надеюсь, это поможет.
Ответ №2:
Вы можете легко использовать строку подключения во вновь созданном элементе управления.
Вот моя настройка:
Пользовательский элемент управления — это единственная кнопка с прикрепленным кодом, который вы предоставили. Вспомогательный класс является частью пользовательского элемента управления. Как вы можете видеть, я просто отлично прошел через это до открытой строки, после которой вы столкнулись со своей проблемой. (Он открывает, а затем закрывает соединение просто отлично, я проверил).
Комментарии:
1. являются ли пользовательские элементы управления такими же, как usercontrol ?? я думаю, что нет. ну, вы пробовали то же самое с UserControl??
2. Вы можете видеть в SS, что этот код является частью usercontrol. Открытый частичный класс usercontrol : usercontrol. На самом деле, если вы посмотрите на название вкладки: UserControl.
3. но по какой-то неизвестной причине у меня это не работает. дайте мне посмотреть. опубликует обновление
4. Есть какие-нибудь успехи с проектом, который я собрал для вас?