![]() |
|
Модераторы: gambit |
![]()
|
|
| Vitkaz |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 90 Регистрация: 29.11.2006 Репутация: нет Всего: нет |
Привет всем! Недавно начал изучать C#. Сейчас создаю базу данных, для чего проделал следующее: создал таблицы и связи между ними в SQL Server 2005, в Visual Studio 2008 установил соединение с сервером, создал форму, которая содержит Grid, textbox`ы и кнопку "Добавить клиента". Как добавить новую запись в таблицу я не знаю ? Помогите пожалуйста написать содержимое события button1_Click.
|
|||
|
||||
| Rififi |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1254 Регистрация: 9.3.2008 Репутация: нет Всего: 36 |
Vitkaz,
есть несколько способов в самом простом случае - создать объект Command и выполнить sql-запрос INSERT INTO скачай/купи любую книгу с названием ADO.NET 2.0, например Professional ADO.NET 2, Pro ADO.NET 2.0 ..., или от папиков - Programming Microsoft® ADO.NET 2.0, причём многие из них имеются в переводном виде. там всё это описано |
|||
|
||||
| kuller |
|
||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 310 Регистрация: 15.11.2007 Репутация: нет Всего: нет |
Ну вот тебе пример добавления ЗАПИСИ в таблицу Список_блюд в БД kafe.mdb: (тут добавляемые данные вводятся в ТЕКСТБОКСЫ и также значения берутся с КОМБОБОКСОВ, по нажатию на кнопку происходит добавление данных)
P.S. using System.Data.OleDb Это сообщение отредактировал(а) kuller - 2.4.2009, 09:31 |
||||||
|
|||||||
| Vitkaz |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 90 Регистрация: 29.11.2006 Репутация: нет Всего: нет |
Изменил код, который дал kuller. Пробую пока ввести только ИНН.
При добавлениии ругается на строку con.Close(). Пишет следующее сообщение: System.Data.OleDb.OleDbException не обработано Message="Невозможно использовать ''; файл уже используется." |
|||
|
||||
| kuller |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 310 Регистрация: 15.11.2007 Репутация: нет Всего: нет |
Vitkaz, попробуйте заносить значения ни в 1 поле таблицы clients(InnCl), а во все и будьте внимательны с ТИПАМИ, из-за неправильного типа заносимых данных чаще всего и бывают ошибки!!!!
|
|||
|
||||
| Vitkaz |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 90 Регистрация: 29.11.2006 Репутация: нет Всего: нет |
Чтобы с преобразованиями типов не напутать, я создал таблицу всего с одним полем и попробовал добавить запись, но возникает та же ошибка.
|
|||
|
||||
| kuller |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 310 Регистрация: 15.11.2007 Репутация: нет Всего: нет |
Vitkaz, Ваше поле в которое Вы в данный момент пытаетесь добавить значение КАКОГО ТИПА???? |
|||
|
||||
| Vitkaz |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 90 Регистрация: 29.11.2006 Репутация: нет Всего: нет |
Тип nchar(10). У меня были проблемы с соединением, но теперь соединение устанавливается, но записи добавить не получается.
Решил добавить запись, используя SqlCommand, но не знаю, что писать после SqlCommand command = new SqlCommand(queryString, con);
Это сообщение отредактировал(а) Vitkaz - 2.4.2009, 21:42 |
|||
|
||||
| kuller |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 310 Регистрация: 15.11.2007 Репутация: нет Всего: нет |
Vitkaz, если Вы вставляете ТЕКСТ, то дорлно быть так записано в SQL-запросе:
'" + textBox1.Text + "', т.е. кавычки ОДИНАРНЫЕ затем ДВОЙНЫЕ . |
|||
|
||||
| Vitkaz |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 90 Регистрация: 29.11.2006 Репутация: нет Всего: нет |
Пробовал не помогает. |
|||
|
||||
| KelTron |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 745 Регистрация: 8.10.2006 Где: Красноярск Репутация: 5 Всего: 38 |
Но лучше использовать параметизированные запросы:
-------------------- Тысячами незримых нитей обвивает тебя Закон. Разрубишь одну - преступник. Десять - смертник. Все - Бог. Эвенгар Салладорский, основатель Школы Тьмы. |
||||
|
|||||
| Vitkaz |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 90 Регистрация: 29.11.2006 Репутация: нет Всего: нет |
KelTron, спасибо за рекомендацию. После учебы попробую.
Это сообщение отредактировал(а) Vitkaz - 3.4.2009, 07:13 |
|||
|
||||
| Vitkaz |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 90 Регистрация: 29.11.2006 Репутация: нет Всего: нет |
Если пишу так,
то ругается на строчку command.ExecuteNonQuery(); "Неправильный синтаксис около ключевого слова "Table"." Ещё пробовал описать CreateCommand(string queryString,string connectionString) в класее Program в Program.cs, не знаю как обратиться к CreateCommand с формы.
Это сообщение отредактировал(а) Vitkaz - 3.4.2009, 15:32 |
||||
|
|||||
| Idsa |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2086 Регистрация: 5.12.2006 Где: Томск Репутация: 15 Всего: 62 |
А у Вас точно есть таблицы Table? И если она даже есть, лучше взять ее в квадратные скобки:
, ибо Table - это зарезервированное слово. |
|||
|
||||
| Vitkaz |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 90 Регистрация: 29.11.2006 Репутация: нет Всего: нет |
Спасибо, Idsa! Причина была в этом.
|
|||
|
||||
| Vitkaz |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 90 Регистрация: 29.11.2006 Репутация: нет Всего: нет |
А если использовать параметизированные запросы, как KelTron посоветовал, нужно ли производить преобразования типов ?
|
|||
|
||||
| Idsa |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2086 Регистрация: 5.12.2006 Где: Томск Репутация: 15 Всего: 62 |
Vitkaz, провайдеры обычно умные, поэтому реализуют приведение типов... но, конечно, в разумных пределах.
|
|||
|
||||
| Vitkaz |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 90 Регистрация: 29.11.2006 Репутация: нет Всего: нет |
С добавлением всё получилось. Скажите пожалуйста, а как сделать refresh т.е. чтобы внесенные изменения отобразились в Grid`е после добавления ? Попробовал делать, как ранее делал в FoxPro: this.dataGridView1.Refresh();, но что-то не получается.
|
|||
|
||||
| KelTron |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 745 Регистрация: 8.10.2006 Где: Красноярск Репутация: 5 Всего: 38 |
Vitkaz, метод Refresh() заставляет грид перерисовать себя )
Как делать обновление грида зависит от того как ты биндишь к нему данные. Могу предположить, что в твоём случае подойдёт такой код:
-------------------- Тысячами незримых нитей обвивает тебя Закон. Разрубишь одну - преступник. Десять - смертник. Все - Бог. Эвенгар Салладорский, основатель Школы Тьмы. |
|||
|
||||
| Vitkaz |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 90 Регистрация: 29.11.2006 Репутация: нет Всего: нет |
На форме есть кнопки "Сохранить изменения" и "Удалить клиента", скажите пожалуйста:
1)Как после внесения изменений в сетке Grid и кликнув соответствующую кнопку, сохранить эти изменения в БД. 2)Как, выбрав строку в Grid`е и ---||---||---, удалить соответствующую запись из БД. Данные принадлежат одной таблице. Если нетрудно, скажите как проделать тоже самое, когда данные принадлежат нескольким таблицам. Надоел наверное с вопросами, понимаю что во многом можно разобраться самому, просто время ограничено. После сдачи сессии думаю заняться изучением .NET более полно. Это сообщение отредактировал(а) Vitkaz - 6.4.2009, 23:44 |
|||
|
||||
| Vitkaz |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 90 Регистрация: 29.11.2006 Репутация: нет Всего: нет |
Не стал создавать новую тему. Возникла следующая проблема: мне нужно сделать запрос и результат этого запроса добавить в таблицу. Я решил посмотреть содержимое запроса, поместив результат в TextBox, но при выполнении ругается на строку textBox13.Text = reader[0].ToString(); "Недопустимая попытка чтения при отсутствии данных."
Пробую выводить этот запрос в Grid, все нормально. Подскажите пожалуйста, что не так. |
|||
|
||||
| KelTron |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 745 Регистрация: 8.10.2006 Где: Красноярск Репутация: 5 Всего: 38 |
Перед чтением данных из датаридера нужно вызвать метод Read
если у тебя в результате возвращается множество записей то их все нужно читать в цикле:
Это сообщение отредактировал(а) KelTron - 13.4.2009, 06:58 -------------------- Тысячами незримых нитей обвивает тебя Закон. Разрубишь одну - преступник. Десять - смертник. Все - Бог. Эвенгар Салладорский, основатель Школы Тьмы. |
||||
|
|||||
| Vitkaz |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 90 Регистрация: 29.11.2006 Репутация: нет Всего: нет |
Понял. Спасибо!
|
|||
|
||||
| Vitkaz |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 90 Регистрация: 29.11.2006 Репутация: нет Всего: нет |
Заполняю Combobox, который зависит от выбранной строки в другом Combobox`е . Вот фрагмент кода.
Подскажите, как перед заполнением Combobox`а очистить его содержимое. Это сообщение отредактировал(а) Vitkaz - 26.4.2009, 15:00 |
|||
|
||||
| Vitkaz |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 90 Регистрация: 29.11.2006 Репутация: нет Всего: нет |
Уже нашел comboBox8.Items.Clear(); |
||||
|
|||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, stab, mr.DUDA, Exception. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Базы данных под .NET | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |