Меню

Ошибка неправильный синтаксис около конструкции

  • Remove From My Forums

 none

Неправильный синтаксис около конструкции «)» ?

  • Общие обсуждения

  • Всем привет, возник вопрос по разработке приложений с помощью ASP.NET

    Проблема в этой ошибке

     SqlDataSource1.DataBind();
    GridView2.DataBind(); — Неправильный синтаксис около конструкции «)».
    Literal3.Text = «Всего найдено — » + GridView2.Rows.Count.ToString();

    Подскажите пожалуйста как это вылечить.

    • Перемещено

      6 апреля 2014 г. 12:59

    • Изменен тип
      Maksim MarinovMicrosoft contingent staff, Moderator
      11 апреля 2014 г. 7:07
      Тема неактивна

Цитата из документации Database Identifiers:

Rules for Regular Identifiers

  1. Embedded spaces or special characters are not allowed.

В именах параметров не разрешены пробелы.
Уберём из них пробелы и квадратные скобки.

Попутно исправим другие ошибки и недочёты: имя соединения (у вас оно почему-то названо connectionString), опасность потери ресурсов (используем using для устранения этого), использование устаревшего и опасного метода AddWithValue (заменим его на Add с указанием точного типа).

Кроме того, время_входаTextBox используется дважды. Будьте внимательны!

string sql = @"UPDATE Табель SET Статус = @Статус, [Код смены] = @КодСмены, [Время входа] = @ВремяВхода, [Время выхода] = @ВремяВыхода WHERE [Код сотрудника] = @КодСотрудника AND Дата = @Дата AND [Код табеля] = @КодТабеля";

using var connection = new SqlConnection(_connectionString);
connection.Open();

using var command = new SqlCommand(sql, connection);

command.Parameters.Add("КодТабеля", SqlDbType.Int).Value = textBox5.Text; // int.Parse(textBox5.Text)
command.Parameters.Add("КодСотрудника", SqlDbType.Int).Value = код_сотрудникаTextBox.Text;
command.Parameters.Add("Дата", SqlDbType.DateTime2).Value = датаDateTimePicker.Value;
command.Parameters.Add("Статус", SqlDbType.NVarChar).Value = comboBox1.Text;
command.Parameters.Add("КодСмены", SqlDbType.Int).Value = comboBox2.Text;
command.Parameters.Add("ВремяВхода", SqlDbType.DateTime2).Value = время_входаTextBox.Text;
command.Parameters.Add("ВремяВыхода", SqlDbType.DateTime2).Value = время_выходаTextBox.Text;

command.ExecuteNonQuery();

Благодаря использованию using соединение будет гарантировано закрыто, даже в случае возникновения исключения. Вызывать метод Close() не нужно.

Я не знаю, какие именно типы используются у вас в таблице, поэтому сами укажите правильные типы SqlDbType. При необходимости примените int.Parse и тому подобные методы. А лучше используйте NumericUpDown для ввода чисел вместо TextBox.

Почему не стоит использовать метод AddWithValue:
Can we stop using AddWithValue() already?
AddWithValue is evil!
AddWithValue is Evil
Достаточно прочитать любую из этих статей.

Ошибка внешней базы данных

Я
   Mary01

30.05.17 — 13:51

Здравствуйте!

Как исправить ошибку?

Есть внешний источник данных, в нем таблица dbo_ML. Пытаюсь сделать запись.

Стр = ВнешниеИсточникиДанных.BDSQL.Таблицы.dbo_ML.СоздатьМенеджерЗаписи();

Стр.lineID = 1;

Стр.uid = Новый УникальныйИдентификатор();

Попытка

    Стр.Записать();

Исключение

    Сообщить(ОписаниеОшибки());

    Возврат;

КонецПопытки;

Выдает ошибку.

Ошибка при вызове метода контекста (Записать):

Ошибка внешней базы данных:

ошибка при выполнении запроса: Ошибка ODBC. SQLSTATE: 42000

Номер ошибки: 102

Описание: [Microsoft][ODBC SQL Server Driver][SQL Server]Неправильный синтаксис около конструкции «<«.

   Волшебник

Модератор

1 — 30.05.17 — 13:52

Нужно исправить синтаксис около конструкции «<«.

   Mary01

2 — 30.05.17 — 13:53

(1) но у меня тут нет никакого «<«

   Волшебник

Модератор

3 — 30.05.17 — 13:55

посмотри ПараметрыСоединенияВнешнегоИсточникаДанных

СУБД (DBMS) — вот это надо указывать явно

   Волшебник

Модератор

4 — 30.05.17 — 13:57

Соед = Новый ПараметрыСоединенияВнешнегоИсточникаДанных;

Соед.СтрокаСоединения = «Тут строку соединения»;

Соед.СУБД = «MSSQLServer»; //Явно указываем, потому что тот тип, что указали в строке соединения, игнорируется;

Источник = ВнешниеИсточникиДанных[НазваниеИсточника];

Источник.УстановитьПараметрыСоединенияСеанса(Соед);

   Mary01

5 — 30.05.17 — 14:41

(4) это все есть.

   mexanik_96

6 — 30.05.17 — 14:43

(0) таблица в рид онли стоит?

   Mary01

7 — 30.05.17 — 14:54

(6) где это смотреть?

   Mary01

8 — 30.05.17 — 14:55

(6) посмотрела, в свойствах таблицы в конфигураторе — нет, галочка Только чтение снята.

   Черный маклер

9 — 30.05.17 — 15:02

(0) бывают древние версии БД или ODBC — в таких ситуациях проще в БД добавить хранимую процедуру и вызывать ее через ВИД

   Mary01

10 — 30.05.17 — 15:03

(9) что за процедура и что такое ВИД?

   Черный маклер

11 — 30.05.17 — 15:04

(10) ВИД — внешний источник данных, кроме таблиц БД есть функции

   Mary01

12 — 30.05.17 — 15:19

(1)  как можно посмотреть где появляется конструкция «<«?

   mehfk

13 — 30.05.17 — 15:20

(12) В профайлере.

  

Mary01

14 — 30.05.17 — 16:15

(13) проблема решена! профайлер показывал

INSERT INTO…

(Kontr,lineID,uid)

VALUES(<Bad type>,1,N’848e1289-33e7-49d5-999b-ac0e2be57e0d’)

То есть необходимо было добавить Стр.Kontr = …

ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку «Обновить» в браузере.

Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.

Здравствуйте,
уважаемые).

При попытке  вывести данные относящиеся к пользователю из таблицы возникает ошибка:
При соединении с БД произошла ошибка. Неправильный синтаксис около конструкции «f81a14».

Текст
запроса:

Select * from news where (autor_id= 75f81a14-221a-4b67-9d7a-215d38438a08); 

Вот так выглядит отрезок кода в приложении на C# 

String strSqlConnection = WebConfigurationManager.ConnectionStrings[«ApplicationServices»].ConnectionString;

        SqlConnection sqlCon = new SqlConnection(strSqlConnection);

        try

        {

            string rt=»Select * from news where (autor_id= (» +Membership.GetUser().ProviderUserKey.ToString()+»));»;            sqlCon.Open();

            Label1.Text = rt;

            SqlCommand cmd_SQL = new SqlCommand(rt, sqlCon);

            cmd_SQL.CommandType = CommandType.Text;

            cmd_SQL.ExecuteNonQuery();

        }

        catch (Exception ex)

        {

            Label1.Text += «При соединении с БД произошла ошибка «;

            Label1.Text += ex.Message;

        }

        finally

        {

            sqlCon.Close();

        }

Помогите пожалуйста разобраться или подскажите иной способ.) 

0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

А вот еще интересные материалы:

  • Яшка сломя голову остановился исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного где ошибка
  • Ошибка нет сетевого оборудования на детских часах
  • Ошибка неправильный путь приложения