Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.79/78: Рейтинг темы: голосов - 78, средняя оценка - 4.79
4 / 4 / 0
Регистрация: 10.10.2009
Сообщений: 301

Добавление столбца в таблицу БД

31.10.2010, 11:13. Показов 16787. Ответов 63
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброе утро.
Подскажите пожалуйста как программно добавить столбец в таблицу БД?
C#
1
katalogPlanDataSet.Oborud2.Columns.Add();
Так не ругается но и не добавляет, видимо потому что надо задавать все свойства.

Добавлено через 1 час 23 минуты
Вот так сделал, не ругается:
C#
1
katalogPlanDataSet.Oborud2.Columns.Add("Столбец", System.Type.GetType("System.String"));
После первого нажатия ничего не происходит. Если нажимаю добавить второй раз, то вылезает ошибка что такой столбце уже существует. А как сделать чтобы он появлялся для работы с ним=)
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
31.10.2010, 11:13
Ответы с готовыми решениями:

Добавление столбца в таблицу
Необходимо добавить столбец nalich в таблицу Sklad, если он не существует. При запуске выдаёт ошибку: "ошибочная конструкция SQL;...

Добавление нового столбца в таблицу БД
ну вообщем ситуация такая: есть база данных на интербэйзе и прога для нее написанная на дельфях....все работает нормально...но возникает...

Программное добавление столбца в таблицу
На форуме уже рассмотрена тема программного создания таблицы: procedure TForm5.Button1Click(Sender: TObject); begin ...

63
 Аватар для nio
6050 / 3460 / 336
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
04.11.2010, 14:20
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от piloterist Посмотреть сообщение
Раньше при повторном нажатии ошибка такая вылетала
Нельзя 2 раза создать один столбец

Цитата Сообщение от piloterist Посмотреть сообщение
А что теперь сделать чтобы этот столбец появился в DataGridView?
Нужно добавлять столбец в соответствующую таблицу в датасет и соответсвенно в DataGridView
0
4 / 4 / 0
Регистрация: 10.10.2009
Сообщений: 301
04.11.2010, 14:40  [ТС]
Дописал добавление столбца в DataGridView. Только в БД его все равно нет.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 private void button4_Click(object sender, EventArgs e)
        {
            OleDbCommand dcom = new OleDbCommand();
 
            dcom.CommandText = "ALTER TABLE katalogPlanDataSet.Oborud2 (pole char(10))";
            
            try
            {
              dcom.ExecuteNonQuery();
            }
            catch
            {
            }
            dataGridView1.Columns.Add("pole", "headerText");
            oborud2TableAdapter.Update(katalogPlanDataSet.Oborud2);
        }
0
 Аватар для nio
6050 / 3460 / 336
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
04.11.2010, 14:44
Цитата Сообщение от piloterist Посмотреть сообщение
Только в БД его все равно нет
Запрос на редактирование (добавление столбца) таблицы неверный
0
4 / 4 / 0
Регистрация: 10.10.2009
Сообщений: 301
04.11.2010, 14:53  [ТС]
А как правильно?
Попробовал вот так
C#
1
dcom.CommandText = "ALTER TABLE Employees ADD COLUMN pole CHAR(10)";
Нашел на форуме вот такое сообщение:
Вот код для добавления столбца
C#
1
2
3
4
5
6
7
8
9
10
oleCon.Open();
OleDbCommand addcolumncomd = oleCon.CreateCommand();
addcolumncomd.CommandText = "ALTER TABLE" + " t1 " + "ADD " + " column2" + " string DEFAULT FALSE";
addcolumncomd.ExecuteNonQuery();
oleCon.Close();
 
// Это сделано для обновления инфы в dataGridView ( dataGridView связан с DBSet.Tables["t1"] )
DBSet.Clear();
DBAdapter.Fill(DBSet, "t1");
// работает правильно - в dataGridView появляется новый столбец "column2"
Так ругается на строку DBAdapter.Fill(DBSet, "t1"); говорит токо 1 параметр может быть
0
 Аватар для nio
6050 / 3460 / 336
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
04.11.2010, 15:08
Вот пример из MSDN
SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
ALTER TABLE [ database_name . [ schema_name ] . | schema_name . ] TABLE_NAME 
{ 
    ALTER COLUMN column_name 
    { 
        [ type_schema_name. ] type_name [ ( { PRECISION [ , scale ] 
            | MAX | xml_schema_collection } ) ] 
        [ COLLATE collation_name ] 
        [ NULL | NOT NULL ] 
    | {ADD | DROP } { ROWGUIDCOL | PERSISTED | NOT FOR REPLICATION}
    } 
    | [ WITH { CHECK | NOCHECK } ] ADD 
    { 
        <column_definition>
      | <computed_column_definition>
      | <table_constraint> 
    } [ ,...n ]
    | DROP 
    { 
        [ CONSTRAINT ] constraint_name 
        [ WITH ( <drop_clustered_constraint_option> [ ,...n ] ) ]
        | COLUMN column_name 
    } [ ,...n ] 
    | [ WITH { CHECK | NOCHECK } ] { CHECK | NOCHECK } CONSTRAINT 
        { ALL | constraint_name [ ,...n ] } 
    | { ENABLE | DISABLE } TRIGGER 
        { ALL | trigger_name [ ,...n ] }
    | SWITCH [ PARTITION source_partition_number_expression ]
        TO target_table 
        [ PARTITION target_partition_number_expression ]
}
Изменяет определение таблицы путем изменения, добавления или удаления столбцов и ограничений, переназначения секций, а также отключения или включения ограничений и триггеров

Добавлено через 4 минуты
Цитата Сообщение от piloterist Посмотреть сообщение
А как правильно?
Почитай книгу по SQL SERVER, там ответ с примерами
0
4 / 4 / 0
Регистрация: 10.10.2009
Сообщений: 301
28.11.2010, 15:04  [ТС]
Привет.
Не понимаю что не так делаю, зависает при запуске:
C#
1
2
3
4
5
6
            OleDbConnection oleCon = new OleDbConnection("PROVIDER=SQLOLEDB;server=SQLEXPRESS ;Initial Catalog=PensionDB;User Id=piloterist;Password=790;");
            oleCon.Open();
            OleDbCommand dcom = oleCon.CreateCommand();
            dcom.CommandText =   "ALTER TABLE" + "katalogPlanDataSet.Oborud2" +"ADD " + "colname" + " bit DEFAULT FALSE";
            dcom.ExecuteNonQuery();
            oleCon.Close();
Чего-то не правильно с коннектом наверно.
0
 Аватар для nio
6050 / 3460 / 336
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
28.11.2010, 15:46
piloterist, твой запрос в резултате сложения строк выглядит так: "ALTER TABLEkatalogPlanDataSet.Oborud2ADD colname bit DEFAULT FALSE". Как по-твоему он должен отработать?
0
4 / 4 / 0
Регистрация: 10.10.2009
Сообщений: 301
28.11.2010, 16:11  [ТС]
Цитата Сообщение от nio Посмотреть сообщение
piloterist, твой запрос в резултате сложения строк выглядит так: "ALTER TABLEkatalogPlanDataSet.Oborud2ADD colname bit DEFAULT FALSE". Как по-твоему он должен отработать?
Поставил пробелы, ничего не изменилось=(
0
10 / 10 / 4
Регистрация: 27.04.2010
Сообщений: 122
28.11.2010, 22:23
А такой каталог есть PensionDB? И в каталоге PensionDB есть katalogPlanDataSet.Oborud2? Попробуй.
C#
1
2
3
4
5
6
7
OleDbConnection oleCon = new OleDbConnection("PROVIDER=SQLOLEDB;server=SQLEXPRESS ;Initial Catalog=PensionDB;User Id=piloterist;Password=790;");
            oleCon.Open();
            OleDbCommand dcom = new OleDbCommand();
            dcom.Connection=oleCon;
            dcom.CommandText =   "ALTER TABLE katalogPlanDataSet.Oborud2 ADD pole1 int DEFAULT 0";
            dcom.ExecuteNonQuery();
            oleCon.Close();
У пользователя piloterist есть права на изменения БД?
0
 Аватар для Lucius Kain
129 / 129 / 22
Регистрация: 10.11.2010
Сообщений: 313
28.11.2010, 22:43
piloterist, katalogPlanDataSet - это схема? Если нет, то пишется так
T-SQL
1
alter table database.shema.table_name add column_name int not null default 0
Схема чаще всего dbo
T-SQL
1
ALTER TABLE katalogPlanDataSet.dbo.Oborud2 ADD pole1 int DEFAULT 0
0
4 / 4 / 0
Регистрация: 10.10.2009
Сообщений: 301
29.11.2010, 07:23  [ТС]
Цитата Сообщение от Serg_1986 Посмотреть сообщение
А такой каталог есть PensionDB? И в каталоге PensionDB есть katalogPlanDataSet.Oborud2? Попробуй.
C#
1
2
3
4
5
6
7
OleDbConnection oleCon = new OleDbConnection("PROVIDER=SQLOLEDB;server=SQLEXPRESS ;Initial Catalog=PensionDB;User Id=piloterist;Password=790;");
            oleCon.Open();
            OleDbCommand dcom = new OleDbCommand();
            dcom.Connection=oleCon;
            dcom.CommandText =   "ALTER TABLE katalogPlanDataSet.Oborud2 ADD pole1 int DEFAULT 0";
            dcom.ExecuteNonQuery();
            oleCon.Close();
У пользователя piloterist есть права на изменения БД?
Я может не очень понял что под каталогом имеется ввиду. Я написал название базы данных. а Oborud2 это таблица этой базы данных.
0
 Аватар для Lucius Kain
129 / 129 / 22
Регистрация: 10.11.2010
Сообщений: 313
29.11.2010, 10:03
C#
1
2
3
4
5
6
7
OleDbConnection oleCon = new OleDbConnection("PROVIDER=SQLOLEDB;server=SQLEXPRESS ;Initial Catalog=PensionDB;User Id=piloterist;Password=790;"); 
oleCon.Open(); 
OleDbCommand dcom = new OleDbCommand(); 
dcom.Connection=oleCon; 
dcom.CommandText = "ALTER TABLE katalogPlanDataSet.dbo.Oborud2 ADD pole1 int DEFAULT 0"; 
dcom.ExecuteNonQuery(); 
oleCon.Close();
Вот так
0
4 / 4 / 0
Регистрация: 10.10.2009
Сообщений: 301
29.11.2010, 15:33  [ТС]
Цитата Сообщение от Lucius Kain Посмотреть сообщение
C#
1
2
3
4
5
6
7
OleDbConnection oleCon = new OleDbConnection("PROVIDER=SQLOLEDB;server=SQLEXPRESS ;Initial Catalog=PensionDB;User Id=piloterist;Password=790;"); 
oleCon.Open(); 
OleDbCommand dcom = new OleDbCommand(); 
dcom.Connection=oleCon; 
dcom.CommandText = "ALTER TABLE katalogPlanDataSet.dbo.Oborud2 ADD pole1 int DEFAULT 0"; 
dcom.ExecuteNonQuery(); 
oleCon.Close();
Вот так
Все равно зависает при нажатии кнопки.
Сейчас вот так:
C#
1
2
3
4
5
6
7
            OleDbConnection oleCon = new OleDbConnection("PROVIDER=SQLOLEDB;server=SQLEXPRESS; Initial Catalog=KatalogPlan; User Id=piloterist; Password=;");
            oleCon.Open();
            OleDbCommand dcom = oleCon.CreateCommand();
            dcom.CommandText =   "ALTER TABLE Oborud2 ADD pole1 int DEFAULT 0";
            dcom.ExecuteNonQuery();
            oleCon.Close();
           oborud2TableAdapter.Update(katalogPlanDataSet.Oborud2);
KatalogPlan - название базы данных
Oborud2- название таблицы
При запуске SQL Managment studio у меня следующие параметры:
serverName PILOTERIST\SQLEXPRESS
UserName PILOTERIST\piloterist
password пусто
Может также надо в коннекте писать?
0
10 / 10 / 4
Регистрация: 27.04.2010
Сообщений: 122
30.11.2010, 09:16
попробуй вместо запроса на alter выполнить запрос выбоки select к этой таблице
C#
1
2
dcom.CommandText = "select * from Oborud2"; 
dcom.ExecuteReader();//dcom.ExecuteNonQuery();
Опять же права для пользователя piloterist, может у него нет прав на изменение таблиц.
0
4 / 4 / 0
Регистрация: 10.10.2009
Сообщений: 301
30.11.2010, 19:16  [ТС]
Одна фигня зависает.... Я думаю что-то с коннектом неправильно. у piloterist есть права так как он единственный создатель и пользователь БД.
0
4 / 4 / 0
Регистрация: 10.10.2009
Сообщений: 301
01.12.2010, 21:27  [ТС]
Ну народ подскажите пожалуйста, я скоро повешусь =(.
Почему зависает =( что в подключении не так?
C#
1
2
3
4
5
6
7
            OleDbConnection oleCon = new OleDbConnection("PROVIDER=SQLOLEDB; server=SQLEXPRESS; Initial Catalog=KatalogPlan; User id=piloterist");
            oleCon.Open();
            OleDbCommand dcom = oleCon.CreateCommand();
            dcom.CommandText =   "ALTER TABLE dbo.Oborud2 ADD тест nchar(10) NULL";
            dcom.ExecuteNonQuery();
            oleCon.Close();
           oborud2TableAdapter.Update(katalogPlanDataSet.Oborud2);
Посмотрите на скриншоте параметры подключения.
Миниатюры
Добавление столбца в таблицу БД  
0
 Аватар для nio
6050 / 3460 / 336
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
01.12.2010, 22:35
а где зависает на oleCon.Open(); или dcom.ExecuteNonQuery(); ?
0
4 / 4 / 0
Регистрация: 10.10.2009
Сообщений: 301
03.12.2010, 08:10  [ТС]
Цитата Сообщение от nio Посмотреть сообщение
а где зависает на oleCon.Open(); или dcom.ExecuteNonQuery(); ?
зависает на oleCon.Open();
0
 Аватар для nio
6050 / 3460 / 336
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
05.12.2010, 23:00
Цитата Сообщение от piloterist Посмотреть сообщение
зависает на oleCon.Open();
Посмотри строку подключения через udl-файл, мне кажется дело в ней.
0
4 / 4 / 0
Регистрация: 10.10.2009
Сообщений: 301
06.12.2010, 07:57  [ТС]
Цитата Сообщение от nio Посмотреть сообщение
Посмотри строку подключения через udl-файл, мне кажется дело в ней.
А можно поподробнее пожалуйста, это где файл найти?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
06.12.2010, 07:57

Добавление нового столбца в таблицу
Adoquery1.close; Adoquery1.sql; Adoquery1.sql.add(alter table KTZ add column'+quotedstr(edit1.text)+'string'); Adoquery1.execsql; ...

Добавление нового столбца в таблицу БД
Есть БД Access 2007. Никак не могу найти добавления нового столбца в таблицу,т.е при нажатии на кнопочку можно было задать имя столбца и...

Запрос на добавление столбца в таблицу
вот такой запрос нужно сделать,по поводу добавления строки я разобрался а вот столбец никак не могу вывести,подскажите как

Программное добавление столбца в таблицу
Возможно ли с помощью программного кода добавить столбец в таблицу?Если возможно, то как?

Добавление столбца в таблицу с изменяющейся структурой
Добрый день, уважаемые форумчане. Подскажите пожалуйста по следующему вопросу... Есть табличка, которая состоит из двух частей,...


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Море в объективе
kumehtar 06.07.2026
Хотел написать много проникновенных слов, но передумал. Оно само - говорит. Кто слышит тот слышит.
Оказывается, Unreal Engine позволяет качество на порядки выше, чем было в Lineedge
Etyuhibosecyu 05.07.2026
Жаль, конечно, что я не узнал об этом, пока Lineedge существовала, а то бы Noname2331 написал, что волки превращаются в пиксельную кашу, а я бы его попросил скачать какую-нибудь бриллиантовую или Pro. . .
Doom для терминала без стрельбы и монстров. 3D Raycasting на ascii.
dcc0 05.07.2026
Попросил нейронную сеть deepai. org написать рейкастинг 3D с библиотекой ncurses для Linux. Чтобы можно было ходить на стрелочки. Чтобы стены были отрисованы символами. Справилась. Первый вариант. . .
Установка статуса документа по условию
Maks 05.07.2026
Алгоритм из решения ниже реализован на нетиповом документе "НарядПутевка" разработанного в КА2. Задача: в табличной части "Материалы" документа при записи автоматически устанавливать статус. . .
Сезонность и суточность закисления почв
anaschu 04.07.2026
200 часов это все равно моловато. Есть ситуации, но нестандартные, когда смена происходит за 5 лет. Но обычно это 50 лет и более. Наверное, закисление почвы происходит сезонно в средней. . .
В чем ценность человеческого опыта в глобальном смысле?
kumehtar 03.07.2026
Возможно, ценность человека не в том, что он однажды достигает мудрости, а в том, что он становится носителем карты пути. Он знает не только истину, но и последовательность внутренних изменений,. . .
интеграция AnyLogic с самописным REST API и переход на Odoo
anaschu 03.07.2026
Успешная интеграция AnyLogic с самописным REST API и переход на промышленную Odoo WMS Сегодня проделал огромный путь от простой симуляции физических процессов до построения полноценной. . .
Поиск всех путей на ориентированном графе. Linux
dcc0 02.07.2026
Переработка старого кода из моей статьи. Через несколько переработок от PHP кода к C89 (надеюсь, 89). Но довольно запутанно получилось. Код для Linux. Но если убрать time и то, что с ним. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru