Не могу понять, почему getConnectionString продолжает передавать NULL

Я пытаюсь получить свою строку подключения из одной формы в другую, но она продолжает передавать NULL. Я новичок в работе с разными классами, поэтому это может быть очень простой ошибкой.

Форма 1

public partial class Form1 : Form
{
    private string ConnectionString = @"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=C:\Users\Ruben\Documents\dbPlatenCompany.mdf;Integrated Security = True; Connect Timeout = 30";
    public Form1()
    {
        InitializeComponent();
    }

    public string getConnectionString()
    {
        return ConnectionString;
    }

    private void btn_login_Click(object sender, EventArgs e)
    {
        SqlConnection con = new SqlConnection(ConnectionString);
        SqlDataAdapter sqa = new SqlDataAdapter("Select count(*) From tblLogin where Username ='" + txt_username.Text + "' and Password ='" + txt_password.Text + "'", con);
        DataTable dt = new DataTable();
        sqa.Fill(dt);

        if (dt.Rows[0][0].ToString() == "1") 
        {
            this.Hide();
            Form2 main = new Form2();
            main.Show();
        }

        else
        {
            MessageBox.Show("Username or Password is incorrect");
            txt_username.Clear();
            txt_password.Clear();
        }
    }
}

Форма 2

public partial class Form2 : Form
{
    private Form1 form1;
    public Form2()
    {
        InitializeComponent();
    }

    private void btn_search_Click(object sender, EventArgs e)
    {
        if (rb_Artist.Checked == true)
        {
            String ConnectionString = form1.getConnectionString();
            SqlConnection con = new SqlConnection(ConnectionString);
            SqlDataAdapter sqa = new SqlDataAdapter("SELECT * FROM tblArtist where Name like" + txt_search.Text, con);
            DataTable dt = new DataTable();
            sqa.Fill(dt);
            dataGridView1.DataSource = dt;
        }
    }
}

Что такое конкретноnull?

mjwills 15.11.2018 13:04

Измените private string на private const string.

mjwills 15.11.2018 13:05

Возможный дубликат Что такое исключение NullReferenceException и как его исправить?

mjwills 15.11.2018 13:08
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
3
60
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Это потому, что вы никогда не инициализируете Form1 в своей Form2.

Измените private Form1 form1; на private Form1 form1 = new Form1();

Большое спасибо, я даже не понял этого после более часа попыток!

im_ Ruben 15.11.2018 13:11

Нет проблем, это просто совет, если вы хотите использовать переменные, такие как строки подключения, в нескольких формах или классах, настройте их в файле app.config. Вы можете получить к ним доступ и изменить их проще, чем пытаться передавать их из формы в форму. .

Niklas7 15.11.2018 13:24

общедоступная статическая строка ConnectionString = @ "Источник данных = (LocalDB) \ MSSQLLocalDB; AttachDbFilename = C: \ Users \ Ruben \ Documents \ dbPlatenCompany.mdf; Integrated Security = True; Время ожидания подключения = 30";

использование в Form2 не создавать объект form1

Строка ConnectionString = form1.ConnectionString

эта переменная пытается решить эту проблему

Другие вопросы по теме