Ошибка при обновлении базы данных SQL Server Express в формах Windows - PullRequest
0 голосов
/ 22 октября 2011

Это моя проблема:

Я создаю приложение на C # с использованием Visual Studio 2010. В одном из модулей приложения мне нужно обновить существующую таблицу и вставить в другую таблицу.Обе таблицы созданы.

Проблема в том, что когда я не закрываю приложение целиком, оно прекрасно обновляется и вставляется в таблицы, но когда я закрываю приложение и открываю его снова, все значения сбрасываются.

Я думаю, что обновляется только набор данных, а не фактическая база данных.

Я хочу знать, как на самом деле обновить базу данных.

Мой код выглядит примерно так:

    System.Data.SqlClient.SqlConnection con;                      
    System.Data.SqlClient.SqlCommand cmd,cmd1,cmd2;

    private void Form3_Load(object sender, EventArgs e)
    {
        con = new System.Data.SqlClient.SqlConnection();
        con.ConnectionString = "Data Source=.\\SQLEXPRESS;AttachDbFilename=|DataDirectory|\\pharmacy.mdf;Integrated Security=True;User Instance=True";
        con.Open();
        MessageBox.Show("Connection successful!");
    }

    private void button1_Click(object sender, EventArgs e)
    {
        cmd1 = new System.Data.SqlClient.SqlCommand("Select med_id from stock where med_id= " + textBox1.Text + ";", con);
        object result = cmd.ExecuteScalar();
        if (result == null)
        {
            cmd = new System.Data.SqlClient.SqlCommand("insert into stock values('" + textBox1.Text + "','" + textBox2.Text + "','" + textBox3.Text + "','" + textBox4.Text + "','" + textBox5.Text + "','" + textBox6.Text + "','" + textBox7.Text + "','" + textBox8.Text + "','" + textBox9.Text + "');", con);
            cmd.ExecuteNonQuery();
        }
        else
        {
            cmd2 = new System.Data.SqlClient.SqlCommand("alter table stock set current_stock = (select current_stock from stock where med_id=" + textBox1.Text + ";) + "+ textBox8.Text +" where med_id="+textBox1.Text+";",con);
         }
            cmd2.ExecuteNonQuery();     
    }

Ответы [ 2 ]

0 голосов
/ 24 января 2015

Эти шаги сработали для меня, я использую Visual Studio Express 2013 для Windows Desktop:

Шаг 1: Перейдите в обозреватель базы данных, щелкните правой кнопкой мыши имя базы данных (файл mdf), выберите изменить подключения, выберите Обзорв папке вашего проекта перейдите в папку bin, затем перейдите в папку Debug, выберите mdf-файл в папке отладки, выберите Test Connection, чтобы убедиться, что подключение установлено успешно, затем нажмите OK

Далее, перейдите в свойствабазы данных (файл mdf), щелкните поле строки подключения в меню проводника свойств, скопируйте путь к файлу источника данных в поле строки подключения

Шаг 2. В окне обозревателя решений дважды щелкните «Свойства», перейдите к параметру «Настройки», «Вставить имя» - (может быть любым, я назвал свой EmployeeConnString) Тип вставки - в раскрывающемся списке выберите строку подключения Вставить область действия - в раскрывающемся списке выберите приложение «Вставить значение» - вставка правой кнопкой мыши (ранее скопированный путь к файлу), нажмите Enter Вы можете выйти из этой вкладки

Шаг3: Вернитесь в окно обозревателя решений и выберите файл базы данных в своем проекте vs (файл mdf). Перейдите в окно проводника свойств, чтобы выбрать параметр «Копировать в выходной каталог», измените «Всегда копировать» на «Никогда не копировать» или «Делать».Not Copy ",

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

0 голосов
/ 22 октября 2011

Как обычно - при запуске Visual Studio создает копию файла базы данных. Затем вы работаете с этой копией, обновляете записи там. При повторном вызове приложения исходный файл копируется поверх того, в который вы внесли изменения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...