Форум программистов, компьютерный форум, киберфорум
C#: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/50: Рейтинг темы: голосов - 50, средняя оценка - 4.86
95 / 95 / 15
Регистрация: 11.11.2010
Сообщений: 424

Неправильный синтаксис около конструкции "{".

01.10.2011, 22:40. Показов 9892. Ответов 19
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый вечер! Работаю с SQL сервер.
C#
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
using System.Data;
using System.Data.SqlClient;
using System.Windows.Forms;
using System.Diagnostics;
 
namespace BD_3
{
    public partial class Form1 : Form
    {
        string[] sql_com = { "SELECT Отдел, Название, Начальник From Otdels", 
                                   "SELECT ID, ФИО, Должность, [Дата рождения], Зарплата From Цех",
                                   "SELECT ID, ФИО, Должность, [Дата рождения], Зарплата From Безопасность",
                                   "SELECT ID, ФИО, Должность, [Дата рождения], Зарплата From Бухгалтерия",
                                   "SELECT ID, ФИО, Должность, [Дата рождения], Зарплата From Перевозки" };
        Form2 form2_cex;
        Form3 form3_bez;
        Form4 form4_buh;
        Form5 form5_per;
        SqlConnection con;
        SqlCommand com;
        SqlDataAdapter adapt;
        DataTable table;
        public Form1()
        {
            InitializeComponent();
            string connectionString = @"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Zavod.mdf;Integrated Security=True;";
            con = new SqlConnection(connectionString);
            com = con.CreateCommand();
            com.CommandText = sql_com[0];
            adapt = new SqlDataAdapter();
            adapt.SelectCommand = com;
            table = new DataTable();
            con.Open();
            adapt.Fill(table);
            dataGridView1.DataSource = table;
            con.Close();
        }
        private void dataGridView1_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
        {
            switch (e.RowIndex)
            {
                case 0:
                    form2_cex = new Form2(sql_com[1]);
                    form2_cex.Show();
                    break;
                case 1:
                    form3_bez = new Form3(sql_com[2]);
                    form3_bez.Show();
                    break;
                case 2:
                    form4_buh = new Form4(sql_com[3]);
                    form4_buh.Show();
                    break;
                case 3:
                    form5_per = new Form5(sql_com[4]);
                    form5_per.Show();
                    break;
            }
        }
 
        private void button1_Click(object sender, System.EventArgs e)
        {
            Process.Start(@"F:\курс\BD1\BD_1\BD_1\bin\Release\BD_1.exe");
        }
 
        private void button2_Click(object sender, System.EventArgs e)
        {
            Process.Start(@"F:\курс\BD1\BD_2\BD_2\bin\Release\BD_2.exe");
        }
 
        private void button3_Click(object sender, System.EventArgs e)
        {
            con.Open();
            com = con.CreateCommand();
            com.CommandText = "UPDATE Otdels SET Отдел=" + dataGridView1.Columns["Отдел"] + ", Название=" + dataGridView1.Columns["Название"] + ", Начальник=" + dataGridView1.Columns["Начальник"];
            adapt.UpdateCommand = com;
            adapt.Update((DataTable)dataGridView1.DataSource); //здесь ругается
            con.Close();
        }
    }
}
Подскажите что не так в команде Update? Или может что то забыл?
Спасибо!
1
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
01.10.2011, 22:40
Ответы с готовыми решениями:

Неправильный синтаксис около конструкции GO
Добрый день, сложилась такая ситуация. Есть функция. которая берет данные из таблицы на SQL server и записывает в DataGridView. ...

Неправильный синтаксис около конструкции
Additional information: Неправильный синтаксис около конструкции "908-33-12-12". В чем может быть проблема? Может запрос как-то не так...

Неправильный синтаксис около конструкции
string connection = ConfigurationManager.ConnectionStrings.ConnectionString; SqlConnection con = new...

19
Level 2
 Аватар для FakiR
401 / 275 / 48
Регистрация: 22.11.2010
Сообщений: 785
Записей в блоге: 1
01.10.2011, 22:55
Ещё в конец нужно добавить WHERE вроде.
0
95 / 95 / 15
Регистрация: 11.11.2010
Сообщений: 424
01.10.2011, 22:58  [ТС]
Но у меня как таковых условий нет.. Мне нужно все столбцы заапдейтить.
0
Level 2
 Аватар для FakiR
401 / 275 / 48
Регистрация: 22.11.2010
Сообщений: 785
Записей в блоге: 1
01.10.2011, 23:09
Каким именно образом он не работает?

Добавлено через 8 минут
Кстати, может кавычек не хватает? Это ведь строки наверно.
0
95 / 95 / 15
Регистрация: 11.11.2010
Сообщений: 424
01.10.2011, 23:15  [ТС]
Выходит, доходя до этой строки.
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
01.10.2011, 23:19
Добавьте между 76 и 77 строчками
C#
1
Console.WriteLine(adapt.UpdateCommand);
И выложьте результат сюда.
1
95 / 95 / 15
Регистрация: 11.11.2010
Сообщений: 424
01.10.2011, 23:27  [ТС]
Чего вы хотите этим добиться?
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
01.10.2011, 23:30
Цитата Сообщение от Guliash Посмотреть сообщение
Чего вы хотите этим добиться?
Уверенности, что вот это:
C#
1
"UPDATE Otdels SET Отдел=" + dataGridView1.Columns["Отдел"] + ", Название=" + dataGridView1.Columns["Название"] + ", Начальник=" + dataGridView1.Columns["Начальник"];
На выходе дает нормальный sql-запрос, так как мне кажется, что он не нормален.
Из-за которого, скорее всего, у вас и происходит вылет.
1
95 / 95 / 15
Регистрация: 11.11.2010
Сообщений: 424
01.10.2011, 23:38  [ТС]
CommandText = "UPDATE Otdels SET Отдел=DataGridViewTextBoxColumn { Name=Отдел, Index=0 }, Название=DataGridViewTextBoxColumn { Name=Название, Index=1 }, Начальник=DataGridViewTextBoxColumn { Name=Начальник, Index=2 }"
Консоль он мне не открыл=)Но с помощью поинт бреков посмотрел чему равно значение команды..
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
01.10.2011, 23:44
Вот и ваша проблема.
DataGridViewTextBoxColumn { Name=Отдел, Index=0 }
Отдел, я так понимаю, называется немного иначе

Дело в том, что вы перегоняете в строку не значение ячейки в определенной колонке или название колонки, а сам объект DatGridColumn.
К тому же у вас не хватает одинарных кавычек перед и после текстового параметра.

Цитата Сообщение от Guliash Посмотреть сообщение
Консоль он мне не открыл
Во время дебага ткните в View -> Output
1
95 / 95 / 15
Регистрация: 11.11.2010
Сообщений: 424
01.10.2011, 23:45  [ТС]
Что можете посоветовать по поводу исправления?
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
01.10.2011, 23:48
А что должно происходить по клику кнопки?
0
95 / 95 / 15
Регистрация: 11.11.2010
Сообщений: 424
01.10.2011, 23:49  [ТС]
Должно произойти сохранение изменений из DataGridView в исходную базу данных.
0
Level 2
 Аватар для FakiR
401 / 275 / 48
Регистрация: 22.11.2010
Сообщений: 785
Записей в блоге: 1
02.10.2011, 00:01
C#
1
dataGridView1.Columns["Отдел"][номер строки].Value
Ну так вот в таком виде нужно писать значения вроде.
0
95 / 95 / 15
Регистрация: 11.11.2010
Сообщений: 424
02.10.2011, 00:02  [ТС]
Но тогда будет отдельно для какой то ячейки.. А если для всей таблицы?
0
Level 2
 Аватар для FakiR
401 / 275 / 48
Регистрация: 22.11.2010
Сообщений: 785
Записей в блоге: 1
02.10.2011, 00:02
А нет, видимо я не правильно понял.
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
02.10.2011, 00:18
Лучше всего сделать привязку к базе данных через BindingSource.
Немножко изменю конструктор вашей формы и добавлю объект BindingSource:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public Form1()
        {
            InitializeComponent();
            string connectionString = @"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Zavod.mdf;Integrated Security=True;";
            con = new SqlConnection(connectionString);
            com = con.CreateCommand();
            com.CommandText = sql_com[0];
            adapt = new SqlDataAdapter();
            adapt.SelectCommand = com;
            table = new DataTable();
            con.Open();
            adapt.Fill(table);
 
           // Вставим объект BindingSource между адаптером и контролом
            BindingSource bindingSource = new BindingSource();
            bindingSource.DataSource = table;
            dataGridView1.DataSource = bindingSource;
 
            // Установка соединения с базой - довольно трудоемкий процесс, потому не стоит открывать/закрывать его при каждом обращении.
            // Программа запустилась - открыли. Программа закрылась - закрыли. 
            //con.Close();
        }
Вот. После этого маленького изменения достаточно при клике по кнопке вызвать
C#
1
adapt.Update(table);
И изменения сохранятся в базе.
2
95 / 95 / 15
Регистрация: 11.11.2010
Сообщений: 424
02.10.2011, 17:44  [ТС]
И так не хочет.. Ладно=) Всем спасибо=) Буду дальше сам копать=)

Добавлено через 7 часов 55 минут
После продолжительных мучений, понял, что без вас не смогу
C#
1
2
3
4
5
6
7
8
9
10
11
        private void button3_Click(object sender, System.EventArgs e)
        {
            com = con.CreateCommand();
            com.CommandText = "UPDATE Otdels SET Отдел =@Отдел, Название=@Название, Начальник=@Начальник WHERE Отдел=@_Отдел";
            com.Parameters.Add("@Отдел", SqlDbType.Int, 4,"Отдел");
            com.Parameters.Add("@Название", SqlDbType.Char, 15,"Название");
            com.Parameters.Add("@Начальник", SqlDbType.Char, 15, "Начальник");
            com.Parameters.Add("@_Отдел", SqlDbType.Int, 4, "Отдел");
            adapt.UpdateCommand = com;
            adapt.Update(set,"Отделы");
        }
Тут я как понимаю он загоняет изменения только в DataSet, ибо в БД изменения не фиксируется. И ещё один момент, выходит ошибка если нету WHERE Отдел=@_Отдел. Запутался вообщем.. Я вообще в правильном направлении?
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
02.10.2011, 18:56
Цитата Сообщение от Guliash Посмотреть сообщение
C#
1
2
3
4
com.Parameters.Add("@Отдел", SqlDbType.Int, 4,"Отдел");
 com.Parameters.Add("@Название", SqlDbType.Char, 15,"Название");
 com.Parameters.Add("@Начальник", SqlDbType.Char, 15, "Начальник");
 com.Parameters.Add("@_Отдел", SqlDbType.Int, 4, "Отдел");
Почему везде присваиваются значения типа string, а SQL типы - int и char?
0
95 / 95 / 15
Регистрация: 11.11.2010
Сообщений: 424
02.10.2011, 22:27  [ТС]
а 4 параметр это разве значение? Это вроде написано имя столбца источника.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
02.10.2011, 22:27
Помогаю со студенческими работами здесь

Неправильный синтаксис около конструкции Login
Добрый день, обе конструкции выдают ошибку, дня 3 не могу понять где ошибка. подскажите пожалуйста кто может. mssql 2008 sp2 visual...

Неправильный синтаксис около конструкции "nvarchar
Есть вот такой код, типы данных я не напутал. Суть проги в том, что у меня подключена бд ms sql и windows form, после ввода в форме в...

Неправильный синтаксис около конструкции ( command.ExecuteNonQuery();)
что делаю не так? вылезает ошибка : неправильныый синтаксис около конструкции ( command.ExecuteNonQuery();) using System; using...

Создание параметризированных запросов: Неправильный синтаксис около конструкции
Доброго всем времени суток. Создал три параметризированых запроса UPDATE, INSERT и DELETE, ISERT работает нормально, а вот два остальных не...

Ошибка System.Data.SqlClient.SqlException неправильный синтаксис около конструкции
system.data.sqlclient.sqlexception неправильный синтаксис около конструкции string strIP1 = ""; System.Net.IPHostEntry...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при создании или изменении элементов справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи электронной. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru