Форум программистов, компьютерный форум, киберфорум
Наши страницы
C#: Базы данных, ADO.NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.66/64: Рейтинг темы: голосов - 64, средняя оценка - 4.66
Stis-mag
0 / 0 / 0
Регистрация: 16.02.2012
Сообщений: 47
1

Добавление данных в базу через TextBox

17.02.2012, 11:41. Просмотров 12596. Ответов 18
Метки нет (Все метки)

Здравствуйте. Решил поупражняться с Ado.NET. Возник вопрос. Как добавлять через TextBox?
Я понял что нужно добавлять следующим образом: адресаTableAdapter.Insert("тут счетчик","тут адрес");
Счетчик должен сам заполняться? Или как мне добавлять если я не знаю значение счетчика?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.02.2012, 11:41
Ответы с готовыми решениями:

Кнопка добавление в базу данных из ComboBox и TextBox
private void button1_Click(object sender, EventArgs e) { ...

Создание БД и добавление данных через TextBox
Ребят, подскажите мне такую вещь: пишу приложение(Windows Forms), на нем...

Добавление в базу Sql через C#
using System; using System.Collections.Generic; using System.ComponentModel;...

Добавление данных видео, открытого из формы, в базу данных
Доброе время суток. Будьте добры подскажите, как сделать что бы в Visual...

Из textbox в базу данных Access
Есть форма, на ней расположены textbox'ы + кнопка "сохранить", нужно по нажатию...

18
Learx
1046 / 853 / 194
Регистрация: 31.03.2010
Сообщений: 2,490
17.02.2012, 18:25 2
Можно создать столбец автоинкрементный в базе данных и тогда можно обычным Command'ером вставлять строки в таблицу а-ля:

C#
1
2
3
4
5
6
7
DbConnection con = new DbConnection(connectionString);
con.Open();
 
DbCommand com = new DbCommand();
com.Connection = con;
com.CommandText = string.Format("Insert Into Table_name Value({0})", TextBox.Text);
com.ExecuteNonQuery();
Или как рекомендует мсдн через параметры:

C#
1
2
3
4
5
6
7
8
DbConnection con = new DbConnection(connectionString);
con.Open();
 
DbCommand com = new DbCommand();
com.Connection = con;
com.CommandText = "Insert Into Table_name Value(@newData)";
com.Parameters.Add("newData", DbType.varchar).Value = TextBox.Text;
com.ExecuteNonQuery();
Значение для инкрементного столбца не надо ставить - его подставит сама БД.

Или можно запросом (Select max(IndexColum) from TableName) и ExecuteScalar получить максимальное значение для твоего счетчика из БД, ручками увелисчить и соотвественно переделать приведенный в примере запросик.
1
Stis-mag
0 / 0 / 0
Регистрация: 16.02.2012
Сообщений: 47
17.02.2012, 19:20  [ТС] 3
C#
1
com.CommandText = string.Format("Insert Into `Адреса` Value({0})", textBox1.Text);
Таким способом не получается.
0
_katon_
384 / 240 / 20
Регистрация: 03.10.2011
Сообщений: 992
20.02.2012, 22:30 4
А что за СУБД. И у тебя вроде ошибка в запросе. Судя по запросу у тебя в таблице только одно поле. Кроме этого текстовые данные надо брать в одинарные ковычки.
Если СУБД MS SQL То:

C#
1
com.CommandText = "Insert Into Твоя_таблица (поле_1) Values(\'" + textBox1.Text + "\')";
Вот тебе пример из msdn

T-SQL
1
2
INSERT INTO Cities (Location)
VALUES ( CONVERT(Point, '12.3:46.2') );
0
Stis-mag
0 / 0 / 0
Регистрация: 16.02.2012
Сообщений: 47
21.02.2012, 10:11  [ТС] 5
База access. В таблице 2 поля. Первое счетчик, второе текстовое.
Меня интересует вопрос как вставить строку в таблицу с автоматической вставкой поля счетчик.
0
_katon_
384 / 240 / 20
Регистрация: 03.10.2011
Сообщений: 992
21.02.2012, 10:57 6
К сожалению никогда не работал с "ахсекс", но если в БД для ключевого поля установить автоэнкримент, то про него можно будет "забыть". Т.е. я полностью согласен с Learx!

Посмотрел синтаксис инструкции для твоей СУБД. Выглядит сл. образом:

SQL
1
2
INSERT INTO конечный_объект [(поле1[, поле2[, ...]])]
VALUES (значение1[, значение2[, ...])
Единственная поправка к моему коду это то что в аксесе для выделения строквых данных используется не одинарные ковычки, а двойные.

Так в чем проблема?
Нужно:
1. Для ключевого поля в таблице установить автоэнкримент (при добавлении записи каждый раз СУБД сама будет подставлять новое значение)
2. Написать правильно запрос на вставку данных (в изначальной версии запроса ошибка);

Это все что необходимо для вставки. Попробуй, если что-то не получится, то пиши. Еще было бы неплохо попробовать выполнить запрос в редакторе для написания запросов твоей СУБД. Это поможет более точно определить ошибку. В MS это Menegment Studio.
0
Stis-mag
0 / 0 / 0
Регистрация: 16.02.2012
Сообщений: 47
21.02.2012, 20:26  [ТС] 7
автоэнкримент включен, но все равно требует его ввод.
Вот так происходит добавление у меня в базе:
SQL
1
2
INSERT INTO `Адреса` (`IdРработника`, `Адрес`) 
VALUES (?, ?)
Когда делаю так:
C#
1
2
3
4
OleDbCommand com = new OleDbCommand();
com.Connection = con;
сom.CommandText = string.Format("INSERT INTO `Адреса` (`Адрес`) VALUES ({0})", textBox1.Text);
com.ExecuteNonQuery();
Ошибка:
Невозможно добавление или изменение записи. Для обеспечения целостности данных необходимо наличие связанной записи в таблице 'Работники'.
Когда так:
C#
1
2
3
4
OleDbCommand com = new OleDbCommand();
com.Connection = con;
com.CommandText = string.Format("INSERT INTO `Адреса` VALUES ({0})", textBox1.Text);
com.ExecuteNonQuery();
Ошибка:
Не совпадает число значений запроса и число результирующих полей.
Я вообще уже не знаю как сделать
0
_katon_
384 / 240 / 20
Регистрация: 03.10.2011
Сообщений: 992
22.02.2012, 01:32 8
Такое содержание ошибки:
Невозможно добавление или изменение записи. Для обеспечения целостности данных необходимо наличие связанной записи в таблице 'Работники'.
говорит о том, что поле IdHаботник не первичный ключ а вторичный))

Вообще странно как-то получается. Смотри если у тебя таблица 'Адреса', то судя по тому что я понял просматривая записи у тебя должны быть следующие поля:
1. idАдреса (ключевое поле для которого нужно установить автоэнкремент)
2. idРаботника (вторичный ключ на таблицу работников и если оно не может принимать значение NULL, то результат выполнения запроса выдаст указанную тобой ошибку)
3. Адрес (Текстовое поле в которое пользователь)

Судя по всему у тебя проблемы со структурой данных, а ошибка в запросе это всего лишь последствие))).

Вторая ошибка у тебя возникает потому что если не указать перечень полей для вставки, то тогда тебе необходимо в скобках после ключевого слова VALUES перечилсить ВСЕ поля в той последовательности в которой они указаны в таблице.
В общем содержание об ошибке об этом и говорит))
Не совпадает число значений запроса и число результирующих полей.
кстати тебе так не надо, ведь цель это задействовать автоэнкремент для ключевого поля таблицы.
Я практически уверен, что как ты и говорил у тебя два поля, только поле работник у тебя не ключевое)))
Думаю если ты внимательно просмотришь таблицу с четким пониманием того что есть первичный ключ, а что есть вторичный, то проблема решится.
0
Stis-mag
0 / 0 / 0
Регистрация: 16.02.2012
Сообщений: 47
22.02.2012, 18:46  [ТС] 9
Все в принципе решено. Чет не посмотрел толком что у меня там было. Аж позор мне (((
0
SpiritAT
3 / 3 / 0
Регистрация: 02.09.2011
Сообщений: 107
05.03.2012, 15:15 10
_katon_, я смотрю ты рулешь в базах )) а несложно помочь мне?
C#
1
comand.CommandText = "INSERT INTO  TABLE id (nom_fil) VALUES (\'"+Feli.Text+"\')";
база FoxPro пишет ошибку
0
Миниатюры
Добавление данных в базу через TextBox  
_katon_
384 / 240 / 20
Регистрация: 03.10.2011
Сообщений: 992
05.03.2012, 15:34 11
С FoxPro дело не имел... запрос у тебя скорее всего написан не правильно. Вот тебе на всякий случай шаблон:
C#
1
string sqlString = "INSERT INTO Название_таблицы (Название_поля_в_таблице) VALUES (Значение_для вставки)";
У тебя вместо "Название_таблицы" - TABLE id (что-то не то!)
1
SpiritAT
3 / 3 / 0
Регистрация: 02.09.2011
Сообщений: 107
05.03.2012, 15:37 12
Цитата Сообщение от _katon_ Посмотреть сообщение
С FoxPro дело не имел... запрос у тебя скорее всего написан не правильно. Вот тебе на всякий случай шаблон:
C#
1
string sqlString = "INSERT INTO Название_таблицы (Название_поля_в_таблице) VALUES (Значение_для вставки)";
я по нему и делал ((( серовно не катит
0
_katon_
384 / 240 / 20
Регистрация: 03.10.2011
Сообщений: 992
05.03.2012, 15:38 13
Цитата Сообщение от _katon_ Посмотреть сообщение
У тебя вместо "Название_таблицы" - TABLE id (что-то не то!)
Посмотри еще раз!
0
SpiritAT
3 / 3 / 0
Регистрация: 02.09.2011
Сообщений: 107
05.03.2012, 15:48 14
Цитата Сообщение от _katon_ Посмотреть сообщение
Посмотри еще раз!
Table стоит потому что FoxPro требует показать куда имена вставка идет, типа в таблицу имя её ID даже замена имени таблице роль не сыграет если что(((((
0
_katon_
384 / 240 / 20
Регистрация: 03.10.2011
Сообщений: 992
05.03.2012, 17:40 15
Первый раз сегодня встречаюсь с FoxPro как диалектом SQL! Посему, чтобы не "пудрить" тебе мозг скажу, что качественного ответа от меня ты не получишь.
Но исходя из моего опыта работы с различными СУБД такие инструкции как SELECT/INSERT/UPDATE практически не отличаются на разных СУБД (голословно потому, что ограничено моими познаниями). Я все равно склоняюсь к той версии, что запрос написан неправильно и ключевому полю TABLE там делать нечего (опять же голословно - могу и ошибаться).
В пользу моей версии также говорит тот факт, что ID в общем случае это название ключевого поля но никак не таблицы...
Кроме того я просмотрел около полу десятка ссылок на "INSERT INTO" в контексте FoxPro и нигде не встретил указанного тобой способа добавления записи в таблицу.
Кстати, на мой взгляд запись в реляционных БД может вставляться только в Таблицу и никуда более, а это еще лишний раз убеждает меня что ключевое слово Table, указывающее что вставка должна происходить именно в это поле - это не очень хорошая идея исходя из банальной логики.
Возможно ты просто сделал ошибочные выводы когда читал текст ошибки.
Вот такие мои рассуждения! Поскольку с FoxPro я практически никогда не сталкивался, то советую тебе обратится к человеку, который действительно понимает, что и как надо писать на этом диалекте.
1
SpiritAT
3 / 3 / 0
Регистрация: 02.09.2011
Сообщений: 107
05.03.2012, 21:55 16
Цитата Сообщение от _katon_ Посмотреть сообщение
Первый раз сегодня встречаюсь с FoxPro как диалектом SQL! Посему, чтобы не "пудрить" тебе мозг скажу, что качественного ответа от меня ты не получишь.
Но исходя из моего опыта работы с различными СУБД такие инструкции как SELECT/INSERT/UPDATE практически не отличаются на разных СУБД (голословно потому, что ограничено моими познаниями). Я все равно склоняюсь к той версии, что запрос написан неправильно и ключевому полю TABLE там делать нечего (опять же голословно - могу и ошибаться).
В пользу моей версии также говорит тот факт, что ID в общем случае это название ключевого поля но никак не таблицы...
Кроме того я просмотрел около полу десятка ссылок на "INSERT INTO" в контексте FoxPro и нигде не встретил указанного тобой способа добавления записи в таблицу.
Кстати, на мой взгляд запись в реляционных БД может вставляться только в Таблицу и никуда более, а это еще лишний раз убеждает меня что ключевое слово Table, указывающее что вставка должна происходить именно в это поле - это не очень хорошая идея исходя из банальной логики.
Возможно ты просто сделал ошибочные выводы когда читал текст ошибки.
Вот такие мои рассуждения! Поскольку с FoxPro я практически никогда не сталкивался, то советую тебе обратится к человеку, который действительно понимает, что и как надо писать на этом диалекте.
А какую литру ты читал можешь дать и мне сылочку?
0
_katon_
384 / 240 / 20
Регистрация: 03.10.2011
Сообщений: 992
05.03.2012, 22:06 17
Читал ссылки по поисковому запросу. По правилам форума я тебе не должен отправлять к поисковым системам, но тут ты сам просишь. Набери в гугле "FoxPro INSERT INTO", "FoxPro запрос на вставку" и читай.
0
Stis-mag
0 / 0 / 0
Регистрация: 16.02.2012
Сообщений: 47
09.03.2012, 16:01  [ТС] 18
Возник вопрос как добавлять через ричтекстбокс.
Например таблица следующего вида скрин 1
В ричтекстбоксе делаю следующие скрин 2
Как получить айдишник модели 321?
Таким способом comboBox1.SelectedIndex будет 2, а надо 6
0
Миниатюры
Добавление данных в базу через TextBox   Добавление данных в базу через TextBox  
nio
5966 / 3372 / 335
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
09.03.2012, 16:24 19
Stis-mag, сначала обрати внимание на свойство, которое выделено на втором скрине, а потом используй comboBox1.SelectedValue вместо comboBox1.SelectedIndex
1
09.03.2012, 16:24
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.03.2012, 16:24

Добавление записей в БД через textbox
подскажите что не так, не добавляет запись в таблицу бд

Добавление данных в базу
одскажите пожалуста, прочитал много тем, форумов по этому вопросу и про С# в...

Добавление данных в базу
Подскажите как передать значение из TextBox код нажатия кнопки- string...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru