Как определить и использовать строку подключения в моем приложении C#
Привет, я хочу знать, как определить строку подключения и успешно использовать ее в своем приложении. Идея состоит в том, чтобы определить один раз и использовать по мере необходимости.
Я последовал этому совету здесь :
Как получить строку подключения из App. Config в C#[^]
с небольшим успехом. когда я запускаю свое тестовое приложение, оно работает нормально, но когда я прошу его вставить единственные значения в тестовую базу данных, которую я создал для этого случая, у меня появляется сообщение об ошибке:
"Ссылка на объект не определена на экземпляр объекта" на уровне оператора
var connectionString = ConfigurationManager.ConnectionStrings["con"].ConnectionString;
Что я должен сделать, чтобы разобраться в этой ситуации, пожалуйста ?
Что я уже пробовал:
1. Сначала я добавил этот код в файл config. app:
<connectionStrings> <add name= "con" providerName= "System.Data.SqlClient" connectionString="Data Source=.\sqlexpress;Initial Catalog=practice;Integrated Security=True" /> </connectionStrings>
2. Далее я добавил ссылку на систему.Конфигурация
3. событие click элемента управления my button имеет код :
var connectionString = ConfigurationManager.ConnectionStrings["con"].ConnectionString; string ins = @"insert into employee(name, address, phonenum, profession) values(@nam, @add, @phonen, @job)"; SqlCommand cmd = new SqlCommand(ins, con); SqlParameter NM = new SqlParameter(); NM.ParameterName = "nam"; NM.Value = nametxt.Text; SqlParameter AD = new SqlParameter(); AD.ParameterName = "add"; AD.Value = addresstxt.Text; SqlParameter PN = new SqlParameter(); PN.ParameterName= "phonen"; PN.Value = telephonetxt.Text; SqlParameter PF = new SqlParameter(); PF.ParameterName = "job"; PF.Value = professiontxt.Text; cmd.Parameters.Add(AD); cmd.Parameters.Add(PN); cmd.Parameters.Add(NM); cmd.Parameters.Add(PF); con.Open(); cmd.ExecuteNonQuery(); MessageBox.Show("Values Entered", "", MessageBoxButtons.OK, MessageBoxIcon.Information); con.Close();
F-ES Sitecore
Убедитесь, что вы обновляете правильный файл app.config, особенно если у вас есть несколько проектов в вашем решении.
Nganku Junior
У меня есть один проект в моем решении
Karthik_Mahalingam
протестировали ваш код, он отлично работает..
возможно, вы что-то упускаете
PeejayAdams
Да, мне это тоже нравится. Убедитесь, что ваш сегмент "connectionstrings" находится на вкладке "конфигурация", и, как предлагает F-ES, убедитесь, что вы имеете дело с правильным файлом app.config.
Nganku Junior
Замечания должным образом приняты к сведению. Я пройду через это еще раз. Спасибо!
Nganku Junior
У меня та же проблема, должно быть, я что-то упускаю. Но я не могу понять что
ZurdoDev
Каков путь к вашему проекту? О каком проекте идет речь? Каков путь к обновляемому конфигурационному файлу?
Nganku Junior
Путь к моему проекту как в абсолютном пути? Проект представляет собой приложение Windows Form.
ZurdoDev
Да, пути к файлам.
Nganku Junior
Путь проекта таков ; C:\Users\Le Parrain\Documents\Visual Studio 2015\Projects\TrialApCfg
Путь к конфигурационному файлу; C:\Users\Le Parrain\Documents\Visual Studio 2015\Projects\TrialApCfg\TrialApCfg\App. config
F-ES Sitecore
Это файл Visual Studio поддерживает, файл приложение использует при работе, вероятно, будет \проекты\TrialApCfg\TrialApCfg\\бин\отладки\TrialApCfg.exe-файла.конфиг
При компиляции проекта файл app. config переименовывается и перемещается. Проверьте, что строка подключения находится в* этом * файле.
Nganku Junior
Йа! строка подключения находится в этом файле с именем path;
C:\Users\Le документы Parrain\\визуальной студии 2015\проекты\TrialApCfg\TrialApCfg\бин\ "отладка".
Вот как это выглядит;
& lt;?xml version=" 1.0 "encoding=" utf-8"? >
& lt;конфигурация>
& lt;запуск & gt;
&ЛТ;supportedRuntime версия="В4.0" артикул=".NETFramework, версия=v4. 5" />
& lt;соединительные нити>
< добавить имя= " con"
система имя_поставщика=".Данных.Поставщики sqlclient"
connectionString= "источник данных=.\sqlexpress;начальный каталог=практика;Интегрированная безопасность=True"/>
Richard MacCutchan
Решение этой проблемы довольно простое: сначала определите, какая ссылочная переменная вызывает исключение. Во-вторых, определите, почему он равен нулю, и исправьте код. Отладчик поможет вам найти это.
Кроме того, что еще более важно, не делайте следующего:
MessageBox.Show("Values Entered", "", MessageBoxButtons.OK, MessageBoxIcon.Information);
когда вы не проверяете, что ваш SQL-оператор успешно выполнен. Если вы сделаете это в живой базе данных, вы наверняка пожалеете об этом.
Tomas Takac
На самом деле вы не показываете, как вы создаете сам объект соединения. Вы просто получаете строку подключения, а затем используете переменную con для создания объекта команды. Может быть, там есть какая-то проблема? Кстати, SqlConnection и SqlCommand являются одноразовыми, поэтому вы должны заключить их в блок using.
Nganku Junior
Это представление кода
использование системы;
использование системы.Коллекции.Общий;
использование системы.ComponentModel;
используя системы.Сведения;
использование системы.Рисование;
использование System. Linq;
используя системы.Текст;
использование системы.Нарезание резьбы.Задачи;
использование системы.Окна.Формы;
использование системы.Конфигурация;
используя системы.Данных.Поставщики sqlclient;
пространство имен TrialApCfg
{
общественности частичного класс form1 : форма
{
Sqlconnection con;
открытый form1()
{
метод InitializeComponent();
}
частная btn_enter_Click недействительным(объект отправителя, EventArgs в электронной)
{
var connectionString = ConfigurationManager.ConnectionStrings ["con"].Параметр connectionString;
строка ins = @ " вставить в значения employee(name) (@nam)";
SqlCommand cmd = new SqlCommand(ins, con);
Объект sqlparameter Нм = новый объект sqlparameter();
Нм.Имяпараметра = "дн";
Нм.Значение = txtboxname.Текст;
УМК.Параметры.Добавить (Нм);
кон.Открыть();
УМК.Метод executenonquery();
Ящик для сообщений.Show ("Введенные Значения","", MessageBoxButtons.Хорошо, MessageBoxIcon.Информация);
кон.Рядом();
Tomas Takac
Ну, насколько я вижу, sqlconnection con никогда не инициализируется. Я предполагаю, что вы хотите создать новое соединение, используя ту строку подключения, которую вы извлекаете из файла app.config. Я думаю, что на данный момент все должно быть ясно.
Nganku Junior
Это представление кода
использование системы;
использование системы.Коллекции.Общий;
использование системы.ComponentModel;
используя системы.Сведения;
использование системы.Рисование;
использование System. Linq;
используя системы.Текст;
использование системы.Нарезание резьбы.Задачи;
использование системы.Окна.Формы;
использование системы.Конфигурация;
используя системы.Данных.Поставщики sqlclient;
пространство имен TrialApCfg
{
общественности частичного класс form1 : форма
{
Sqlconnection con;
открытый form1()
{
метод InitializeComponent();
}
частная btn_enter_Click недействительным(объект отправителя, EventArgs в электронной)
{
var connectionString = ConfigurationManager.ConnectionStrings ["con"].Параметр connectionString;
строка ins = @ " вставить в значения employee(name) (@nam)";
SqlCommand cmd = new SqlCommand(ins, con);
Объект sqlparameter Нм = новый объект sqlparameter();
Нм.Имяпараметра = "дн";
Нм.Значение = txtboxname.Текст;
УМК.Параметры.Добавить (Нм);
против.Открыть();
УМК.Метод executenonquery();
Ящик для сообщений.Show ("Введенные Значения","", MessageBoxButtons.Хорошо, MessageBoxIcon.Информация);
против.Закрывать();
Karthik_Mahalingam
Всегда использовать Ответить кнопка, чтобы отправить комментарии / запрос пользователю, чтобы пользователь получил уведомление и ответил на ваш текст.
Nganku Junior
Вас Понял
Karthik_Mahalingam
вас понял :)