Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Глюк с вставкой данных в базу 
:(
    Опции темы
Abbath1349
Дата 11.5.2011, 19:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 214
Регистрация: 16.6.2010

Репутация: нет
Всего: нет



У меня возникла проблема при работе с вставкой данных в базу. Сделал блок try catch (в catch пишет ошибка если не удалось выполнить) вот если выполняется блок catch то при последующих нажатиях на кнопку блок try не выполняется. в чем проблема? 
Код

SqlConnection cn = new SqlConnection("Data Source=microsof-1346c9;" +
         "Integrated Security=SSPI; Initial Catalog=Товары");
        public AddProduct()
        {
            InitializeComponent();
            List<string> Providers = new List<string>();
          
            cn.Open();
            string strSQL = "Select [Имя Поставщика] From Поставщики";
            SqlCommand myCommand = new SqlCommand(strSQL, cn);
            SqlDataReader myDataReader = myCommand.ExecuteReader();
            while (myDataReader.Read())
                Providers.Add(myDataReader["Имя Поставщика"].ToString());
            for (int i = 0; i < Providers.Count; i++)
                comboBox1.Items.Add(Providers[i]);
            myDataReader.Close();
           cn.Close();
        }
private void button1_Click(object sender, EventArgs e)
        {
            try
            {
                SqlCommand cmd = new SqlCommand();
                SqlParameter[] Param = new SqlParameter[6];
                Param[0] = new SqlParameter("@ProductName", SqlDbType.NVarChar, 35);
                Param[1] = new SqlParameter("@Provider", SqlDbType.Int);
                Param[2] = new SqlParameter("@Sertificate", SqlDbType.NVarChar, 25);
                Param[3] = new SqlParameter("@Producer", SqlDbType.NVarChar, 35);
                Param[4] = new SqlParameter("@units", SqlDbType.NVarChar, 10);
                Param[5] = new SqlParameter("@Cost", SqlDbType.NVarChar, 15);
                cmd.Connection = cn;
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.CommandText = "AddProduct";
                cmd.Parameters.AddRange(Param);
                Param[0].Value = textBox1.Text;
                int val = comboBox1.SelectedIndex;
                Param[1].Value = val + 1;
                Param[2].Value = textBox2.Text;
                Param[3].Value = textBox3.Text;
                Param[4].Value = textBox4.Text;
                Param[5].Value = textBox5.Text;
                label7.Text = "Товар Добавлен";
                cn.Open();
                cmd.ExecuteNonQuery();
                cn.Close();
            }
            catch
            {
                label7.Text = "Ошибка";
            
            }
        }



PM MAIL   Вверх
Экскалупатор
Дата 11.5.2011, 20:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1746
Регистрация: 1.4.2009
Где: г. Минск

Репутация: 11
Всего: 24



а с чего такая уверенность что код потом не выполняется? включи дебаг и посмотри что у тебя происходит.
Код

 label7.Text = "Товар Добавлен";
                cn.Open();
                cmd.ExecuteNonQuery();
                cn.Close();

ты сообщаешь что товар добавлен до того как добавляешь в базу, тебя это не смущает?
может быть у тебя постоянно ошибка падает, потому что ты пытаешься открыть незакрытое соединение с базой, потому, что соединение с базой у тебя не закрывается.
 скорее всго исключение падает скорее всего на cmd.ExecuteNonQuery(); и до закрытия тупо не доходит. добавь блок Finaly, и в нем закрывай.

P.s. а вообще лучше привыкнуть писать нормально код сразу, отделять логику работы с базой от кнопок и прочее, а то привыкнешь и так будет всегда, пока кто нибудь по рукам очень больно не даст

Это сообщение отредактировал(а) Экскалупатор - 11.5.2011, 20:05
PM MAIL ICQ   Вверх
gambit
Дата 12.5.2011, 10:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***
Награды: 1



Профиль
Группа: Комодератор
Сообщений: 1359
Регистрация: 25.6.2006
Где: я?

Репутация: 5
Всего: 40



Цитата(Экскалупатор @  11.5.2011,  20:03 Найти цитируемый пост)
отделять логику работы с базой от кнопок и прочее, а то привыкнешь и так будет всегда, пока кто нибудь по рукам очень больно не даст

с именами контролов в стиле comboBox1 и button1 - тоже самое
PM MAIL ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.1285 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.