| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Базы данных под .NET > Добавление записи в Базу Данных |
| Автор: D7na 16.6.2011, 00:59 |
| Добрый вечер форумчане. C# учу недавно, в связи с этим возникают дурацкие вопросы, на которые не так просто найти ответы. В общем имеется таблица в БД MSSql в которой всего 2 колонки, и форма на которой: 2 TextBox'a 1 Button и 1 DataGrid. Хотелось бы чтобы данные введенные в TextBox1 и TextBox2, после нажатия на Button, помещались в соответствующие колонки в таблице БД, и отображались в DataGrid'e. База подключена посредством мастера. Интересует код в обработчике событий Button.OnClick. |
| Автор: MasterOfCode 16.6.2011, 05:38 |
| Уже такой задавали. Например если пролистать страницу вниз, можно увидеть список похожих тем. |
| Автор: D7na 16.6.2011, 22:55 |
| Пруфлинк в студию |
| Автор: jonie 17.6.2011, 00:51 |
| http://forum.vingrad.ru/topic-141421.html |
| Автор: D7na 17.6.2011, 10:29 |
| Добавление данных из textbox в базу MySql. Как я понимаю базы немного разные Вам не кажется? |
| Автор: D7na 17.6.2011, 11:39 | ||
| Вот что имеется на данный момент. При нажатии на кнопку - сообщение об ошибке.
|
| Автор: jonie 17.6.2011, 21:28 |
Ошибка типа "ошибка"? Или предлагаете нам угадать7 |
| Автор: D7na 18.6.2011, 10:01 |
Не, ошибка "Не удается подключиться к базе данных", видимо connection string неправильный. Сейчас разбираюсь. |
| Автор: mongoloid 18.6.2011, 10:07 | ||||
| Поставленную задачу - добавление записи в БД - можно решить множеством способов. Если вы работаете с использованием мастера, то почему бы не использовать преимущества, которые он дает? Самый простой способ: Из вкладки "Источники данных" перетащите свою таблицу на форму. Автоматически получите DataGridView и DataBinding, можете добавлять/удалять/менять записи прямо в таблице. Если вам нужно делать именно так, как написали вы, т.е. кинуть два TextBox"а и через них вводить данные, то можно сделать, например, так:
Где testDataSet.test - таблица, созданная мастером при подключении источника данных. testDataSet.testRow.id, testDataSet.testRow.column1, testDataSet.testRow.column2 - это типизированные поля, созданные мастером согласно структуре вашей таблицы (нашем случае для таблицы test вида (id, column1, column2). Что касается кода, который вы привели, то сразу, что режет глаз, это текст запроса: с вашим кодом вы не получите запрос вида "INSERT INTO auth VALUES('value1','value2')". Там же ошибка с типами. Для чего конвертация Convert.ToInt32(textBox1.Text)? Она не нужна, и правильно кавычки с запятыми расставьте. Добавлено через 8 минут и 2 секунды Короче говоря, текста запроса должен выглядеть как-то так: SqlCommand("INSERT INTO Auth VALUES (" + textBox1.Text + ", " + textBox2.Text + ")"); А вот пример работающего кода для Компакт Едишн:
То, что перечислено в Params([Name], [Comment1], [Comment2]) - необязательно, можно было написать и так: "INSERT INTO Params VALUES ('Параметр1','Комментарий11','Комментарий22')" |
| Автор: D7na 18.6.2011, 11:35 | ||||||||
| Mongoloid, огромное Вам спасибо. Все заработало. Единственное компилятор ругался на строчки
Сообщением: Cannot implicitly convert type 'int' to 'string' Заменив их на
Все скомпилировалось. В итоге код обработчика нажатия кнопки выглядит следующим образом:
Как теперь сделать чтобы данные сохранялись в базе после добавления? При закрытии программы и открытии вновь, база данных пустая. Ответ нашел сам:
|
| Автор: mongoloid 18.6.2011, 12:14 | ||
У меня nrow.column1 = Convert.ToInt32(textBox1.Text) только потому, что в таблице test тип полей column1 и column2 - int. Поэтому потребовалось конвертировать. В вашем случае, очевидно, тип полей - string, поэтому все верно, вам не нужно конвертировать. |
| Автор: D7na 18.6.2011, 14:46 | ||
| Создал вторую форму, на которой 2 кнопки и 1 DataGridView. Форма предназначена для удаления данных из таблицы. А вот с кодом для кнопки удаления записей, проблемы:
Необходимо чтобы удалялась строка выделенная в DataGrid'e. При компиляции все нормально. При выполнении программы когда я нажимаю на кнопку удаления записи компилятор выдает ошибку: "Object reference not set to an instance of an object." Объясните что я делаю не так? |